Warum bleibt die Generierung der Sobol-Sequenz in SciPy hängen, nachdem 25 % der Sequenz abgeschlossen sind?Python

Python-Programme
Anonymous
 Warum bleibt die Generierung der Sobol-Sequenz in SciPy hängen, nachdem 25 % der Sequenz abgeschlossen sind?

Post by Anonymous »

Ich mache eine umfangreiche Quasi-Monte-Carlo-Simulation mit der Sobol-Sequenz. Ich brauche den Generator, um über 2 ** 30 Samples erstellen zu können. SciPy sagt, dass der Generator auf 2 ** 30 begrenzt ist.
Es heißt auch, dass es durch Modifizieren der Argumentbits möglich sein sollte, die Grenze auf ein Maximum von 2 ** 64 anzuheben (das reicht mir).

Code: Select all

    sampler = qmc.Sobol(d=2, scramble=True, bits=64)
Allerdings stoße ich immer noch auf den gleichen Fehler, bei genau 25 Prozent der Funktion stoppt alles ohne Fehlermeldung. Ich bin mir sicher, dass das Problem im Generator liegt, weil ich versucht habe, ihn in die for-Schleife zu verschieben, und es hat funktioniert. Allerdings könnte die Neugenerierung der Sobol-Sequenz jedes Mal zu mathematischen Problemen mit den QMC-Eigenschaften führen.
Hier ist der Code in einer minimal reproduzierbaren Version

Code: Select all

from scipy.stats import qmc
from tqdm import tqdm

def run_simulation_batch_cupy_QMC(samples, a):
batch_size = 2 ** 27
n_batches = samples // batch_size
sampler = qmc.Sobol(d=2, scramble=True, bits=64)

for i in tqdm(range(n_batches)):

qmc_samples = sampler.random(n=batch_size)

#Here there is some computation I cut off

if __name__ == "__main__":

samples = 2 ** 34             #Samples must be, to get the bug, greater than 10 ** 10 and a power of 2 so 2**34
a_values = [1.1, 1.2, 1.3]      #Example

for a in tqdm(a_values):
run_simulation_batch_cupy_QMC(samples, a)

Ich habe erwartet, dass die Funktion die Generierung abschließt. Beim Überwachen der GPU und anderer Dinge kann ich sagen, dass ich keinen Speicherüberlauf bekomme. Die GPU stoppt die Berechnung genau bei 25 %.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post