-1
我真的不明白为什么下面的代码的输出不是a和b。CUDA程序给垃圾值
#include<cutil.h>
#include<iostream>
__global__ void p(unsigned char **a){
unsigned char temp[2];
temp[0] = 'a';
temp[1] = 'b';
a[0] = temp;
}
void main(){
unsigned char **a ;
cudaMalloc((void**)&a, sizeof(unsigned char*));
p<<<1,1>>>(a);
unsigned char **c;
unsigned char b[2];
cudaMemcpy(c, a, sizeof(unsigned char *), cudaMemcpyDeviceToHost);
cudaMemcpy(b, c[0], 2*sizeof(unsigned char), cudaMemcpyDeviceToHost);
for(int i=0 ; i < 2; i++){
printf("%c\n", b[i]);
}
getchar();
}
我的逻辑有什么问题?
从哪里开始 - 这在普通程序中甚至没有意义。我们必须有关于指针和局部变量以及数组和字符串的聊天,看起来:-) –
@kerrek:我已经准备好了。 – Programmer
@kerrek:有没有办法在cuda中的全局函数中声明一个数组,使得它在函数结束后才存在 – Programmer