如果有一个矩阵,我只想访问矩阵的下三角部分。我正试图找到一个好的线程索引,但到目前为止我还没有成功。有什么想法吗?
我需要一个索引来循环遍历下三角矩阵,假设这是我的矩阵:
索引应该用于
在这个例子中,1D数组的位置0、4、5、8、9、10、12、13、14、15。
CPU循环如下:
但是它完全不起作用。 我得到的结果:
1 2 3 4
5 6 7 8
9 0 1 2
3 5 6 7
索引应该用于
1
5 6
9 0 1
3 5 6 7
在这个例子中,1D数组的位置0、4、5、8、9、10、12、13、14、15。
CPU循环如下:
for(i = 0; i < N; i++){
for(j = 0; j <= i; j++){
.......
N是行数。我在内核中尝试了一些东西:
__global__ void Kernel(int N) {
int row = blockIdx.x * blockDim.x + threadIdx.x;
int col = blockIdx.y * blockDim.y + threadIdx.y;
if((row < N) && (col<=row) )
printf("%d\n", row+col);
}
然后这样调用:
dim3 Blocks(1,1);
dim3 Threads(N,N);
Kernel<<< Blocks, Threads>>>(N);
但是它完全不起作用。 我得到的结果:
0
1
2
2
3
4
if ((row<N) && (col<=row))
。另外,您应该考虑增加网格大小。N 的值是多少? - sgarizvi