1

CUDA C プログラミング ガイド バージョンには、組み込みベクトル型に関する小さな段落があります。この構造には 4 つのコンポーネントがあり、特定の方法 ei でアクセスできると書かれています.x .y .z .w。4つの成分とは?誰かが例を挙げることができますか?

さらに、この行を使用して、値xyint2 make_int2(int x, int y);を持つベクトルを構築すると述べています。これらの変数にはそれぞれ 4 つのコンポーネントがありますか?

これらのことを理解しようとしている理由は、次のコードを勉強しているためです。

  /*1*/ int  ny             = num_ofElements_y_ofmyMatrix;
  /*2*/ int  nx             = num_ofElements_x_ofmyMatrix;
  /*3*/ int2 matrix_index_2d = make_int2( ( blockIdx.x * blockDim.x ) + threadIdx.x, ( blockIdx.y * blockDim.y ) + threadIdx.y );

  /*4*/ int  matrix_index_1d = ( nx * matrix_index_2d.y ) + matrix_index_2d.x;

  /*5*/ if ( matrix_index_2d.x < nx && matrix_index_2d.y < ny )
  /*6*/ {
  /*7*/   float r = myMatrix[ matrix_index_1d ];
  /*8*/ } 

3行目と4行目のインデックス作成はどのように機能していますか? 続いて、行列myMatrixへのアクセスは誰が行っているのでしょうか?

アップデート:

コードスニペットに関する限り、通常、配列にアクセスするときは次を使用しています。

col = blockDim.x*blockIdx.x + threahIdx.x;
row = blockDim.x*blockIdx.x + threahIdx.x;
if (col < NUMCOLS && row < NUMROWS){...}

C ++で配列の行優先アクセスを行うためmyMatrix[row*NUMCOLS + col]

3行目と4行目で使用されているインデックスの種類との関係は何ですか?

4

1 に答える 1