1

我正在尝试通过 CUDA 并行化某些功能,该功能被多次调用。每次它处理相同的矩阵。我想将此矩阵存储在 GPU 内存中,当调用函数时,我想将向量上传到 GPU 并将其乘以矩阵并返回结果。我更喜欢 C++ 模板风格,所以推力具有更高的优先级。

请向我推荐一些功能来做到这一点,如果可能的话,请推荐一些小的说明样本。我不提供代码不是因为它是一个秘密,而是因为它的复杂性和庞大的规模。

4

1 回答 1

1

对于推力,您正在寻找的是 device_vector、device_ptr 等。

从推力::设备向量到原始指针并返回?

但为了高效地对 GPU 进行编程,我建议您也熟悉 CUDA 内存类型:

http://www.cvg.ethz.ch/teaching/2011spring/gpgpu/cuda_memory.pdf(pdf警告)

您正在寻找的内存类型是“全局内存”。请记住,所有这些内存都存储在 GPU 卡上,而不是 CPU 卡上,因此它只能用于内核和设备函数调用。

设备指针上的所有仿函数只需要使用设备标签进行编译(例如一元操作):

template <typename T>
struct square
{   
__host__ __device__
    T operator()(const T& x) const {
        return x * x;
}
}; 
于 2013-03-18T15:02:07.293 回答