Mam program Mathematica, który wykonuje niektóre całki w 3 lub 4 wymiarach przy użyciu tej QuasiMonteCarlo
metody. Problem polega na tym, że uruchomienie zajmuje denerwująco dużo czasu, do momentu, gdy niektóre z tych obliczeń nie mogą się zakończyć w maksymalnym czasie pracy dostępnym w naszym klastrze HPC. Zastanawiam się więc nad przepisaniem programu w C ++, co, jak podejrzewam, przyspieszy go w dużym stopniu.
Spojrzałem na dokumenty GSL i chociaż są sekcje na temat quasirandomowych sekwencji i regularnej integracji MC , nie widzę niczego, co je łączy. Również wyszukiwarka Google nie wykryła niczego, co wyglądałoby jak zaufane wdrożenie. Jakie są moje opcje dobrze przetestowanej implementacji integracji QMC w C ++?
W trosce o spójność wolałbym zastosować coś podobnego do metody Halton-Hammersley-Woźniakowskiego, którą Mathematica implementuje , jeśli taka jest opcja.
Compile
całkę (do kodu C) przed jej przekazaniem NIntegrate
, tj. Czy jest to NIntegrate
powolne czy obliczanie funkcji? Jednak korzystanie z funkcji skompilowanych w języku C może wymagać nieco dodatkowej pracy w klastrze.