GN⁺: 고성능 컴퓨팅의 예술
(theartofhpc.com)과학 컴퓨팅의 기초
- 과학적 컴퓨팅에 대한 일반적인 배경 지식을 다루는 책으로, 컴퓨터 구조, 병렬 컴퓨터 구조, 컴퓨터 산술, 선형 대수, ODE/PDEs 등이 포함되어 있음.
- 큰 계산에서 모든 것이 어떻게 결합되는지에 대한 내용도 포함.
병렬 프로그래밍을 위한 과학과 공학
- 과학 컴퓨팅의 많은 부분이 어떤 형태로든 병렬 프로그래밍을 포함함.
- MPI와 OpenMP의 현대 버전에 대한 최고의 소개서로, PETSc, Kokkos, Sycl, Co-array Fortran에 대한 짧은 섹션도 포함.
- C, Fortran, C++, 그리고 (MPI의 경우) Python에서 MPI와 OpenMP의 커버리지로 주목받음.
과학 프로그래밍 소개
- 과학 및 공학 프로그래밍은 주로 C/C++ 및 Fortran에서 수행됨.
- 현대 C++17(요즘 C보다 선호됨)과 Fortran2008을 가르치는 책.
- 과학 프로그래밍에 대한 제로부터의 소개 또는 "C 프로그래머를 위한 C++"으로 읽을 수 있음.
- 다양한 긴 프로그래밍 프로젝트가 포함되어 있음.
HPC 목공예
- 과학 컴퓨팅의 생태계는 단지 프로그래밍 언어와 병렬 프로그래밍 시스템 이상의 것을 포함함.
- 컴파일러, 빌드 시스템, 소스 코드 관리 등에 대한 이해가 필요하며, 이 책은 이 모든 것의 집대성을 목표로 하지 않고, 과학적 워크플로우에 편향된 일련의 소개를 제공함.
Victor에 대하여
- Victor Eijkhout는 텍사스 고급 컴퓨팅 센터의 연구 과학자임.
- 이 교재들은 텍사스 대학교 오스틴 캠퍼스에서 다양한 과정을 가르치면서 만들어짐.
- 이 책들을 공개함으로써 그가 의무를 넘어선 노력을 했다고 생각된다면, 커피를 사주는 것도 좋은 방법임.
GN⁺의 의견
- Victor Eijkhout의 HPC 교재 시리즈는 과학 컴퓨팅의 기초부터 병렬 프로그래밍, 과학 프로그래밍의 실제 적용에 이르기까지 포괄적인 지식을 제공함.
- 이 시리즈는 초급 소프트웨어 엔지니어가 고성능 컴퓨팅(HPC)의 세계에 입문하는 데 필수적인 자료가 될 수 있음.
- 과학 및 공학 분야에서 컴퓨팅 기술이 점점 중요해지는 현재, 이러한 교재들은 해당 분야 전문가들에게 매우 유익하고 흥미로운 자료가 될 것임.
Hacker News 의견
-
하드웨어 및 데이터센터 측면의 이야기
- AWS에서 소프트웨어/서비스 쪽 일을 하던 한 사용자는 데이터센터 직원들의 이야기를 듣고, 데이터센터의 컴퓨팅 파워 증가가 실제 컴퓨팅 문제보다 열역학 문제라는 것을 깨달음.
- 노드가 매우 조밀해져서 전력을 공급하고 열을 배출하는 것이 매우 어려운 문제가 되었으며, 비효율을 발견하더라도 소프트웨어 업데이트로 해결할 수 없음.
- 이러한 상황은 약 10년 전의 것이며, 아마존이 인터넷 서점에서 시작해 열역학 문제를 해결하는 최첨단에 있음이 놀랍다고 함.
-
고성능 컴퓨팅(HPC)의 하드웨어와의 거리감
- HPC가 하드웨어로부터 얼마나 추상화되어 있는지에 대한 흥미로운 점을 지적함.
- 책들은 SPMD 프로그래밍, 알고리즘, 데이터 구조, 태스크 병렬성, 동기화 등에 초점을 맞추고 있지만, 슈퍼컴퓨터 메모리 시스템, 고대역폭 인터커넥트(CXL), GPU 아키텍처 등의 컴퓨터 아키텍처 세부 사항에 대해서는 거의 다루지 않음.
- 추상화와 도구가 이미 충분히 좋아서 이러한 세부 사항을 걱정할 필요가 없는지, HPC 실무자들이 성능을 끌어내기 위해 많은 '블랙박스' 조정을 해야 하는지 궁금함을 표현함.
-
빅터의 자료집에 대한 칭찬
- 한 사용자는 빅터가 만든 자료집에 감탄하며, 자신은 빅터를 개인적으로 알지는 못하지만, 1990년대 UT Austin에서 박사 과정을 하며 TACC의 자원을 사용했음을 언급함.
- 당시 프로그래머는 자신의 코드를 병렬화해야 했으며, 하드웨어에 대한 이해가 필요했음. 이는 분야가 아직 초기 단계였기 때문이며, 문제 해결은 Cray 링 바인더와 Gropp 등의 자료를 읽음으로써 이루어졌음.
-
HPC의 하드웨어 관리 측면에 대한 관심
- 한 사용자는 HPC에서 문제를 감지하고 진단하며, 재부팅/재설치/수리와 같은 조치를 취하고, 이를 최적화하여 최상의 서비스 수준을 제공하는 방법에 대해 관심을 표함.
- 노드 가용성 대비 전체 처리량과 같이 동시에 여러 목표를 최적화해야 할 때, 다른 토폴로지가 이러한 문제에 미치는 영향, 기타 제약 조건 등에 대한 정보를 찾기 어려웠다고 언급함.
-
C++ 교육 방법에 대한 의견 요청
- 경험 많은 Python 프로그래머가 C++ 교육 방법에 대한 사람들의 생각을 물으며, 특정 단점이 있는지 궁금해함.
- 해당 사용자는 자신의 C++ 기술을 향상시키고 싶어하며, 책 3권이 자신에게 적합한 수준으로 보임을 언급함.
-
저자의 무료 교재 제공에 대한 감탄
- 한 사용자는 저자가 C++과 Unix 도구를 포함한 포괄적인 책 세트를 만들고 무료로 공유한 것에 대해 감탄함.
- 모든 프로그래머(고성능 컴퓨팅에 특화된 것이 아니더라도)에게 유익한 내용이라고 언급함.
-
과학 컴퓨팅 수업에 대한 회고
- 2013년에 과학 컴퓨팅 수업을 들었던 사용자는 해당 분야가 넓어서 많은 주제가 간략하게 다뤄졌다고 회고함.
- 병렬 컴퓨팅에 대한 전문적인 학기별 과정이 있었다면 도움이 되었을 것이라고 언급하며, 이러한 책들이 그러한 과정의 일부로 매우 가치 있었을 것이라고 평가함.
-
HPC 대학원 과정의 TA 제안에 대한 경험
- 한 사용자는 10년 전 HPC 대학원 과정의 TA 역할을 제안받았으나 거절했음을 언급함.
- 당시 이 책이 있었다면 기회를 잡았을 것이라고 말하며, 저자의 업적을 칭찬함.
-
UT Austin에 대한 칭찬
- UT Austin이 HPC와 계산 방법에 있어 뛰어난 기관임을 언급함.
-
프로그래머를 위한 좋은 내용
- 책의 내용이 모든 프로그래머에게 유익하며, 특히 세 번째 권에서 C++17과 Fortran2008을 가르치는 대조적인 접근 방식에 대해 언급함.