0
데이터 유형이 uint3입니다. 내 응용 프로그램은 회원 x와 y를 한 번, 구성원 z는 여러 번 채 웁니다. 따라서 다음 데이터가 오기 전에 멤버 z를 지울 필요가 있습니다. cudaMemSet을 사용하여 완료 할 수 있습니까?cudaMemset을 사용하여 CUDA에서 uint3을 지우십시오.
데이터 유형이 uint3입니다. 내 응용 프로그램은 회원 x와 y를 한 번, 구성원 z는 여러 번 채 웁니다. 따라서 다음 데이터가 오기 전에 멤버 z를 지울 필요가 있습니다. cudaMemSet을 사용하여 완료 할 수 있습니까?cudaMemset을 사용하여 CUDA에서 uint3을 지우십시오.
cudaMemset2D 값을 설정하는 데 사용할 수 있습니다.
int* dev_ptr = (int*)dev_uint3_ptr;
cudaMemset2D(
dev_ptr + 2, // offset device_ptr by 2 elements so first element is z
sizeof(uint3), // set pitch to size of uint3 so each increment is to next z
0, // set to 0
sizeof(int), // sizeof(z)
elements // number of elements in your array
);
성능이 확실하지 않습니다. 구조 배열에서 배열 구조로 전환하는 것이 좋습니다.
성능과 관련하여 성능을 사용하는 첫 번째 커널에서 z를 0으로 초기화하는 것이 더 나을 것입니다. – harrism
cudaMemset2D는 N 개의 요소에 대해 N 개의 스레드를 시작하는 것보다 시간이 오래 걸립니다. –