쿼드 더블 산술 희소 행렬 패키지가 있습니까?


10

나는 조건이 좋지 않은 큰 희소 선형 방정식 방정식을 연구하고 있습니다. 더블 더블 산술 또는 쿼드 더블 산술을 사용하여 문제를 해결하고 싶습니다. Nakata, Maho에서 개발 한 MPACK이라는 패키지가 쿼드-이중 산술 하에서 수치 선형 대수 계산을 수행 할 수 있다는 것을 알고 있습니다. 그러나 희소 행렬이 아닌 밀도가 높은 행렬을 위해 설계되었습니다. 쿼드 더블 산술 희소 행렬 패키지가 있는지 알고 있습니까?


어떤 종류의 행렬을 사용하고 있습니까? symmetrc, Hermitian, positive definite입니까? 스파 스 LU를 수행 하시겠습니까, 아니면 반복적 인 방법을 사용 하시겠습니까?
Victor Liu

답변:


3

버전 3.2 부터 PETSc는 gcc / gfortran 4.6 이상에서 드문 쿼드 정밀도 계산을 지원합니다.

다음과 같은 (부분) configure 명령으로 PETSc가 (사중 지원과 함께) 제공 할 수있는 4 중 정밀 BLAS 및 LAPACK이 필요합니다.

./configure --with-precision=__float128 --download-f2cblaslapack

자세한 내용은 FAQ 를 참조하십시오 .

또한 nOOb에 동의 합니다. 가능하면 쿼드 정밀도로 전환하기 전에 시스템을 정규화하십시오.


1
이것은 쿼드 정밀도 (128 비트 실수)가 아니라 쿼드 정밀도 (128 비트 실수)입니다. 즉, 쿼드 정밀도는 일반적으로 배정 밀도에서 발생하는 안정성 문제를 이해하기에 충분하며 일반적으로 시스템을 확장하고 이산화하여 배정 밀도가 생산에 충분할 수 있습니다.
Jed Brown

2

조건이 잘못된 시스템은 수치 정밀도를 높이는 것보다 정규화로 더 잘 해결됩니다. 까다로운 세부 사항을 보려면 "정규화가 잘못되었습니다"를 검색하십시오.


2

Trilinos 라이브러리를 사용해 볼 수도 있습니다. 그들은 Tpetra (원래의 희소 행렬 라이브러리 인 Epetra를 대체해야 함) 아래에 희소 행렬 라이브러리를 템플릿 화했습니다. double, complex, quad 등을 템플릿으로 만들 수 있으며 PETSc 옆에 가장 큰 솔버 (직접 및 반복)를 선택할 수 있습니다.

편집 : 주석을 읽은 후 Tpetra의 즉각적인 유용성은 약간 의심스러운 wrt quad precision 인 것 같습니다 ...


대부분의 솔버는 불행히도 Tpetra와 함께 작동하지 않습니다 :-(
Wolfgang Bangerth

운이 없었어. 나는 희망이 있었지만 Tpetra 개발이 얼마나 멀리 진행되었는지 확신 할 수 없었습니다 (따라서 "Epetra를 대체하기 위해": P). 나는 적어도 Belos 라이브러리 (즉, 타사 코드 주위의 래퍼를 기반으로하지 않는 Trilinos 솔버)가 Tpetra를 지원한다고 생각 했습니까?
Jesse Chan

Belos2가 있다고 생각합니다. 확실히, Trilinos 프로젝트는 Tpetra의 지원을 받고 있으며 향후 표준 패키지가 될 것입니다. 그래도 아직 거기에 없다고 생각합니다.
Wolfgang Bangerth

__float128Tpetra의 지원 조차도 쿼드 더블은 물론입니다. Tpetra은과 모든 헤더 독립 실행되지 않으며,이 경우에도, 같은 것들을 std::complex단지와 함께 작업 float하고 double.
Jed Brown

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.