본문 바로가기

전체 글68

[Parallel Computing] (19) Register Allocation Register는 CPU나 GPU에 속해있는 저장공간으로 연산 동작 중에 저장이 필요한 데이터를 저장해두는 용도로 사용된다. 연산 장치에 가장 가까이 있는 저장공간으로 접근 속도가 상당히 중요하다. 그러므로 빠른 접근 속도를 가지는 메모리를 사용하였고, 비용 및 공간의 문제로 많은 Register를 두기 어렵다. 물론 사용할 수 없는 Register가 없다고 저장이 필요한 연산을 수행하지 못하는 건 아니다. Main memory를 활용하면 연산을 수행할 수 있지만, Main memory는 매우 느리기 때문에 성능에 악영향을 줄 수 있다. 그렇기 때문에 이런 한정된 Register를 가지고 연산을 효율적으로 하기 위한 방법이 필요하다. 가장 널리 알려진 방법이 Chaitin's algorithm이다. 이 .. 2024. 5. 26.
[Parallel Computing] (18) OpenCL OpenCL은 Open Computing Language로써 이종 간의 병렬 컴퓨팅(heterogeneous parallel computing)을 위한 병렬 프로그래밍 모델이다. API, Libraries, a runtime system을 지원한다. 모바일 장치에서부터 수퍼컴퓨터까지 다양한 장치를 지원하며, 서로 다른 아키텍처에서도 같은 코드로 수행가능하다. 다만 아키텍처별로 최적화 포인트가 다르기 때문에 성능은 동일하지 않다. OpenCL은 Host program 과 OpenCL program의 조합으로 구성된다. OpenCL program은 Kernel들의 모음으로 구성되어 있다. Host Program은 Host에서 수행되며, kernel 실행을 관리한다. Kernels은 Compute devece.. 2024. 5. 26.
[Parallel Computing] (18) GPU Architectures GPU는 AI Application을 빠르게 수행하기 위하여 사용되고 있다. GPU는 어떤 특성을 가지기 때문에 AI Application을 수행하는 데 적합한 지를 알아보도록 하겠다. GPU를 알아보기 앞서, Performance 측면에서 CPU는 어떤 형태로 발전해왔는 지를 알아보자. 성능에 영향을 주는 요소들은 아래와 같다. 1. Paralleism 2. Clock frequency 3. Memory bandwidth 4. Memory latency Paralleism은 말그대로 병렬로 수행하는 것을 의미한다. Instruction을 병렬로 수행하기 때문에 ILP(Instruction Level Paralleism)이라고 한다. CPU는 여러 Core를 구비하고, 각 Core마다 ILP를 수행한다... 2024. 5. 26.
[Parallel Computing] (17) Memory Consistency Consistency라는 단어는 어떤 의미일까? 네이버 사전을 찾아보면 일관성이라 표현되고, 영영 사전을 검색하면 아래와 같이 표현된다. the quality of always behaving or performing in a similar way, or of always happening in a similar way이전 Cache Coherence 포스트를 봤다면, 이상하다고 생각할 수도 있다. Coherence도 우리말로 일관성이라는 의미를 가지며, 영영 사전에 의하면 'the situation when the parts of someting fit together in a natual or reasonable way'라고 표현했기 때문이다. 둘 다 일관성이며, 영영 사전에서 표현한 문구도 비슷하기.. 2024. 5. 25.