목록CUDA Programming (4)
Kim Seon Deok
CUDA는 hierarchical thread architecture를 가지고 있어, thread를 group으로 묶어 실행할 수 있다. thread가 GPU에서 어떻게 parallel하게 돌아가는지를 이해하게 된다면 parallel programming code를 write할 수 있고 더 나은 performance를 achive할 수 있을 것이다. CUDA thread가 GPU에서 작동하는 방식 - parallel and concurrent thread execution - warp execution - memory bandwidth issue - contel overhead - SIMD operation CUDA threads, blocks, and the GPU CUDA programming의 wo..
Shared memory shared memory는 CUDA memory hierarchy에서 User-Managed cache로써 역할을 수행한다. user가 global memory에서 data를 coalesce한 방식으로 read/write하고, user가 control 할 수 있는 cache처럼 작동하는 memory를 제공한다. - shared memory는 같은 block 내의 thread에게만 visible하다. -> 같은 block 내의 thread끼리만 memory access를 공유 - 같은 block 내 thread들은 result를 공유할 수 있기 때문에, redundant한 계산을 줄일 수 있다. - shared memory와 CPU cache는 비슷하다. CPU cache는 exp..
CPU 와 GPU architecture는 기본적으로 다르다. 그렇기 때문에 각 architecture에서 memory hierarchy 역시 각각의 size와 type에 대해서도 다르고, 목적과 design 측면에서도 다르다. 적절한 memory hierarchy를 최적으로 사용했을 때 CUDA kernel을 launching하게 되면 최대 성능을 얻을 수 있다. 따라서 알맞은 memory type을 고르는 것이 중요하다. GPU application performance constraints GPU application의 performance에 영향을 주는 요인들 중 memory와 관련된 제약 사항이 가장 큰 부분을 차지하고 있다. 대부분의 시간 동안 application의 성능은 memory와 관련..
* Learn CUDA Programming 책을 바탕으로 하였습니다. Outline High-performance computing의 역사 Technical requirements CUDA 를 사용해 Vector addition 연산 CUDA 에서 Error reporting CUDA 에서 Data type support High-performance computing의 역사 High-Performance-Computing(고성능 컴퓨팅)은 과거 Mega-Floating Point Operations(MFLOPs)에서부터 PetaFLOP 계산이 가능한 수준으로 향상되었다. Floating-Point Operations (FLOPs) per second 프로세서의 이론적 최대 성능(peak compute..