병렬 프로그래밍13 [기본] CUDA의 비동기 동시 실행 CUDA는 GPU 디바이스를 사용하여 연산을 진행하기 때문에 기본적으로 많은 부분에서 Host와 동시에 수행될 수 있습니다. 아래의 작업들이 대표적으로 동시에 동작할 수 있는 작업들 입니다. 단, 이러한 작업 간에 달성되는 동시성 수준은 feature 설정과 Compute Capability에 따라 달라집니다. Computation on the host. Computation on the device. Memory transfers from the host to the device. Memory transfers from the device to the host. Memory transfers within the memory of a given device. Memory transfers among de.. 2023. 11. 21. [기본] Nividia의 Thrust란? PyTorch의 C++쪽 코드(caffe2, aten, c10, ..)를 보게 되면 thrust라는 라이브러리를 include하여 사용하는 것을 볼 수 있습니다. 해당 라이브러리는 Nividia에서 개발한 Parallel Algorithms Library입니다. STL과 유사한 high-level interface로 구현되어 있어서 개발자들이 STL을 사용하듯이 병렬 프로그래밍을 할 수 있게 구현되어 있습니다. 그리고 위에서 언급했듯이 PyTorch의 Core 부분에서도 아래의 기능들을 include하여 사용하고 있습니다. #include #include #include #include #include #include #include #include #include #include #include #in.. 2023. 7. 24. [기본] Visual Studio에서 CUDA 디버깅 하기 CUDA를 이용하여 개발을 하다 보면 익숙하지 않은 동작과 환경 때문에 어려움이 많습니다. 그래서 C++에서 디버깅하던 방식 그대로 Breakpoint를 걸어서 내가 원하는 값의 상태를 보면 좋겠다는 생각을 많이 하게 될 것입니다. 그래서 이번 글에서는 Nsight Visual Studio Edition을 이용하여 간단하게 디버깅 하는 법을 공유해볼까 합니다. 먼저 CUDA를 디버깅 하기 위해서는 Nvidia의 Nsight가 설치되어 있어야 합니다. (아래의 링크에서 설치 줍니다.) https://developer.nvidia.com/nsight-visual-studio-edition NVIDIA Nsight Visual Studio Edition For compute developers working .. 2023. 4. 11. [실습] Nvidia의 MergeSort 예제 분석 - 2 [실습] Nvidia의 MergeSort 예제 분석 - 1 (tistory.com) [실습] Nvidia의 MergeSort 예제 분석 - 1 [실습] CUDA MergeSort 구현 (Naive 버전) (tistory.com) [실습] CUDA MergeSort 구현 (Naive 버전) CUDA에서 정렬을 구현한다고 할때, 가장 먼저 드는 생각은 우리가 알고 있는 알고리즘들(Quick Sort, Merge Sort, Buble Sort hotstone.tistory.com 이전 시간에 Block 단위 (1024)이하의 수에 대해서 Merge Sort하는 방법을 이야기 했었습니다. 하지만 Block당 할당할 수 있는 Thread수와 Shared Memory의 한계 때문에 같은 방법으로 그 이상의 수를 정.. 2023. 4. 2. 이전 1 2 3 4 다음