2ブロックで実行。
これはOK。
CUDA:
- __global__ void gpu(int* d_a)
- int id = blockIdx.x;
- if(id==0){
- d_a[id] = 1;
- }else{
- d_a[id] = 2;
- }
- }
これは駄目。
CUDA:
- __global__ void gpu(int* d_a)
- int id = blockIdx.x;
- if(id==0){
- d_a[0] = 1;
- }else{
- d_a[1] = 2;
- }
- }
これはOK。
CUDA:
- __constant__ int table[4] = {0,1,2,3};
- __global__ void gpu(int* d_a)
- int id = blockIdx.x;
- if(id==0){
- d_a[table[id]] = 1;
- }else{
- d_a[table[id]] = 2;
- }
- }
これは駄目。
CUDA:
- __constant__ int table[4] = {0,1,2,3};
- __global__ void gpu(int* d_a)
- int id = blockIdx.x;
- if(id==0){
- d_a[table[0]] = 1;
- }else{
- d_a[table[1]] = 2;
- }
- }
うーん……。