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.
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.