【发布时间】:2013-07-08 10:20:06
【问题描述】:
我有 CPU 和 GPU (CUDA) 矩阵类,我想重载 operator() 以便我可以读取或写入矩阵的各个元素。
对于 CPU 矩阵类,我可以这样做
OutType & operator()(const int i) { return data_[i]; }
(读取)和
OutType operator()(const int i) const { return data_[i]; }
(写)。对于 GPU 矩阵类,我能够重载 operator() 以供阅读
__host__ OutType operator()(const int i) const { OutType d; CudaSafeCall(cudaMemcpy(&d,data_+i,sizeof(OutType),cudaMemcpyDeviceToHost)); return d; }
但我无法为写作做同样的事情。有人可以提供任何提示来解决这个问题吗?
CPU的写例返回data_[i]的引用,所以赋值工作由构建的C++operator=来执行。我不知道如何为 CUDA 使用相同的机制。
谢谢。
【问题讨论】:
标签: c++ class cuda operator-overloading