У меня есть программа Mathematica, которая выполняет некоторые интегралы в 3 или 4 измерениях, используя QuasiMonteCarlo
метод. Проблема в том, что запуск занимает очень много времени, и некоторые из этих вычислений не могут быть завершены в течение максимального рабочего времени, доступного в нашем кластере HPC. Поэтому я рассматриваю возможность переписать программу на C ++, что, я подозреваю, значительно ускорит ее.
Я посмотрел документы GSL, и хотя есть разделы о квазислучайных последовательностях и регулярной интеграции MC , я не вижу ничего, что могло бы их объединить. Кроме того, поиск в Google или два не обнаружили ничего похожего на широко доверенную реализацию. Какие у меня варианты для хорошо протестированной реализации интеграции QMC в C ++?
В интересах последовательности, я бы предпочел использовать метод , близкий к методу Халтона-Хаммерсли-Возняковского, который реализует Mathematica , если это вариант.
Compile
использовать интеграл (в C-код) перед его передачей NIntegrate
, т. Е. NIntegrate
Это медленно или вычисляет функцию? Использование C-скомпилированных функций может потребовать дополнительной работы в кластере.