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