Заміна інтеграції QuasiMonteCarlo Mathematica у C ++


12

У мене є програма Mathematica, яка виконує деякі інтеграли в 3 або 4 вимірах за допомогою QuasiMonteCarloметоду. Проблема полягає в тому, що для запуску потрібен прикро довгий час, до тих пір, коли деякі з цих обчислень не зможуть виконатись за максимальний час роботи, наявний у нашому кластері HPC. Тому я розглядаю можливість переписати програму на C ++, що, підозрюю, пришвидшить її великим фактором.

Я переглянув документи GSL, і, хоча є розділи про квазі випадкові послідовності та регулярну інтеграцію в MC , я не бачу нічого, що їх об'єднує. Крім того, пошук у Google чи два не виявив нічого, що було б схожим на надійну реалізацію. Які мої варіанти для добре перевіреної реалізації інтеграції QMC в C ++?

В інтересах послідовності я вважаю за краще скористатися чимось близьким до методу Халтона-Хаммерслі-Возняковського, який реалізує Mathematica , якщо це варіант.


2
Ви можете опублікувати інтеграл на Stackoverflow, і ми можемо ознайомитись з тим, що відбувається. Зауважте, Mathematica заснована на MKL для машинної точності, що є досить ефективним.

2
Не відповідь на ваше запитання, але мені було цікаво, чи ви пробували Compileінтеграл (до коду С) перед тим, як передавати його NIntegrate, тобто це NIntegrateповільно чи обчислюєте функцію? Використання скомпільованих функцій на C може потребувати трохи додаткової роботи над кластером.
Szabolcs

1
Компіляція звучить як дуже гарна ідея, я про це не думав. Я спробую. Кожен з цих обчислень оцінює функцію приблизно в 5 мільйонів разів, за моєю оцінкою, і оскільки все обчислення займає близько 3 годин, це 2 мс на оцінку функції, що здається досить повільним для деяких чисто числових обчислень.
Девід Z

@ruebenko: Я буду пам'ятати про це.
Девід Z

2
Бібліотека CUBA має ряд алгоритмів для задач з низькими розмірами. Він навіть має інтерфейс Mathematica. feynarts.de/cuba
dls

Відповіді:


1

З огляду на очевидний недолік квазі-Монте-Карло інтеграторів для C ++ (або C), я написав власну реалізацію для використання з GSL. Він не особливо добре перевірений, не реалізує алгоритм Mathematica, але він повинен бути кращим, ніж нічого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.