-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