【发布时间】:2018-12-10 12:07:57
【问题描述】:
尝试为此找到解决方案: Cuda Kernel 使用了几个设备函数,其中一些需要返回数组。
我尝试这样做:
__device__ float *MatProd2dWxC(float *a2d, float *b2d, int mGl, int nGl)
{
int aRows = mGl; int aCols = nGl;
int bRows = nGl; int bCols = 1;
float *result;
//result.resize(mGl*aRows);
for (int i = 0; i < aRows; ++i) // each row of a
for (int j = 0; j < bCols; ++j) // each col of b
for (int k = 0; k < aCols; ++k)
result[i*mGl + j] += a2d[i*mGl + k] * b2d[k*mGl + j];
return result;
}
不要编译这个,因为函数名中的指针不是好主意。但是如何做正确的事情,包括额外的临时数组并将函数更改为无效。但后来我需要在内核代码中多次使用它,寻找更优雅的解决方案。
【问题讨论】:
标签: cuda