서적 링크 : https://www.amazon.com/dp/178829811X
이 책을 한 마디로 표현하자면 'Julia언어 성능 최적화의 바이블'이다.
앞선 포스트에서 Julia언어가 제 성능을 내기 위해서는 최적화 과정이 반드시 필요하다는 점을 언급했다.
(Julia언어는 '1.5개 언어 문제'를 만든다? : https://kmuh.tistory.com/178)
그렇다면, Julia언어의 최적화는 도대체 어떻게 한다는 것인가?라는 질문이 뒤따르게 된다.
이 질문에 답을 구하려고 인터넷을 이곳저곳 기웃거려봤지만, 결국 이 책 1권으로 다 해결되는 것 같다.
200페이지 가량의 짧은 분량에도 불구하고 Julia언어 최적화 관련 어지간한 내용은 다 들어있다.
애초에, Julia언어 최적화라는 게 그렇게 어렵거나 복잡하지는 않았던 것이었다.
프로파일링, 마이크로 벤치마크등으로 병목 현상 지점을 찾아내는 방법,
Julia언어 특유의 '자료형 안정성'(Type-stable) 개념이 잘 설명되어 있고,
코드를 작은 함수로 쪼개어서 컴파일러가 자료형을 좀 더 잘 인식하도록 힌트를 줘서 '자료형 안정성'을 높이는 방법,
인라인 최적화 여부를 조절해서 이러한 팁의 효력이 사라지지 않도록 하는 방법,
메모리 할당량 및 가비지 컬렉션을 최적화 하는 방법,
동적 언어의 편의성을 포기하고서라도 컨테이너의 자료형과 struct 필드의 자료형을 명시해야 하는 이유,
각종 수치연산, 행렬연산 속도를 높이는 팁,
이미지와 영상처리 속도에 도움을 주는 StaticArray.jl에 대한 소개,
CPU의 SIMD 및 GPU를 이용해서 병렬 연산으로 속도를 높이는 방법,
for 반복문 앞에 @thread 매크로를 붙여서 멀티 쓰레드로 병렬 연산을 하는 방법,
Distributed 패키지로 멀티 프로세스 병렬 연산을 실행하는 방법등이 소개 되어있다.
다만, 이 책은 번역이 되어 있지 않다는 점이 걸리는 데, 요즘 무료로 사용가능한 챗GPT의 영어 번역 실력이 엄청나게 좋으니까, 예전보다 언어 장벽이 많이 낮아졌으므로 어느 정도 대응이 가능할 것으로 보인다.
Julia언어 TTFP 문제 (2) | 2025.03.19 |
---|---|
Julia언어 성능 최적화 - 메모리 할당 최소화 (0) | 2025.03.18 |
Julia언어 DataFrame은 Type-unstable (0) | 2025.03.17 |
Julia언어 성능 최적화 : 자료형 안정성 (Type-stable) (0) | 2025.03.17 |
Julia언어 성능 최적화의 첫 걸음 : 프로파일링 (Profile) (0) | 2025.03.17 |