我认为可以在 gpu ex 上分配一个数组。__device__ int device_array[100];
不使用 cudaMalloc 作为已知长度。但是当我运行以下代码时,会显示一些不相关的数字。我查看了一本流行的 cuda 书籍,其中的所有示例都使用了 cudaMalloc。固定大小的数组可以这样使用还是必须用cudaMalloc分配?
__device__ int device_array[100];
__global__ void kernel() {
device_array[blockIdx.x] = blockIdx.x;
}
void call_kernel( int *host_array ) {
kernel<<<100,1>>>();
cudaMemcpy( host_array, device_array, 100 * sizeof( int ), cudaMemcpyDeviceToHost );
}
int main() {
int host_array[100];
call_kernel( host_array );
for ( int i = 0; i < 100; i++ )
cout << host_array[i] << endl;
}