我想用CUDA内核来解决矩阵问题。 矩阵使用这样的i和j索引。2变量到CUDA内核中
M[i*N+j]
Asuming,我想从M个元素复制到像M_temp任何其他变量,我应该这样做
M_temp[i*N+j] = M[i*N+j];
嗯,我有使用块和线程
dim3 grid = dim3(2, 1, 1);
dim3 block = dim3(10, 10, 1);
接下来的声明
我不知道自己是否有错,但根据之前的声明,每块可以有100个线程。共200线程。
在内核中我想使用索引。
__global__ void kernel(double *M)
{
int i = ???;
int j = ???;
}
我想用每块至少100个线程,使得最大体尺寸为:
M[100x100]
但我想用
1 block for variable i
和
1 different block for variable j.
我一直在想回合使用,
__global__ void kernel(double *M)
{
int i = threadIdx.x + blockDim.x * blockIdx.x;
int j = threadIdx.y + blockDim.x * blockIdx.x;
__syncthreads();
M_temp[i*N+j] = M[i*N+j];
}
但这种方式使用x中的所有块。我不知道我很困惑。 请帮助我。
顺便说一下,我的CPU是Geforce 610m。
谢谢