묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨CUDA 프로그래밍 (6) - C/C++/GPU 병렬 컴퓨팅 - 서치 & 소트
39g-merge-global-large.cu에 대해서 질문드립니다.
안녕하세요.예저코드 39g-merge-global-large.cu를 보던 중에 궁금증이 생겨 질문 드립니다.제가 궁금한 부분은 deviceMergeSort함수 마지막 부분에 아래의 2줄입니다.cudaMemcpy( vecC, dev_vecC, TOTAL_NUM * sizeof(unsigned), cudaMemcpyDeviceToHost ); cudaMemcpy( dev_vecB, dev_vecC, TOTAL_NUM * sizeof(unsigned), cudaMemcpyDeviceToDevice );dev_vecC에 들어 있는 정렬된 데이터를 왜 for문 내부에서 dev_vecB와 vecC로 계속 memcpy하는 걸까요?제 생각에는 dev_vecB는 주소값을 스왑하여 사용하면 될거 같았고, vecC도 계산 모두 마무리되어 for문밖에서 복사해줘도 될거 같다고 생각이 들어서요.
-
해결됨CUDA 프로그래밍 (6) - C/C++/GPU 병렬 컴퓨팅 - 서치 & 소트
예제 코드에 대해서 질문 드립니다.
안녕하세요!38-4 강의를 수강하고 예제 코드를 확인하는 과정에서 몇 가지 궁금증이 생겨 질문을 드립니다.kernel 함수 내 변수에서 register를 붙이시던데 이렇게 붙였을때 이점이 있을까요?두 번째 for문 같은 경우에 halfsize *= 2 이렇게 표현할 수 있는데 비트연산으로 나타 내시던데 이유를 알 수 있을까요??변수를 선언할때 unsigned 만 작성하시던데 이것도 이유가 있을까요??어찌 보면 굉장히 사소할 수 있는 질문들이지만, 그래도 이유를 알면 배울 수 있는 부분이 많을거 같아 질문 드립니다.
-
해결됨CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기
15강 Block ID 예제 오류 질문입니다.
안녕하세요?Jetson TX2 및 Xavier를 사용하여 CUDA예제를 실행하고 있습니다.Block 예제에서 tx2와 xavier의 결과가 달라서 질문드립니다.dimgrid<<<2,2,1>>>에 의해 Block의 갯수가 4개가 되고, warpid=0인 영역은 blockid가 (0,0), (1,0), (0,1), (1,1)인 곳에서 총 4개가 있을 것입니다.하지만 Tx2에서 예제를 돌려본 결과 blockid가 (0,0), (1,0)인 곳에만 나옵니다.혹시나 해서 xavier에서 실험을 해본 결과 총 4개가 나와 정상적으로 출력됩니다.CUDA언어는 GPU구조와 상관 없이 출력되기 위해 grid-block-thread 구조를 가지므로 속도는 느리지만 동일한 결과를 출력해야하는데, 왜 tx2와 xavier가 같은 예제를 돌렸는데도 다른 결과가 나오는걸까요? (혹시나 해서 <<<2,2,1>>> => <<<4,1,1>>>로 변경하여 돌려봤지만 여전히 tx2에서 blockid 2개만 출력되었습니다.)
-
해결됨CUDA 프로그래밍 (5) - C/C++/GPU 병렬 컴퓨팅 - 아토믹 연산 atomic op
32-2의 warp의 early terminate에 대해 질문드립니다.
안녕하세요!정말 재미있게 강의를 보고 있습니다.그런데 강의 32-2를 보다 궁금증이 생겨 질문 드립니다!warp의 early terminate가 정확히 어떤 동작인지 궁금한데요. 제가 생각해 볼 때 __syncthreads() 함수를 호출하게 되면, 블록 내 모든 스레드가 해당 함수에 도달하기까지 대기해야 하고 그러면 뒤에 더 이상의 동작이 없는 Warp들이라 하더라고 해당 함수에서 대기하고 있는 상태여야 할거 같습니다.따라서 그러면 해당 warp는 다른 warp들이 동작을 마칠때까지 기다리게 되어 리소스를 반환하거나 하는 동작이 없을거 같은데 왜이렇게 성능이 향상되는지 궁금합니다.
-
해결됨CUDA 프로그래밍 (5) - C/C++/GPU 병렬 컴퓨팅 - 아토믹 연산 atomic op
28-4 shuffle shared - shared memory 강의에서 질문이 있습니다.
안녕하세요. 강의 정말 너무 잘 보고 있습니다!! 다름이 아니라 28-4 강의를 보다 궁금하게 있어서 질문을 드립니다.even odd방식이 Half and Half 알고리즘보다 느린 이유Global Memory에서 Half and Half가 even odd보다 더 느린 이유위 두 가지 이유에 대해서는 이해가 되었지만, Shared Memory를 사용하는 부분에서 이해가 잘되지 않는 부분이 있습니다. Global Memory에서는 Memory Coalescing이 중요하기 때문에 Half and Half가 더 느린게 맞지만, Shared Memory를 사용하는 부분에서는 두 방식(even odd, Half and Half)에서 차이가 없지 않을까 하고 생각했습니다. 두 방식 모두 Global Memory에 접근하고 Write하는 로직은 같기 때문에 Shared Memory에서 성능을 저해하는 요소로는 Bank Conflict만 있다고 생각했는데, 제가 잘못 이해 하고 있는 걸까요??
-
해결됨CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
에러처리 매크로에서!!
에러처리 매크로에서 exit을 하게되면 이전에디바이스나 호스트에서 동적할당했던 자원을 해제해주는건가요?? 아니면 메모리해제를 추가적으로 구현해야하나요??