본문 바로가기

CUDA 프로그래밍35

CUDA Instructions (2) - Instruction 최적화 References Professional CUDA C Programming Contents Single-Precision vs. Double-Precision Standard vs. Intrinsic Functions Understanding Atomic Instructions CUDA Instructions (1) 지난 포스팅을 통해서 CUDA의 Instruction들을 살펴보고, 그 특징들을 알아봤습니다. 이 Instruction들을 통해, CUDA 프로그램에서 명령어들을 최적화할 때 많은 선택 사항들이 있다는 것을 알 수 있습니다. Single-Precision or Double-Precision Standard or Intrinsic Functions Atomic function or Unsaf.. 2022. 1. 28.
CUDA Instructions (1) References Professional CUDA C Programming Contents Floating-Point Instructions Intrinsic and Standard Functions Atomic Instructions 이번 포스팅에서 Instruction을 명령어로 지칭하도록 하겠습니다. Instructions(명령어)은 프로세서에서 로직의 단일 단위를 나타냅니다. CUDA에서 작업하면서 직접적으로 명령어을 다루는 일은 드물지만, CUDA 커널 코드로부터 다른 명령어들이 언제 생성되고, 어떻게 고급 언어 기능들이 명령어로 변환되는지 이해하는 것은 중요합니다. 기능이 같은 두 명령어 중의 하나를 선택하는 것은 성능, 정확성을 포함한 다양한 프로그램의 특성에 영향을 미칠 수 있습니다. 이.. 2022. 1. 26.
Streams and Events (3) - Kernel and Data Transfer, Stream Callback References Professional CUDA C Programming Contents Overlapping Kernel Execution and Data Transfer Overlapping GPU and CPU Execution Stream Callbacks Overlapping Kernel Execution and Data Transfer Streams and Events (1) Streams and Events (2) - Concurrent Kernels 이전 포스팅에서 CUDA의 스트림과 이벤트에 대해서 살펴보고, 여러 스트림에서 커널들을 어떻게 동시에 실행시킬 수 있는지 살펴봤습니다. 이번 포스팅에서는 먼저 kernel과 data transfer를 어떻게 동시에 실행할 수 있는지에 대해 .. 2022. 1. 25.
Streams and Events (2) - Concurrent Kernels References Professional CUDA C Programming Contents Concurrent Kernel Execution False Dependencies on Fermi Device Adjusting Stream Behavior using Environment Variables Blocking Behavior of the Default Stream Overlapping Kernel Execution and Data Transfer 지난 포스팅에서 CUDA의 Stream과 Event에 대해서 알아봤습니다. Streams and Events (1) 이번에는 여러 예제를 통해서 실제로 어떻게 동작하는지 살펴보는 시간을 갖도록 하겠습니다. Concurrent Kernels in Non-N.. 2022. 1. 24.
Streams and Events (1) References Professional CUDA C Programming Contents CUDA Streams CUDA Events Stream Synchronization CUDA Dynamic Parallelism (동적 병렬) CUDA Dynamic Parallelism (동적 병렬) References https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html Programming Massively Parallel Processors Contents Dynamic Parallelism Overview Memory Data Visibility Execution Environme.. junstar92.tistory.com 동적 병렬에 대한.. 2022. 1. 23.
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.