Mikroprocesorski Sistemi Domai zadatak Maxeler Tema Quasi that

  • Slides: 10
Download presentation
Mikroprocesorski Sistemi Domaći zadatak - Maxeler Tema: Quasi- (that is, Sub-) Random Sequences Autor:

Mikroprocesorski Sistemi Domaći zadatak - Maxeler Tema: Quasi- (that is, Sub-) Random Sequences Autor: Stefan Ilijevski (0526/2012)

Random sekvence? 2/10

Random sekvence? 2/10

Halton-ove sekvence Koraci za kreiranje Halton-ove sekvence: Zapisati odredjeni broj N u sistemu za

Halton-ove sekvence Koraci za kreiranje Halton-ove sekvence: Zapisati odredjeni broj N u sistemu za bazu B Obrnuti redosled brojeva Postaviti broj iza decimalnog zareza Najbolje za svaki broj koristiti drugi broj za bazu B J = 17 122 221 b=3 221 0. 221 122 3/10

Dovoljno uniformna raspodela? 4/10

Dovoljno uniformna raspodela? 4/10

Sobol-ove sekvence Izmedju nule I jedinice Direkcioni brojevi I XOR Uniformnije od Halton-ove? Da

Sobol-ove sekvence Izmedju nule I jedinice Direkcioni brojevi I XOR Uniformnije od Halton-ove? Da li je dovoljno efikasan? Sobol Halton 5/10

Antonov and Saleev varijanta Problem za j-ti broj? Gray code Generisanje direkcionih brojeva? 6/10

Antonov and Saleev varijanta Problem za j-ti broj? Gray code Generisanje direkcionih brojeva? 6/10

Algoritam na CPU Dva dela algoritma Void sobseq(…) { Inicijalizacija if (init) { Generisanje

Algoritam na CPU Dva dela algoritma Void sobseq(…) { Inicijalizacija if (init) { Generisanje slučajnog broja /*inicijalizacija*/. . . Potencijal za ubrzanje? } else { /*generisanje slučajnog broja*/. . . //operacije xor-ovanja. . . } } 7/10

Maxeler dolazi u pomoć else { im = in++; for (j = 1; j

Maxeler dolazi u pomoć else { im = in++; for (j = 1; j <= MAXBIT; j++) { if (!(im & 1)) break; im >>= 1; } DFEVar ix = io. input("ix", dfe. UInt); DFEVar iv = io. input("iv", dfe. UInt); DFEVar fac = io. scalar. Input("fac", dfe. Float(8, 24)); //ix[k] ^= iv[im+k]; if (j > MAXBIT) nrerror("MAXBIT too small in sobseq "); im = (j-1) * MAXDIM; for (k = 1; k <= IMIN(*n, MAXDIM); k++) { ix[k] ^= iv[im+k]; x[k] = ix[k] * fac; //x[k] = ix[k] * fac; DFEVar ix. Out = ix. Out ^ iv; DFEVar x = ix * fac; io. output("ix. Out", ix. Out, dfe. UInt); io. output("x", x, dfe. Float(8, 24)); } } 8/10

SPEED! 9/10

SPEED! 9/10

References William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery :

References William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery : Numerical Recipes in C The Art of Scientific Computing Second Edition https: //en. wikipedia. org/wiki/Sobol_sequence http: //lancaster. ac. uk 10/10