본문 바로가기

분류 전체보기465

Warp Shuffle Instruction References Professional CUDA C Programming Contents Warp Shuffle Instruction Parallel Reduction Using the Warp Shuffle Instruction The Warp Shuffle Instruction Kepler Architecture(compute capability 3.0 이상)부터, shuffle instruction이 도입되어 스레드들이 직접 동일 warp의 다른 스레드들의 레지스터를 읽을 수 있게 되었습니다. Shuffle Instruction은 warp 내의 스레드들이 global이나 shared memory를 사용하지 않고 직접적으로 서로 data를 교환할 수 있게 해줍니다. 또한, shared memory.. 2022. 1. 23.
Shared Memory (4) - Matrix Transpose References Professional CUDA C Programming Contents Coalescing Global Memory Accesses Matrix Transpose Kernels Matrix Transpose with Shared Memory Matrix Transpose with Padded Shared Memory Matrix Transpose with Unrolling Shared Memory (1) Shared Memory (2) - Square/Rectangular Shared Memory Shared Memory (3) - Reduction with Shared Memory 지난 포스팅들에 이어 Shared Memory에 대한 4번째 포스팅입니다 Coalescing Glob.. 2022. 1. 22.
Shared Memory (3) - Reduction with Shared Memory References Professional CUDA C Programming Contents Reducing Global Memory Access Parallel Reduction with Shared Memory Parallel Reduction with Unrolling Parallel Reduction with Dynamic Shared Memory Effective Bandwidth 지난 두 포스팅에 이어서 Global Memory Access를 줄이기 위해 Shared Memory를 사용하는 것에 대해 알아보도록 하겠습니다. Shared Memory (1) Shared Memory (2) - Square/Rectangular Shared Memory Reducing Global Memory Ac.. 2022. 1. 20.
Shared Memory (2) - Square/Rectangular Shared Memory References Professional CUDA C Programming Contents Checking the Data Layout of Shared Memory Square Shared Memory Rectangular Shared Memory 지난 포스팅에 이어서 공유 메모리에 대한 내용에 대해서 더 알아보도록 하겠습니다. Share Memory (1) Share Memory (1) References Professional CUDA C Programming Contents Shared Memory (SMEM) Shared Memory Banks and Access Mode Configuring the Amount of Shared Memory Synchronization Volatile Qua.. 2022. 1. 19.
Shared Memory (1) References Professional CUDA C Programming Contents Shared Memory (SMEM) Shared Memory Banks and Access Mode Configuring the Amount of Shared Memory Synchronization Volatile Qualifier 이번 포스팅에서는 공유 메모리에 대해서 다시 한 번 알아보는 시간을 갖도록 하려고 합니다 ! Intro GPU 디바이스에는 다음과 같이 두 종류의 메모리 타입이 있습니다. On-board memory On-chip memory Global Memory는 크고, on-board 메모리이며 비교적 높은 latency를 갖고 있습니다. Shared Memory는 Global Memory.. 2022. 1. 18.
Unified Memory References Professional CUDA C Programming https://developer.nvidia.com/blog/unified-memory-in-cuda-6/ Contents Unified Memory Zero-Copy Memory & Unified Virtual Addressing Zero-Copy Memory & Unified Virtual Addressing References Professional CUDA C Programming Contents Zero-Copy Memory Unified Virtual Addressing Zero-Copy Memory 일반적으로 host는 device 변수에 직접 액세스할 수 없고, device는 host 변수에 직접 액세.. juns.. 2022. 1. 17.
Array of Structures 와 Structure of Arrays References Professional CUDA C Programming Contents Array of Structures vs. Structure of Arrays 여기 두 가지 데이터를 구성하는 방법이 있습니다. Array of Structures (AoS) Structure of Arrays (SoA) 이 두 가지 방법은 각각 두 가지의 데이터 타입(구조체와 배열)을 활용할 수 있는 다른 방법을 보여주기 때문에 항상 흥미로운 주제입니다. 두 개의 float 데이터를 저장하는 예제를 살펴보겠습니다. 먼저, AoS 방법을 사용하면, innerStruct라는 배열을 정의할 수 있습니다. struct innerStruct { float x; float y; }; 그리고 이 구조체의 배열을 정의합니다... 2022. 1. 15.
Zero-Copy Memory & Unified Virtual Addressing References Professional CUDA C Programming Contents Zero-Copy Memory Unified Virtual Addressing Zero-Copy Memory 일반적으로 host는 device 변수에 직접 액세스할 수 없고, device는 host 변수에 직접 액세스할 수 없습니다. 하지만 여기에 한 가지 예외인 zero-copy 메모리가 있습니다. host와 device는 모두 zero-copy 메모리에 액세스할 수 있습니다. GPU 스레드들은 직접 zero-copy 메모리에 액세스할 수 있습니다. zero-copy 메모리를 커널 내에서 사용하면 다음의 몇 가지 이점을 얻을 수 있습니다. Leveragin host memory when there is insu.. 2022. 1. 15.
Pinned Memory References Professional CUDA C Programming Contents Pinned Memory Pinned Memory 할당된 Host 메모리는 기본적으로 pageable합니다. 즉, OS에 의해 host의 가상 메모리에서 다른 물리 메모리로 데이터를 이동하는 페이지 폴트(page fault) 동작이 일어날 수 있습니다. L1 캐시가 물리적으로 사용 가능한 메모리보다 훨씬 더 많은 on-chip 메모리를 제공하는 것처럼 가상 메모리는 물리적으로 사용 가능한 것보다 훨씬 더 많은 메모리를 제공합니다. GPU에서는 host OS가 데이터를 물리적으로 이동하는 시점을 제어할 수 없기 때문에 pageable한 host 메모리에 있는 데이터를 안전하게 액세스할 수 없습니다. pageable.. 2022. 1. 14.
CUDA Memory Model References Professional CUDA C Programming Contents CUDA Memory Model Memory Types Example for Static Global Memory 아래의 이전 포스팅에서 행렬곱 커널에 대해서 알아보며, CUDA의 메모리 타입에 대해서 언급을 했었습니다. CUDA의 메모리 Access와 Type (예제 : matrix multiplication) CUDA의 메모리 Access와 Type (예제 : matrix multiplication) References Programming Massively Parallel Processors Contents 메모리 액세스 효율 (compute-to-global-memory-access) Matrix Mult.. 2022. 1. 13.