diff --git a/examples/more/11_billion_lognormals_paralell/example b/examples/more/11_billion_lognormals_paralell/example new file mode 100755 index 0000000..31ba715 Binary files /dev/null and b/examples/more/11_billion_lognormals_paralell/example differ diff --git a/examples/more/11_billion_lognormals_paralell/example.c b/examples/more/11_billion_lognormals_paralell/example.c new file mode 100644 index 0000000..9e1155c --- /dev/null +++ b/examples/more/11_billion_lognormals_paralell/example.c @@ -0,0 +1,30 @@ +#include "../../../squiggle.h" +#include "../../../squiggle_more.h" +#include +#include +#include + +// Estimate functions +int main() +{ + // set randomness seed + // uint64_t* seed = malloc(sizeof(uint64_t)); + // *seed = 1000; // xorshift can't start with 0 + // ^ not necessary, because parallel_sampler takes care of the seed. + + int n_samples = 1000 * 1000 * 1000; + int n_threads = 16; + double sampler(uint64_t* seed){ + return sample_lognormal(0, 10, seed); + } + double* results = malloc(n_samples * sizeof(double)); + + parallel_sampler(sampler, results, n_threads, n_samples); + double avg = array_sum(results, n_samples)/n_samples; + printf("Average of 1B lognormal(0,10): %f", avg); + + free(results); + + // free(seed); + // ^ not necessary, because parallel_sampler takes care of the seed. +}