[問題] 使用CUDA來擷取矩陣中部分值
請問一下, 我想使用CUDA來執行取矩陣中某一個範圍的值作為心的矩陣來運算,
例如, 有一個矩陣A, 取出矩陣A的部分作為矩陣B, 以及矩陣C
矩陣 A 矩陣 B 矩陣 c
0 1 2 3 1 2 3 0 1 2
4 5 6 7 5 6 7 4 5 6
8 9 10 11 9 10 11 8 9 10
12 13 14 15 13 14 15 12 13 14
我把C大致上功能是寫好了, 想要改成CUDA, 一直沒成功,
想請教板上大大, CUDA是否能這樣做
float *B;
B = (float*) malloc( sizeof(float)*3*4 );
for( int i=1; i<3; i++ )
{
for( int j=0; j<4; j++ )
{
kk = i-1;
B[ kk*NNy+j ] = A[ i*NNy+j ];
}
}
float C
C= (float*) malloc( sizeof(float)*3*4);
for( int i=0; i<3; i++ )
{
for( int j=0; j<4; j++ )
{
C[ i*NNy+j ] = A[ i*NNy+j ];
}
}
----------------------------------
__global__ void movaIM11(float *input1, float *output1)
{
int col = blockIdx.x*blockDim.x+threadIdx.x; // x 表示 column
int row = blockIdx.y*blockDim.y+threadIdx.y; // y 表示 row
output1[row*NNx+col] = input1[row*NNx+col];
}
float *d_A;
cudaMalloc((void**)&d_A, sizeof(float)*NNx*NNy);
cudaMemcpy( d_A, A, sizeof(float)*NNx*NNy, cudaMemcpyHostToDevice );
float* d_B;
cudaMalloc((void**)&d_B, sizeof(float)*(NNx-1)*NNy);
movaIM11<<<1, 12>>>( d_A, d_B);
float *B;
B = (float*) malloc( sizeof(float)*(NNx-1)*NNy );
cudaMemcpy( B, d_B, sizeof(float)*(NNx-1)*NNy, cudaMemcpyDeviceToHost );
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.192.147
推
02/21 19:04, , 1F
02/21 19:04, 1F
→
02/21 19:25, , 2F
02/21 19:25, 2F
推
02/21 20:09, , 3F
02/21 20:09, 3F
→
02/21 20:12, , 4F
02/21 20:12, 4F
→
02/21 20:14, , 5F
02/21 20:14, 5F
推
02/21 20:20, , 6F
02/21 20:20, 6F
→
02/21 20:20, , 7F
02/21 20:20, 7F
※ 編輯: aada 來自: 140.122.192.147 (02/21 20:24)
→
02/21 20:25, , 8F
02/21 20:25, 8F
→
02/21 20:26, , 9F
02/21 20:26, 9F
→
02/21 20:26, , 10F
02/21 20:26, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章