본문 바로가기

NVIDIA48

Global Memory 대역폭(bandwidth) 활용 References Programming Massively Parallel Processors Contents Global Memory Bandwidth Memory Coalescing Technique (메모리 병합 기법) 지난 포스팅들에서 전역 메모리가 아닌 공유 메모리를 사용하는 Tiling 기법을 사용하여 행렬 곱 연산의 성능을 향상시켜봤습니다. 이렇듯 CUDA에서 제공할 수 있는 메모리들을 잘 사용하면, 더 좋은 성능은 갖는 프로그램을 만들 수 있습니다. TILING 최적화 for 메모리 Access (tiled matrix multiplication) TILING 최적화 for 메모리 Access (tiled matrix multiplication) References Programming M.. 2021. 12. 8.
TILING 최적화 for 메모리 Access (tiled matrix multiplication) References Programming Massively Parallel Processors Contents Tiling 기법 Tiled Matrix Multiplication 병렬화의 제한 요소인 메모리 크기 지난 포스팅에서 CUDA의 메모리에 관해서 알아봤습니다. CUDA의 메모리 Access와 Type (예제 : matrix multiplication) 그리고 행렬 곱 커널을 구현하여 CUDA를 사용한 행렬 곱 프로그램을 작성해봤습니다. 하지만, 작성된 커널은 GPU 하드웨어의 성능을 온전히 사용하지 못한다고 했습니다. 이번 포스팅에서 이 성능을 어떻게 더 끌어올릴 수 있는지 살펴보도록 하겠습니다. Tiling for reduced memory traffic CUDA에서 디바이스 메모리를 사용할 .. 2021. 12. 6.
CUDA의 메모리 Access와 Type (예제 : matrix multiplication) References Programming Massively Parallel Processors Contents 메모리 액세스 효율 (compute-to-global-memory-access) Matrix Multiplication 예제 CUDA Device 메모리 타입(Memory Types) 지난 포스팅들을 통해서 CUDA 커널 함수를 작성하는 방법과 어떻게 많은 수의 스레드들의 작업 수행을 구성하고 조정하는지에 대해 알아봤습니다. CUDA 프로그래밍 기초 (예제 : vector addition) CUDA Thread 구조와 Data Mapping (예제 : 이미지 흑백, Blur 처리) CUDA Programming Model CUDA Thread 동기화 및 스케쥴링 / 리소스 할당 이번 포스팅에서는.. 2021. 12. 5.
CUDA Thread 동기화 및 스케쥴링 / 리소스 할당 References Programming Massively Parallel Processors Contents 동기화(Synchronization) Transparent Scalability 리소스 할당(Resource Assignment) Thread Scheduling (Warp) Synchronization & Transparent Scalability CUDA는 같은 블록 내에 있는 스레드들이 barrier synchronization(배리어 동기화) 함수인 __syncthreads()를 사용하여 스레드들의 작업을 조율할 수 있게 합니다. __syncthreads()를 호출한 스레드는 호출한 위치에서 멈추게 되는데, 블록 내의 모든 스레드들이 해당 위치에 도달할 때까지 멈추게 됩니다. 이렇게 하면.. 2021. 12. 4.
CUDA Programming Model References https://developer.nvidia.com/blog/cuda-refresher-cuda-programming-model/ CUDA Toolkit Documentation https://github.com/nvidia/cuda-samples Contents CUDA kernel and thread hierarchy Matrix Addition 예제 Memory hierarchy 이전 CUDA 관련 포스트들에서 CUDA의 간략한 아키텍처와 CUDA 프로그래밍의 기본적인 부분에 대해서 알아봤습니다. GPU와 CUDA CUDA 프로그래밍 기초 (예제 : vector addition) CUDA Thread 구조와 Data Mapping (예제 : 이미지 흑백, Blur 처리) 새로운 .. 2021. 12. 3.
CUDA Thread 구조와 Data Mapping (예제 : 이미지 흑백, Blur 처리) References Programming Massively Parallel Processors CUDA Toolkit Documentation https://github.com/nvidia/cuda-samples Contents CUDA Thread Organization Built-in variables : threadIdx, blockIdx, blockDim, gridDim Mapping threads to multidimensional data CUDA Thread Organization 지난 포스팅에서 기본적인 CUDA 프로그래밍에 대한 것들을 살펴보고, 예제로 vector addition을 구현해보았습니다. CUDA 프로그래밍 기초 (예제 : vector addition) CUDA 프로그래밍 기.. 2021. 12. 2.
CUDA 프로그래밍 기초 (예제 : vector addition) References CUDA Toolkit Documentation Programming Massively Parallel Processors Contents 간략한 GPU와 CUDA 요약 데이터 병렬화(Data Parallelism) CUDA 프로그램 구조 벡터 덧셈(vector addition) 예제 Kernel Function Built-in variables (blockDim, threadIdx, blockIdx) 지난 포스팅에서 GPU와 CUDA에 대해서 간략하게 알아봤습니다. [병렬프로그래밍/CUDA] - GPU와 CUDA GPU와 CUDA References CUDA Toolkit Documentation Programming Massively Parallel Processors Conten.. 2021. 12. 2.
GPU와 CUDA References CUDA Toolkit Documentation Programming Massively Parallel Processors Contents CPU와 GPU, CUDA 도입 간략한 GPU Architecture 이번 포스팅을 시작으로 GPU에 관련하여 기본적인 것들을 먼저 알아보고, CUDA 프로그래밍에 대해서 알아보려고 합니다. 원래는 바로 CUDA 프로그래밍에 대해 포스팅을 해보려고 했으나, 이것저것 알아보면서 GPU 프로그래밍에 토대가 되는 내용들이 중요할 것 같아서 조금 지루하고, 저도 아직 완전히 이해하지 못한 내용들을 알아보면서 이해하려고 합니다.. ! CPU와 GPU 차이 수년 동안, Intel Pentium이나 AMD Opteron 프로세서와 같은 단일 CPU를 이용한 마.. 2021. 11. 30.