cudaMalloc不适用于模板

时间:2013-12-07 00:44:42

标签: c++

template <typename T, std::size_t N>
void gpu_load(T (&data)[N])
{
    cudaMalloc((void**)data, N*sizeof(T));
}

我称之为:

float data[2];
gpu_load(data);

但它不起作用。我认为它必须与&amp;并指出......

1 个答案:

答案 0 :(得分:1)

您不能只将指针转换为指向指针的指针。数据类型为T*,但cudaMalloc需要void **

试试这个:

cudaMalloc(static_cast<void**>(&d), N*sizeof(T));

注意新的&符号。

编辑:添加了评论中建议的静态演员。