5 #include "../include/mycuda.h"
6 #include "../include/mycuda_random.h"
9 using namespace mycuda;
14 int verify(
float * z,
int n,
float * q,
float * d,
int nq ) {
15 printf(
" Expected Realized\n" );
16 printf(
"================================\n" );
17 for (
int i=0; i<nq; i++) {
19 for (
int j=0; j<
n; j++) {
20 if ( ( i==0 || z[j]>q[i-1] ) && z[j]<=q[i] ) n_realized++;
22 printf(
"Quantile %d: %9.6f %9.6f\n", i, d[i],
float(n_realized)/n );
33 const int gridsize = 64;
35 const int seed = 27853;
37 float * z = mapped_malloc<float>(
n);
38 curandState_t * state = device_malloc<curandState>(blocksize*gridsize);
39 mycuda_random::random_init <<< gridsize, blocksize >>> ( state, seed, blocksize*gridsize );
44 mycuda_random::random_uniform <<< gridsize, blocksize >>> ( z, state,
n );
45 cudaDeviceSynchronize();
48 printf(
"\n\nUniform\n==============\n" );
49 for (
int i=0; i<50; i++) printf(
"%8.4f\n", z[i] );
53 for (
int i=0;i<10;i++) {
61 mycuda_random::random_normal <<< gridsize, blocksize >>> ( z, state,
n );
62 cudaDeviceSynchronize();
65 printf(
"\n\nNormal\n==============\n" );
66 for (
int i=0; i<50; i++) printf(
"%8.4f\n", z[i] );
69 for (
int i=0;i<10;i++) {