Befintliga konvergensplattformar för dynamisk multitrådning ger inte repeterbara parallella slumptalsgeneratorer. I detta dokument föreslås att en mekanism som kallas stamtavla byggs in i runtime-systemet för att möjliggöra effektiv deterministisk parallell slumptalsgenerering. Experiment med open-source MIT Cilk runtime-systemet visar att omkostnaderna för att upprätthålla stamtavlan är försumbara. Närmare bestämt, på en svit av 10 riktmärken, har de relativa omkostnaderna för Cilk med stamtavla till den ursprungliga Cilk ett geometriskt medelvärde på mindre än 1%. Vi övertalade Intel att ändra sin kommersiella C/C++ kompilator, som tillhandahåller Cilk Plus concurrency plattform, att inkludera stamtavla, och vi byggde ett bibliotek implementation av en deterministisk parallell slumptalsgenerator som kallas DOTMIX som komprimerar stamtavlan och sedan "RC6-mixar" resultatet. Den statistiska kvaliteten hos DOTMIX är jämförbar med den populära Mersenne-twistern, men något långsammare än en icke-deterministisk parallellversion av denna effektiva och högkvalitativa slumptalsgenerator. Kostnaden för att ringa DOTMIX beror på "spanndjupet" av kallelsen. För en naiv Fibonacci beräkning med n = 40 som kallar DOTMIX i varje nod av beräkningen, detta "pris för determinism" är ungefär en faktor på 2,3 i körtiden över den icke-deterministiska Mersenne twister, men för mer realistiska tillämpningar med mindre intensiv användning av slumpmässiga tal - såsom en maximaloberoende-set algoritm, ett praktiskt samplesort program, och en Monte Carlo diskret-hämtning ansökan från QuantLib - den observerade "priset" var som mest 21%, och ibland mycket mindre. Dessutom, även om overheads var flera gånger större, program som använder DOTMIX bör vara tillräckligt snabb för felsökning ändamål, vilket är en viktig anledning till att önska repeterbarhet.
Leiserson m.fl. I REF föreslås en PRNG för deterministisk parallell slumpmässig nummergenerering.
Deterministic parallel random-number generation for dynamic-multithreading platforms
{'venue': "PPoPP '12", 'journal': None, 'mag_field_of_study': ['Computer Science']}