ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HPC에 대한 이런저런 이야기 - 1부
    기술이야기/HPC 및 AI 2022. 4. 11. 16:42

    안녕하세요, 이스파이스 기술연구소입니다.

    기술 이야기는 우리가 통상적으로 슈퍼컴퓨터라 부르는 HPC (High Performance Computing) 분야로 시작해 보려 합니다.

     

    HPC라는 분야는 서버의 활용 분야 중에서도 상당히 특이한 분야로 취급되어 왔으나, 세상에 생산되는 데이터가 넘쳐나고 그 활용에 대한 고민을 하다보니 HPC라는 것이 우리와 그닥 멀지 않은 분야가 되어가고 있기도 합니다.

     

    몇 회에 나눠서 쓰게 될지는 모르겠습니다만, 이번 이야기에서는 다음과 같은 주제를 다뤄 보겠습니다.

    • HPC란 무엇인가?
    • HPC 개념의 변화
    • HPC 구성 요소

    [ HPC란 무엇인가? ]

    HPC High Performance Computing, 즉 ‘고성능 연산’의 약자입니다. 우리가 일반적으로 말하는 Super Computer(슈퍼컴퓨터)를 지칭하기도 합니다. 1960년대에 Cray란 인물이 만든 회사에서 만든 시스템에 슈퍼컴퓨터란 말이 최초로 쓰였다고 하고, C-모양의 Cray-2호기는 수십년간 슈퍼컴퓨터의 대명사로 활약했습니다.

     

    초기의 슈퍼컴퓨터는 연산능력이 뛰어난 CPU를 가진 시스템이었다면, 최근 시스템은 수많은 계산 유닛의 병렬화를 통해 고성능 연산을 실현하는 병렬 컴퓨팅으로 구현됩니다. 쉽게 생각하면, 2000년대 초까지의 인텔 CPU가 클럭 스피드로만 성능 향상을 꾀하다가, 회로 집적 및 발열 등의 문제로 듀얼 코어를 시작으로 현재의 멀티 코어 및 AVX와 같은 연산 유닛의 발전 등의 형태로 성능 향상시킨 것과 비슷한 개념입니다. 인텔/AMD 프로세서로 구현하는 HPC 2-소켓 시스템 여러 대를 묶어서 구성하는 클러스터가 현대의 가장 일반적인 HPC의 형태라 하겠습니다.

     

    2008년에 글쓴이가 속한 회사에서 개발한 서버 유닛으로 일본 츠쿠바 대학에 구축된 당시 세계 최대 AMD  클러스터 . 3.14 로 대표되는 π 연산으로 세계 기록을 세웠던 시스템입니다 .

     

    그러면, 얼마나 빠른 컴퓨터를 슈퍼컴퓨터라 할 수 있는가? 이건 딱히 답이 없는 것 같습니다. 바로 앞에 언급한 클러스터 형태의 병렬 컴퓨팅을 할 수 있는 시스템이면 다 HPC라 불러도 될 것 같습니다.

     

    [ HPC 개념의 변화 ]

    바로 위에서 HPC 시스템의 개념의 변화를 언급하긴 했는데, HPC가 처리하는 고속 연산의 형태도 많이 변하고 있습니다. 아래 표는 HPC의 관련 분야와 시스템의 특징을 정리해 본 겁니다.

     시대 대표적인 활용 분야 시스템의 특성
    1970년대 기상 예보, 공기역학 연구 Cray 이외에 별다른 HPC 시스템이 없었다.
    1980년대 확률론적 해석, 방사선 차폐 모델링 IBM 등 다른 업체들의 HPC 시장에 등장
    1990년대 암호 해독 병렬컴퓨팅 개념 도입
    2000년대 3차원 핵 실험 시뮬레이션 병렬 컴퓨팅의 급속한 증가
    2010년대 분자 물리학 시뮬레이션 이젠 에너지 효율성!!!
    2020년대 ? Exa-scale, 인공지능,

     

    대량의 수치 연산의 시대에서, 현실 세계의 시뮬레이션을 위한 활용으로 변해가고 있다고 볼 수 있습니다.

    여기에 최근엔 현실 세계의 데이터를 습득하고, 새로운 데이터에 대한 판단 및 유사한 자료를 생성해내는 인공지능 또한 HPC의 영역으로 개념의 확장이 이루어지고 있습니다.

     

    [ HPC 구성 요소/하드웨어 ]

    아래 그림은 OpenHPC란 솔루션 문서에 포함된 대표적인 HPC 클러스터 구성 예입니다.

    현대의 슈퍼컴퓨터는 여러 계산 노드를 연결하여 병렬 연산 처리를 하는 것이라고 했습니다. 그러니, 여러 대의 계산 노드가 기본 구성 요소가 됩니다.

     

     

    그런데, 이 여러 노드들에게 작업을 분배해주고, 관리하기 쉽게 하기 위한 관리 노드가 필요합니다. 관리 노드 (management node) 혹은 마스터 노드라고 합니다. 이런 작업은 대개 이더넷을 통해 이뤄집니다.

     

    그리고, 병렬 처리를 하다 보면 노드 간의 통신이 많아지기도 합니다. 그런데, 전통적인 이더넷은 속도가 그닥 빠르지 않습니다. 빠르다는 개념은 두가지가 있습니다. 자료가 정해진 시간 내에 얼마나 많이 오는가 하는 빠름이 있고, 자료를 요청했을 때 얼마나 짧은 시간에 응답하는가에 대한 빠름이 있습니다. 전자는 전송 대역폭이라 부르고, 후자는 응답 시간이라 부르며 데이터 전송에 있어서의 속도란 개념을 구분합니다.

    이더넷은 오래된 규격이다 보니 이 두가지 개념의 속도 개념이 그닥 빠르다 하기 어렵습니다. 그래서, HPC를 구성할 때엔 데이터 전송을 위한 데이터 네트워크를 따로 구성하는 게 일반적입니다.

    넓은 전송 대역폭과 빠른 응답 시간이란 요구 조건을 만족하는 대표적인 네트워크 방식은 인피니밴드(InfiniBand)입니다. 이더넷이 1Gbps에 초고속 취급을 받던 2000년대 초에 10Gbps란 대역폭으로 세상에 등장해서 지금은 200Gbps HDR이 대세인 고속 네트워크입니다. 대역폭도 넓지만, 응답시간이 이더넷이 수십 msec (milli-seconds)인데 반해 현대의 인피니밴드는 수 μsec (micro-seconds) 수준이라 이더넷에 비해 1/10,000 정도로 빠른 응답속도를 보여서 계산 노드 간의 많은 데이터 통신에 적합하다 하겠습니다.

    인피니밴드는 초기에는 Mellanox, Qlogic, Voltaire 등의 회사에서 생산했으나, 지금은 모두 인수/합병 등으로 사라져서 Mellanox만 남아있으며, Mellanox NVIDIA에게 흡수되어 지금은 NVIDIA의 자회사가 되었습니다.

     

    이렇게 병렬 처리된 연산의 결과물이 동시에 쏟아져 나올 수가 있습니다. 이 순간적으로 쏟아져 나오는 데이터를 저장할 수 있는 HPC 전용 스토리지도 있습니다. 보통 병렬 파일 시스템(Parallel File System)이라고 부르는 형태의 스토리지를 많이 채택하는데, 보통 고속 네트워크를 통해 연결되며 장치의 추가를 통해 서비스 중에도 용량 증설 및 전송 대역폭의 확장이 가능한 형태의 스토리지입니다. 이 부분에 대해서는 다음에 따로 정리를 해보겠습니다.

     

    [ HPC 구성 요소/소프트웨어 ]

    서버라는 게 용도에 맞게 소프트웨어를 구성해서 서비스를 하는 컴퓨터를 의미하는 것이기에 HPC 클러스터에서도 적절한 소프트웨어를 설치/구성해야 합니다. 구성하는 전부를 알 필요는 없겠지만, 몇 가지 용어 정도는 알면 좋을 것 같습니다.

     

    • 프로비저닝(Provisioning) S/W: 관리 서버에 설치하여 계산 노드들을 묶어서 클러스터를 구성하게 해주는 소프트웨어를 총칭합니다. Warewulf, xCAT 등의 오픈소스 진영과 Bright Computing에서 개발/판매하는 BCM (Bright Cluster Manager)가 많이들 씁니다.
    • 스케줄러(Scheduler): 관리 서버에서 계산 노드의 자원을 적절히 할당하여 일을 던져주는 역할을 하는 소프트웨어를 말합니다. Job scheduler라고도 많이 부르며, resource manager라고도 합니다. 여러 사람들이 필요한(혹은 정한 수량의) 컴퓨팅 자원을 갖고 작업을 돌릴 수 있도록 자원 및 시간의 효율적 배치를 해주는 소프트웨어로 PBS Pro, Slurm 등이 제일 유명한 스케줄러입니다. 요새는 멀티 GPU를 탑재한 서버도 많이 나와서, HPC 클러스터뿐만 아니라 단일 GPGPU 서버에 설치하여 GPU 자원을 배분해서 사용할 수 있게 해주기도 합니다.
    • 각종 라이브러리: 병렬 처리 작업을 위한 표준 규격이 있습니다. 또한, 병렬 처리를 하는데 많이 쓰이는 과학 라이브러리, 컴파일러 등도 보통 기본적으로 설치됩니다. 물론, 특정 용도에 맞는 수많은 라이브러리가 있을 수 있습니다.
    • 모니터링 툴: HPC 클러스터는 많은 노드를 관리해야 하기 때문에 중앙에서 노드를 모니터링하는 것도 중요한 역할 중 하나입니다. 쉘스크립트를 통해 계산 노드의 상태를 모니터링하는 경우도 있고, 특정 툴의 도움을 받아 사용하는 경우도 있습니다.
    • 통합 클러스터 관리자 (Cluster Manager): 프로비저닝, 스케줄러, 각종 라이브러리, 모니터링 툴 등을 모아서 하나의 패키지로 만들어 클러스터를 (아주) 조금 쉽게 구축하게 해주는 패키지도 있습니다. HPC를 주력으로 하는 회사들은 각자 오픈소스를 기반으로 커스텀 패키지화해서 자사 솔루션으로 사용하는 경우도 있고, 오픈 소스 진영에서 만든 OpenHPC, Bright Computing사의 BCM라는 통합 패키지도 있습니다.

     

    앞으로 다룰 내용은 다음을 포함하려 합니다.

    -      슈퍼컴퓨터 성능은 뭘로 측정하는가?

    -      GPGPU의 등장

    -      병렬 파일 시스템

     

    오늘은 여기까지~

    감사합니다.


    (주)이스파이스는 Dell Technologies의 Titanium 파트너로서, HPC에 대한 전반적인 컨설팅에서 구축/서비스까지 제공합니다.

    관심있으신 분들은 전화 02-573-1484~5 혹은 이메일 marketing@espice.co.kr로 연락주시기 바랍니다.

     

    댓글

Designed by Tistory.