CUDA核函数支持原位变换吗?即一个矩阵处理后又放回原矩阵。

CUDA核函数支持原位变换吗?即一个矩阵处理后又放回原矩阵。,第1张

应该是编程错误吧,试了一下没问题。

#include <stdioh>

#include <cudah>

#define N 32

float A, B;

__global__ void kernel(float B)

{

int i = threadIdxx;

B[i] = 2;

return;

}

void initMatrix()

{

A = (float )malloc(N sizeof(float));

int i;

for(i = 0; i < N; i ++)

A[i] = i;

return;

}

void displayMatrix()

{

int i;

for(i = 0; i < N; i ++)

printf("%f\t", A[i]);

printf("\n");

return;

}

int main(int argc, char argv)

{

initMatrix();

cudaMalloc((void )&B, N sizeof(float));

cudaMemcpy(B, A, N sizeof(float), cudaMemcpyDefault);

kernel<<<1, N>>>(B);

cudaMemcpy(A, B, N sizeof(float), cudaMemcpyDefault);

displayMatrix();

return 0;

}

lz在CSDN上也问了这个问题的吧,樟树都说不能了,lz如果不想自己学,这里还是简单讲讲:显卡的处理器和PC机的CPU硬件上不同,不能跑相同的exe程序(这个要求二进制兼容),也就不存在显卡调用exe程序的可能;如果要在GPU上跑程序,必须针对GPU编写代码并且使用GPU的工具包编译。这样算是讲清楚了吧?

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12175883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存