나는 조건이 좋지 않은 큰 희소 선형 방정식 방정식을 연구하고 있습니다. 더블 더블 산술 또는 쿼드 더블 산술을 사용하여 문제를 해결하고 싶습니다. Nakata, Maho에서 개발 한 MPACK이라는 패키지가 쿼드-이중 산술 하에서 수치 선형 대수 계산을 수행 할 수 있다는 것을 알고 있습니다. 그러나 희소 행렬이 아닌 밀도가 높은 행렬을 위해 설계되었습니다. 쿼드 더블 산술 희소 행렬 패키지가 있는지 알고 있습니까?
나는 조건이 좋지 않은 큰 희소 선형 방정식 방정식을 연구하고 있습니다. 더블 더블 산술 또는 쿼드 더블 산술을 사용하여 문제를 해결하고 싶습니다. Nakata, Maho에서 개발 한 MPACK이라는 패키지가 쿼드-이중 산술 하에서 수치 선형 대수 계산을 수행 할 수 있다는 것을 알고 있습니다. 그러나 희소 행렬이 아닌 밀도가 높은 행렬을 위해 설계되었습니다. 쿼드 더블 산술 희소 행렬 패키지가 있는지 알고 있습니까?
답변:
버전 3.2 부터 PETSc는 gcc / gfortran 4.6 이상에서 드문 쿼드 정밀도 계산을 지원합니다.
다음과 같은 (부분) configure 명령으로 PETSc가 (사중 지원과 함께) 제공 할 수있는 4 중 정밀 BLAS 및 LAPACK이 필요합니다.
./configure --with-precision=__float128 --download-f2cblaslapack
자세한 내용은 FAQ 를 참조하십시오 .
또한 nOOb에 동의 합니다. 가능하면 쿼드 정밀도로 전환하기 전에 시스템을 정규화하십시오.
Trilinos 라이브러리를 사용해 볼 수도 있습니다. 그들은 Tpetra (원래의 희소 행렬 라이브러리 인 Epetra를 대체해야 함) 아래에 희소 행렬 라이브러리를 템플릿 화했습니다. double, complex, quad 등을 템플릿으로 만들 수 있으며 PETSc 옆에 가장 큰 솔버 (직접 및 반복)를 선택할 수 있습니다.
편집 : 주석을 읽은 후 Tpetra의 즉각적인 유용성은 약간 의심스러운 wrt quad precision 인 것 같습니다 ...
__float128
Tpetra의 지원 조차도 쿼드 더블은 물론입니다. Tpetra은과 모든 헤더 독립 실행되지 않으며,이 경우에도, 같은 것들을 std::complex
단지와 함께 작업 float
하고 double
.
MATLAB 용 다중 정밀도 컴퓨팅 툴박스는 희소 행렬을 지원하며 특히 4 배 정밀도의 계산에 최적화되어 있습니다.
다음은 쿼드 정밀도 희소 솔버의 타이밍 세부 정보입니다. 희소 행렬을위한 직접 솔버
(저는 툴박스의 저자입니다).