Core Concepts
MultiPrecisionArrays.jl 패키지는 여러 가지 반복 정제 변형을 위한 데이터 구조와 솔버를 제공한다. 이 패키지는 LAPACK/BLAS에서 반정밀도(Float16)가 완전히 지원될 때 훨씬 더 유용해질 것이다. 현재로서는 이 패키지의 가장 일반적인 용도는 이중 정밀도 방정식과 단일 정밀도 분해를 사용하는 고전적인 반복 정제이다.
Abstract
이 문서는 MultiPrecisionArrays.jl 패키지의 v0.1.0 버전에 대한 것이다.
소개:
MultiPrecisionArrays.jl은 여러 가지 반복 정제 변형을 위한 데이터 구조와 알고리즘을 제공한다.
이 소개 섹션에서는 고전적인 반복 정제 버전을 살펴보고 구현 및 수렴 특성을 논의한다.
반복 정제는 저장/시간 트레이드오프의 완벽한 예이다.
적분 방정식 예제:
이 예제는 MultiPrecisionArrays.Examples 하위 모듈에 있다.
Gmat(N) 함수는 [0, 1] 구간의 -d^2/dx^2에 대한 그린 연산자의 N점 사다리꼴 규칙 이산화를 반환한다.
이 예제에서는 A = I - αG를 사용한다. α = 1.0은 매우 잘 조건화된 경우이고, α = 800.0은 매우 근접한 특이 경우이다.
고전적인 예: 이중-단일 정밀도:
이중 정밀도 작업 정밀도와 단일 정밀도 분해 정밀도를 사용하는 경우, 반복 정제는 시간/저장 트레이드오프의 좋은 예이다.
저정밀도 복사본을 저장해야 하므로 저장 부담이 50% 증가하지만 분해 시간은 절반으로 줄어든다.
차원이 증가할수록 반복 정제의 이점이 커진다.
반복 정제 통계 수확: 파트 I
보고 키워드 인수를 사용하여 반복 정제 통계를 얻을 수 있다.
백슬래시 명령을 사용하면 솔루션과 잔차 히스토리가 포함된 데이터 구조를 얻을 수 있다.
온더플라이 옵션을 활성화하면 각 반복 단계의 잔차가 더 빨리 감소한다.
옵션 및 데이터 구조:
mplu 함수는 MPArray 생성자와 저정밀도 행렬 분해를 결합한다.
TF 키워드 인수는 분해 정밀도를 지정한다.
onthefly 키워드 인수는 삼각 솔버가 온더플라이 모드로 작동할지 여부를 제어한다.
반정밀도:
반정밀도(Float16)는 지수 필드가 더 크고 유효 자릿수가 더 작은 BFloat16 형식과 IEEE 16비트 부동 소수점 형식이 있다.
현재 Julia는 BFloat16을 네이티브로 지원하지 않는다.
반정밀도 분해는 솔버를 느리게 만들 뿐이며, 결과가 매우 나쁠 수 있다.