이 QuasiMonteCarlo
방법을 사용하여 3 또는 4 차원으로 일부 적분을 수행하는 Mathematica 프로그램이 있습니다. 문제는 HPC 클러스터에서 사용할 수있는 최대 작업 시간으로 이러한 계산 중 일부를 완료 할 수없는 시점까지 실행하는 데 시간이 오래 걸린다는 것입니다. 그래서 C ++로 프로그램을 다시 작성하는 것을 고려하고 있습니다.
나는 GSL 문서를 보았고 유사 시퀀스 와 규칙적인 MC 통합 에 대한 섹션이 있지만 그것들을 하나로 묶는 것은 보이지 않습니다. 또한 Google 검색 중 하나 또는 두 개는 널리 신뢰할 수있는 구현처럼 보이지 않습니다. C ++에서 잘 테스트 된 QMC 통합 구현을위한 옵션은 무엇입니까?
일관성을 위해 Mathematica가 구현 하는 Halton-Hammersley-Wozniakowski 방법에 가까운 것을 사용 하는 것이 좋습니다.
2
Stackoverflow에 적분을 게시하고 무슨 일이 일어나는지 살펴볼 수 있습니다. Mathematica는 기계 정밀도를 위해 MKL을 기반으로하므로 매우 효율적입니다.
귀하의 질문에 대한 답변은 아니지만,
—
Szabolcs
Compile
전달하기 전에 (C 코드에) 적분 을 시도했는지 궁금합니다 NIntegrate
. 즉 NIntegrate
속도가 느리거나 함수를 계산합니까? C 컴파일 된 함수를 사용하려면 클러스터에서 약간의 추가 작업이 필요할 수 있습니다.
컴파일하는 것은 좋은 생각처럼 들리지 않습니다. 시도해 볼게요. 이러한 각 계산은 내 추정에 따라 약 5 백만 번 함수를 평가하며 전체 계산에 약 3 시간이 걸리기 때문에 함수 평가 당 2ms이므로 순수한 수치 계산에서는 다소 느립니다.
—
David Z
@ruebenko : 나는 그것을 명심할 것입니다.
—
David Z
CUBA 라이브러리에는 저 차원 문제에 대한 많은 알고리즘이 있습니다. Mathematica 인터페이스도 있습니다. feynarts.de/cuba
—
dls