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;
}