컴공돌이의 스터디 블로그

[차세대 컴퓨팅 특론_2] - Introduction to parallel computing or HPC(high performance computing)_2 본문

수업 Study/차세대 컴퓨팅 특론

[차세대 컴퓨팅 특론_2] - Introduction to parallel computing or HPC(high performance computing)_2

제갈초아 2018. 10. 30. 12:00

* 이 글은 수업 내용을 개인적으로 정리한 글입니다.


고성능 컴퓨팅의 측정 단위



  고성능 컴퓨팅의 성능 측정은 Flop, Flops/s, Bytes 등을 사용해서 측정합니다. Flop는 Floating Point Operation의 줄임말으로 부동소소점 연산을 의미하고, Flops/s는 초장 부동소수점 연산을, Bytes는 데이터의 크기를 의미합니다. 고성능 컴퓨팅의 성능을 이러한 것들을 사용해서 측정해 보면 그 크기가 을 훌쩍 뛰어넘기 때문에 적절한 단위를 설정해 주는 것도 매우 중요합니다.


  단위는 메가(Mega), 기가(Giga), 테라(Tera), 페타(Peta), 엑사(Exa), 제타(Zeta), 요타(Yotta)의 순서로 점차 커지며 각각의 단위는 를 의미합니다.


  2018년 6월에 조사한 결과, 세계에서 가장 뛰어난 성능을 지닌 컴퓨터는 IBM의 Summit입니다. Summit은 측정된 최대 Flop 값이 최초로 ExaFlop()을 돌파하였으며, 이전까지 최고의 성능을 지니고 있었던 컴퓨터인 중국의 Sunway TaihuLight의 성능보다 약 30% 앞선 성능을 가지고 있다고 합니다.



병렬 컴퓨팅의 중요성



  연산중에는 특히나 까다로운 연산들이 존재합니다. 과학 분야에서는 지구의 기후를 모델링하는 연산, 천체를 모델링하는 연산등이 해당하고 공학 분야에서는 충돌 시뮬레이션 연산, 유체의 흐름을 연산하는 것들이 해당됩니다. 이외에도 비지니스 분야, 국방과 연관된 분야에서도 까다로운 연산들이 존재합니다. 


  지구의 기후를 모델링하는 연산은 위도, 경도, 고도, 시간을 입력하면 해당 지점의 온도, 기압, 습도, 풍속 등이 도출되는 연산입니다. 이러한 기후를 모델링하는 연산을 완벽하게 할 수 있다면 엘리뇨와 같은 이상기후를 미리 발견할 수 있어 피해를 줄일 수 있습니다. 연산을 하기 위해서는 t 시점의 데이터를 입력하면 일정 시간 뒤의 날씨를 예측해주는 알고리즘을 고안해야 하고, 측정 지점을 일정 거리마다 설정해야 합니다. 또한 대기의 흐름을 잘 파악하는 것이 중요한데 이는 나비에-스트로크 방정식(Navier-Stokes Equation)을 사용해서 파악할 수 있습니다.


  하지만 모델링의 정확도를 높이기 위해서는 측정 지점간의 거리를 줄여야 하는데 만약 이 거리를 절반으로 줄이게 되면 연산량은 8배에서 많게는 16배까지 증가하게 됩니다. 이러한 기하급수적으로 증가되는 연상량을 해결하기 위해서는 병렬 컴퓨팅을 써야하므로 병렬 컴퓨팅이 그만큼 중요하다는 것을 알 수 있습니다.


  무어의 법칙에 의하면 프로세서는 주기적으로 크기가 작아지면서 밀도가 높아집니다. 하지만 이에 반해 클락의 속도는 빨라지는 것이 어렵습니다. 또한 일반적인 컴퓨팅은 전력, 메모리, 프로세서의 작동 빈도의 부분에서 구조적으로 한계가 올 수 밖에 없습니다. 따라서 병렬 컴퓨팅은 현재 매우 필요한 것이라고 말할 수 있습니다. 



병렬 컴퓨팅의 어려운 점



  병렬 컴퓨팅을 위해서는 이에 적용할 알고리즘과, 이에 적합한 소프트웨어의 개발 또한 이루어져야 합니다. 하지만 이것들은 개발하기 쉽지 않습니다. 알고리즘의 경우 동시에 작동할 수 있도록 설정하고 이를 조정하는 것이 복잡하기 때문에 개발하기가 어렵고, 소프트웨어의 경우 표준화된 효과적인 개발 툴이 부족합니다. 또한 현대에는 컴퓨터 시스템의 구조가 빠른 속도로 변화되고 있기 때문에 이를 따라가기 어려운 실정입니다. 또한 병렬컴퓨팅을 위해서는 충분한 병렬처리의 개수를 찾아야 하고, 작업의 균형을 맞춰야 하는 등 고려해야할 것들이 많습니다.


  연산은 2가지 종류로 구분이 가능합니다. 하나는 순차적으로 처리해야하는 연산, 다른 하나는 병렬로 연산이 가능한 독립적인 연산입니다. 병렬컴퓨팅은 이 독립적인 연산의 부분에 사용 가능합니다. 컴퓨터의 속도 증가의 식은 지난번에 정리하였던 공식과 같지만 더 세부적으로 살펴보겠습니다.


 


  위의 식에서 S는 속도 증가, 는 순차적 작업의 시간, 는 병렬 작업 시간, 은 전체에서 순차적 작업의 비율, 는 병렬 작업의 비을 의미합니다. 위의 수식을 통해 계산하여 보면 병렬 작업의 수가 많아질수록 속도 증가의 폭도 작아집니다. 이를 고려하여 병렬처리 작업의 개수를 적당히 설정하는 것이 중요합니다.


  병렬 컴퓨팅에서 충분하지 않은 병렬처리 작업의 수, 동일하지 않은 작업의 크기 등과 같은 이유로 일부 프로세서가 가동되지 않는 현상을 작업의 불균형 현상이라고 말합니다. 이러한 불균형 현상은 트리 구조의 연산등과 같은 경우에 발생하게 됩니다. 이를 해결하기 위해서는 작업량을 균형있게 맞출 수 있는 알고리즘이 필요합니다.


  마지막으로 병렬 컴퓨팅에서는 Overhead(오버헤드)를 고려해야 합니다. 오버헤드는 프로세스 혹은 스레드를 실행시킬때 발생되는 비용, 공유된 데이터를 통신하는데 발생되는 비용, 다른 작업에 동기화하는 비용등을 모두 고려해야만 합니다. 이러한 오버헤드를 모두 고려한다면 변렬 컴퓨팅의 속도 향상은 원래 예상했었던 속도보다 느리게 나올 수 밖에 없습니다. 하지만 이러한 것들을 모두 고려하는 것은 쉬운 일이 아니기 때문에 병렬 컴퓨팅이 그만큼 어렵다고 할 수 있습니다.



병렬 컴퓨터의 종류



  병렬 컴퓨터는 2가지 대표적인 종류가 있습니다. 프로세서와 메모리가 연결되어 있는 형태로 종류를 구분하는데 하나는 Shared Memory(공유 메모리) Multiprocessor이고 다른 하나는 Distributed memory(분산 메모리) Multicomputer 입니다. 


  Shared Memory Multiprocessor의 구조는 왼쪽의 그림과 같습니다. 그림에서 볼 수 있듯이 Shared Memory Multiprocessor는 단일 프로세서 모델을 확장시키는 가장 자연스러운 방법입니다. 왼쪽 그림에서 여러 개의 프로세서들이 메모리 모듈에 연결되어 있어 각 프로세서가 모든 메모리 모듈에 접근할 수 있습니다.





  Distributed Memory Multicomputer(Message Passing Multicomputer)의 구조는 왼쪽의 그림과 같습니다. 그림에서 볼 수 있듯이 Distributed Memory Multicomputer는 상호연결 네트워크를 통해 연결된 컴퓨터들이라고 볼 수 있습니다. 각각의 프로세서는 연결되어 있는 1개의 메모리 모듈에 연결되어 있어, 메시지를 주고 받으면서 연산을 진행할 수 있습니다.





  이밖에도 병렬 컴퓨팅을 위해서는 어떤 종류의 컴퓨터를 사용하느냐, 어떠한 데이터를 사용하느냐, 어떠한 명령을 사용하느냐와 같이 다양한 요소들을 고려해야 합니다. 


반응형
Comments