30 Years of HPC: 새로운 언어는 거의 채택되지 않았지만 하드웨어는 크게 진보했다
핵심 내용
30년간 HPC 하드웨어는 급진화했지만 언어는 거의 그대로다.
자세히 보기
1995년 TOP500 상위 시스템은 Fujitsu, Intel, Cray가 주도했고, 코어 수는 80~3,680개, Rmax는 98.9~170 GFlop/s 수준이었다. 2025년 상위 시스템은 HPE Cray, Eviden/Bull, Microsoft로 바뀌었고, 코어 수는 2,073,600~11,340,000개, Rmax는 561.2~1809 PFlop/s까지 올라갔다.
이 성장은 주로 다음 변화에서 비롯됐다.
- vector instructions의 보편화
- multicore/manycore CPU와 chiplet 기반 설계
- multi-socket compute node 아키텍처
- 더 높은 radix와 더 낮은 diameter를 가진 고속 네트워크
- GPU의 대규모 도입과 HPC에서의 성공
반면 HPC 프로그래밍은 30년 전과 놀랄 만큼 비슷하다. 당시와 지금 모두 핵심 언어는 **Fortran, C, C++**이고, 분산 메모리는 여전히 MPI와 SHMEM이 중심이다. 공유 메모리에서는 OpenMP가 1997년 이후 표준처럼 자리 잡았고, 최근에는 Kokkos가 의미 있는 대안으로 들어왔다.
가장 큰 변화는 GPU 프로그래밍의 등장이다. 기존 1995년형 기술만으로는 GPU를 다룰 수 없어서 CUDA, HIP, SYCL, OpenACC, OpenCL, Kokkos 같은 새 도구와 확장이 생겼고, OpenMP도 GPU 지원을 위해 더 명시적인 형태로 진화했다. 스크립팅에서는 Python이 Perl과 Tcl/TK를 밀어냈고, 셸은 bash가 주류가 됐다.
핵심 진단은 이렇다. 하드웨어는 훨씬 강력해졌지만, 실제 HPC 표기법은 크게 바뀌지 않았다. 특히 널리 채택된 새로운 compiled programming language는 없었다.
저자는 그 이유를 여러 각도에서 의심한다. 언어 설계가 죽었다는 주장과 달리, 지난 30년 동안 Java, JavaScript, Python, C#, Go, Rust, Julia, Swift 같은 언어는 폭넓게 성공했다. 즉 문제는 언어 설계의 부재가 아니라, HPC가 요구하는 productivity, safety, portability, performance를 만족하는 형태로 새로운 언어가 충분히 자리잡지 못했다는 데 가깝다.
동시에 HPC는 하드웨어 복잡도 증가로 더 어려워졌다. vectorization, multicore, GPU, NUMA는 모두 프로그래머에게 병렬성, 데이터 배치, affinity를 더 세밀하게 다루도록 요구한다. 반대로 고속 네트워크는 예전보다 토폴로지 민감도를 줄여 주어, 프로그래밍 측면에서는 몇 안 되는 순기능으로 평가된다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.