ポインターの理解に問題があります
行列があり、それを使用して小さなブロックに分割しました
tiles_num = n /tile;
// Allocate blocked matrix
Ah = (REAL **) malloc( tiles_num * tiles_num * sizeof(REAL *));
if (Ah == NULL) {
printf("ALLOCATION ERROR (Ah)\n");
exit(-1);
}
for (j = 0; j < tiles_num * tiles_num; j++) {
Ah[j]=(REAL *) malloc(tile * tile * sizeof(REAL));
if (Ah[ j ] == NULL) {
printf("ALLOCATION ERROR (Ah[%d] )\n", j);
exit(-1);
}
}
ここで (tiles_num は小さなブロックの数、n は行列の 1 次元のサイズ、tile は小さなブロックのサイズ)
その後、スーパーブロックの開始点へのポインタだけを関数に与えたいとします。たとえば、N = 12 でスーパーブロック = 4 とスモールブロック = 2 の場合、関数はスモール ブロック間を移動します。1-では、スーパーブロックを開始してから小さなブロックごとに移動する機能ポイントをどのように与えることができますか?
2-A[k] が参照する A+k と同じかどうか知りたいですか?