Eu tenho um programa Mathematica que executa algumas integrais em 3 ou 4 dimensões usando o QuasiMonteCarlo
método O problema é que demora muito tempo para ser executado, a ponto de alguns desses cálculos não serem concluídos no tempo máximo de trabalho disponível em nosso cluster HPC. Então, eu estou pensando em reescrever o programa em C ++, que eu suspeito que irá acelerar por um grande fator.
Examinei os documentos da GSL e, embora existam seções sobre sequências quase aleatórias e integração regular do MC , não vejo nada que as junte. Além disso, uma ou duas pesquisas no Google não revelaram nada que parecesse uma implementação amplamente confiável. Quais são minhas opções para uma implementação bem testada da integração do QMC em C ++?
No interesse da consistência, eu preferiria usar algo próximo ao método Halton-Hammersley-Wozniakowski que o Mathematica implementa , se essa for uma opção.
Compile
a integral (para o código C) antes de passá-la para NIntegrate
, ou seja, NIntegrate
é lenta ou calcula a função? O uso de funções compiladas em C pode precisar de um pouco de trabalho extra em um cluster.