Ho un programma Mathematica che esegue alcuni integrali in 3 o 4 dimensioni usando il QuasiMonteCarlo
metodo. Il problema è che richiede un tempo fastidiosamente lungo per essere eseguito, al punto che alcuni di questi calcoli non possono essere completati nel tempo di lavoro massimo disponibile sul nostro cluster HPC. Quindi sto pensando di riscrivere il programma in C ++, che sospetto possa accelerarlo di molto.
Ho esaminato i documenti GSL e mentre ci sono sezioni sulle sequenze quasirandom e la normale integrazione MC , non vedo nulla che li unisca . Anche una o due ricerche su Google non hanno mostrato nulla che sembrasse un'implementazione ampiamente affidabile. Quali sono le mie opzioni per un'implementazione ben collaudata dell'integrazione QMC in C ++?
Nell'interesse della coerenza, preferirei usare qualcosa di simile al metodo Halton-Hammersley-Wozniakowski che Mathematica implementa , se questa è un'opzione.
Compile
l'integrale (al codice C) prima di passarlo a NIntegrate
, cioè è NIntegrate
lento o sta calcolando la funzione? L'uso delle funzioni compilate in C potrebbe tuttavia richiedere un po 'di lavoro in più su un cluster.