From 3b29ad7e4534fa397136204d41c2823bd9f96df4 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Mon, 26 Jun 2023 18:44:04 +0100 Subject: [PATCH] more work on squiggle_c --- C/C-01-simple/samples | Bin 18968 -> 17384 bytes .../01_one_sample}/example | Bin C/squiggle_c/examples/01_one_sample/example.c | 50 +++++++++++++++++ .../01_one_sample}/makefile | 0 C/squiggle_c/examples/02_many_samples/example | Bin 0 -> 17696 bytes .../02_many_samples}/example.c | 5 +- .../examples/02_many_samples/makefile | 53 ++++++++++++++++++ 7 files changed, 104 insertions(+), 4 deletions(-) rename C/squiggle_c/{example_simple => examples/01_one_sample}/example (100%) create mode 100644 C/squiggle_c/examples/01_one_sample/example.c rename C/squiggle_c/{example_simple => examples/01_one_sample}/makefile (100%) create mode 100755 C/squiggle_c/examples/02_many_samples/example rename C/squiggle_c/{example_simple => examples/02_many_samples}/example.c (89%) create mode 100644 C/squiggle_c/examples/02_many_samples/makefile diff --git a/C/C-01-simple/samples b/C/C-01-simple/samples index b16b392acb02aaf9d00553425f6f56c2d8a7626c..2495363b35e136dcf103153d7a4db67f35e48940 100755 GIT binary patch literal 17384 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 LItLq*i533|Yu!zZ literal 18968 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 diff --git a/C/squiggle_c/example_simple/example b/C/squiggle_c/examples/01_one_sample/example similarity index 100% rename from C/squiggle_c/example_simple/example rename to C/squiggle_c/examples/01_one_sample/example diff --git a/C/squiggle_c/examples/01_one_sample/example.c b/C/squiggle_c/examples/01_one_sample/example.c new file mode 100644 index 00000000..bbea2ebb --- /dev/null +++ b/C/squiggle_c/examples/01_one_sample/example.c @@ -0,0 +1,50 @@ +#include "../../squiggle.h" +#include +#include +#include + +// Estimate functions +float sample_0(uint32_t* seed) +{ + return 0; +} + +float sample_1(uint32_t* seed) +{ + return 1; +} + +float sample_few(uint32_t* seed) +{ + return random_to(1, 3, seed); +} + +float sample_many(uint32_t* seed) +{ + return random_to(2, 10, seed); +} + +int main(){ + // set randomness seed + uint32_t* seed = malloc(sizeof(uint32_t)); + *seed = 1000; // xorshift can't start with 0 + + float p_a = 0.8; + float p_b = 0.5; + float p_c = p_a * p_b; + + int n_dists = 4; + float weights[] = { 1 - p_c, p_c / 2, p_c / 4, p_c / 4 }; + float (*samplers[])(uint32_t*) = { sample_0, sample_1, sample_few, sample_many }; + + float result_one = mixture(samplers, weights, n_dists, seed); + printf("result_one: %f\n", result_one); +} + +/* +Aggregation mechanisms: +- Quantiles (requires a sort) +- Sum +- Average +- Std +*/ diff --git a/C/squiggle_c/example_simple/makefile b/C/squiggle_c/examples/01_one_sample/makefile similarity index 100% rename from C/squiggle_c/example_simple/makefile rename to C/squiggle_c/examples/01_one_sample/makefile diff --git a/C/squiggle_c/examples/02_many_samples/example b/C/squiggle_c/examples/02_many_samples/example new file mode 100755 index 0000000000000000000000000000000000000000..b3db352fd1b79c50dd3ef781efa445004e27efc9 GIT binary patch literal 17696 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 #include #include +#include "../../squiggle.h" // Estimate functions float sample_0(uint32_t* seed) @@ -37,9 +37,6 @@ int main(){ float weights[] = { 1 - p_c, p_c / 2, p_c / 4, p_c / 4 }; float (*samplers[])(uint32_t*) = { sample_0, sample_1, sample_few, sample_many }; - float result_one = mixture(samplers, weights, n_dists, seed); - printf("result_one: %f\n", result_one); - int n_samples = 1000000; float* result_many = (float *) malloc(n_samples * sizeof(float)); for(int i=0; i&1 >/dev/null | grep real | awk '{print $$2}' ); echo "scale=2; 1000 * $$t / 100" | bc | sed "s|^|Time using 1 thread: |" | sed 's|$$|ms|' && echo + +## Profiling + +profile-linux: + echo "Requires perf, which depends on the kernel version, and might be in linux-tools package or similar" + echo "Must be run as sudo" + $(CC) $(SRC) $(MATH) -o $(OUTPUT) + sudo perf record $(OUTPUT) + sudo perf report + rm perf.data