应该是编程错误吧,试了一下没问题。
#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的工具包编译。这样算是讲清楚了吧?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)