gpt4 book ai didi

c++ - 重载已定义的运算符

转载 作者:行者123 更新时间:2023-11-30 03:44:09 25 4
gpt4 key购买 nike

我想重载 operator * 但我一直收到函数“operator*(int, int)”已被定义。我正在使用 Thrust 库并想在我的内核中使用我自己的 *。

 __device__ int operator*(int x, int y)
{
int value = ...
return value;
}

最佳答案

What I want to do is to use Thrust's reduction with my own * operator

thrust::reduce 为您提供了一个机会 use your own binary operator在减少。运算符应通过 C++ 仿函数提供。

这是一个示例,展示了如何使用二元运算符来查找一组数字中的最大值:

$ cat t1093.cu
#include <thrust/device_vector.h>
#include <thrust/reduce.h>
#include <iostream>

const int dsize = 10;

struct max_op
{
template <typename T>
__host__ __device__
T operator()(const T &lhs, const T &rhs) const
{
return (lhs>rhs)?lhs:rhs;
}
};

int main(){

thrust::device_vector<int> data(dsize, 1);
data[2] = 10;
int result = thrust::reduce(data.begin(), data.end(), 0, max_op());
std::cout << "max value: " << result << std::endl;
return 0;
}
$ nvcc -o t1093 t1093.cu
$ ./t1093
max value: 10
$

关于c++ - 重载已定义的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35678222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com