J'ai un programme Mathematica qui effectue des intégrales en 3 ou 4 dimensions en utilisant la QuasiMonteCarlo
méthode. Le problème est qu'il prend un temps énormément long pour s'exécuter, au point que certains de ces calculs ne peuvent pas se terminer dans le temps de travail maximum disponible sur notre cluster HPC. J'envisage donc de réécrire le programme en C ++, ce qui, je le soupçonne, l'accélérera considérablement.
J'ai regardé les documents GSL et bien qu'il y ait des sections sur les séquences quasi aléatoires et l' intégration régulière de MC , je ne vois rien qui les rassemble. De plus, une ou deux recherches sur Google n'ont rien révélé qui ressemblait à une implémentation largement reconnue. Quelles sont mes options pour une implémentation bien testée de l'intégration QMC en C ++?
Dans un souci de cohérence, je préférerais utiliser quelque chose de proche de la méthode Halton-Hammersley-Wozniakowski que Mathematica implémente , si c'est une option.
la source
Compile
l'intégrale (au code C) avant de la passer àNIntegrate
, c'est- à -dire est-NIntegrate
ce lent ou calcul de la fonction? L'utilisation de fonctions compilées en C peut cependant nécessiter un peu de travail supplémentaire sur un cluster.Réponses:
Étant donné la pénurie apparente d'intégrateurs quasi Monte Carlo pour C ++ (ou C), j'ai écrit ma propre implémentation à utiliser avec GSL. Ce n'est pas particulièrement bien testé, ni ne met en œuvre l'algorithme de Mathematica, mais il devrait être mieux que rien.
la source