CUDA에서 병렬 프로그래밍으로 배열의 요소 (행렬)를 변경해야합니다.CUDA에서 배열의 요소를 지정하기
내 시도는 위의 방법이 작동하지 않는 다음
__global__ void CudaProcessingKernel(int *dataA)
{
int bx = blockIdx.x;
int tx = threadIdx.x;
int tid = bx * XTHREADS + tx;
if(tid< 16) // matrix 4x4
{
if(tid==4) dataB[tid]=dataB[5];
if(tid==5) dataB[tid]=dataB[6];
if(tid==6) dataB[tid]=dataB[7];
if(tid==7) dataB[tid]=dataB[4];
}
__syncthreads();
}
입니다.
내가 원하는 것은 :
input B[1][] = **EC 6E 4C 90** => output **6E 4C 90 EC**
내 출력은 다음과 같습니다
**6E 90 4C 6E**
B[4]
및 B[7]
가 같은 값을 가지고있다. 병렬 처리의 경우, 임시 저장 영역을 피할 수 있어야한다고 생각합니다 : int TEMP = B[4]; B[7]=TEMP
.
내 잘못이 무엇입니까? 어떤 종류의 기억을 사용해야합니까?
경쟁 조건이 있습니다. 원자 적 연산 사용을 고려해 보시겠습니까? – JackOLantern