목록전체 (168)
Kim Seon Deok
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와 관련..
Outline Ch3.3 Reducing Branch Costs With Advanced Branch Predictions 1.Correlating Branch Predictors Global Branch Correlation Gshare predictor Local Branch Correlation 2. Tournamanet predictor 3. Hybrid predictor 4. TAgged GEometic— predictors Ch3.4 Overcoming Data Hazards With Dynamic Scheduling branch hazard로 인한 stall은 pipeline의 성능을 저하시키기 때문에 branch hazard의 수를 줄이는 Loop unrolling 기법의 방식을 사용했다...
Pipeline multiple instruction의 실행을 overlap하여 performance를 향상시키는 기법 Instruction-level parallelism instruction 간 overlap되는 것을 말한다. - 하나의 instruction이 다른 instruction에 dependent 하다는 것을 결정하는 건 프로그램에 parallelism이 얼마나 많이 존재하고, 그 parallelism을 어떻게 활용할 수 있는지를 결정한다. - 만약 두 instruction이 parallel하고 pipeline이 충분한 자원을 갖추고 있어, structure hazard가 발생할 위험이 없다면, 임의의 depth의 pipeline에서 동시에 실행될 수 있다. ILP에 접근하는 방식 1. 하드..
* 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..