commit ae0c8b9421def298a4bd7bb7ce0a451f360eba70
parent 7137c82aa0180fcad900ecd5dc80b4c22f4d5668
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 28 Feb 2022 16:11:47 +0100
Make simple the test on the rng_<type|state> variables
Diffstat:
2 files changed, 8 insertions(+), 26 deletions(-)
diff --git a/src/test_sdis_solve_probe2.c b/src/test_sdis_solve_probe2.c
@@ -16,6 +16,7 @@
#include "sdis.h"
#include "test_sdis_utils.h"
+#include <star/ssp.h>
#include <rsys/math.h>
#include <string.h>
@@ -170,10 +171,8 @@ main(int argc, char** argv)
struct ssp_rng* rng = NULL;
struct context ctx;
struct interf* interface_param = NULL;
- FILE* fp = NULL;
double ref;
const size_t N = 10000;
- const char* filename = "rng_state.txt";
size_t nreals;
size_t nfails;
int is_master_process;
@@ -278,20 +277,8 @@ main(int argc, char** argv)
CHK(nfails + nreals == N);
CHK(nfails < N/1000);
CHK(eq_eps(T.E, ref, 3*T.SE));
-
- /* Fetch the rng state */
- OK(sdis_estimator_get_rng_state(estimator, &rng));
- CHK(fp = fopen(filename, "w"));
- OK(ssp_rng_write(rng, fp));
- CHK(fclose(fp) == 0);
}
- barrier();
- CHK(fp = fopen(filename, "r"));
- OK(ssp_rng_create(NULL, SDIS_SOLVE_PROBE_ARGS_DEFAULT.rng_type, &rng));
- OK(ssp_rng_read(rng, fp));
- CHK(fclose(fp) == 0);
-
/* Check RNG type */
solve_args.rng_state = NULL;
solve_args.rng_type = SSP_RNG_TYPE_NULL;
@@ -307,9 +294,13 @@ main(int argc, char** argv)
OK(sdis_estimator_ref_put(estimator2));
}
+ /* Check the RNG state */
+ OK(ssp_rng_create(NULL, SSP_RNG_THREEFRY, &rng));
+ OK(ssp_rng_discard(rng, 31415926535)); /* Move the RNG state */
solve_args.rng_state = rng;
solve_args.rng_type = SSP_RNG_TYPE_NULL;
OK(sdis_solve_probe(scn, &solve_args, &estimator2));
+ OK(ssp_rng_ref_put(rng));
if(is_master_process) {
OK(sdis_estimator_get_temperature(estimator2, &T2));
CHK(eq_eps(T2.E, ref, 3*T2.SE));
@@ -317,7 +308,9 @@ main(int argc, char** argv)
OK(sdis_estimator_ref_put(estimator2));
}
- OK(ssp_rng_ref_put(rng));
+ /* Restore args */
+ solve_args.rng_state = SDIS_SOLVE_PROBE_ARGS_DEFAULT.rng_state;
+ solve_args.rng_type = SDIS_SOLVE_PROBE_ARGS_DEFAULT.rng_type;
/* Check green */
OK(sdis_solve_probe_green_function(scn, &solve_args, &green));
diff --git a/src/test_sdis_utils.h b/src/test_sdis_utils.h
@@ -263,17 +263,6 @@ free_default_device(struct sdis_device* dev)
}
/*******************************************************************************
- * Synchronisation
- ******************************************************************************/
-static INLINE void
-barrier(void)
-{
-#ifdef SDIS_ENABLE_MPI
- CHK(MPI_Barrier(MPI_COMM_WORLD) == MPI_SUCCESS);
-#endif
-}
-
-/*******************************************************************************
* Miscellaneous
******************************************************************************/
static INLINE void