This repository was archived by the owner on Sep 30, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -158,8 +158,13 @@ AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[
158158
159159 AC_MSG_RESULT([$event_args ])
160160
161+ # We define "random" to be "opal_random" so that Libevent will not
162+ # use random(3) internally (and potentially unexpectedly perturb
163+ # values returned by rand(3) to the application).
164+
165+ CPPFLAGS=" $CPPFLAGS -Drandom=opal_random"
161166 OPAL_CONFIG_SUBDIR([$libevent_basedir /libevent],
162- [$event_args $opal_subdir_args ],
167+ [$event_args $opal_subdir_args ' CPPFLAGS=$CPPFLAGS ' ],
163168 [libevent_happy= " yes" ], [libevent_happy= " no" ])
164169 if test " $libevent_happy " = " no" ; then
165170 AC_MSG_WARN([Event library failed to configure])
Original file line number Diff line number Diff line change 1010
1111#include "opal_config.h"
1212
13+ #include <string.h>
14+
1315#include "alfg.h"
1416
1517/* Mask corresponding to the primitive polynomial
@@ -52,6 +54,9 @@ static uint32_t galois(unsigned int *seed){
5254 return lsb ;
5355}
5456
57+ /* OPAL global rng buffer */
58+ static opal_rng_buff_t alfg_buffer ;
59+
5560/**
5661 * @brief Routine to seed the ALFG register
5762 *
@@ -80,6 +85,8 @@ int opal_srand(opal_rng_buff_t *buff, uint32_t seed) {
8085 buff -> alfg [j ] = buff -> alfg [j ] ^ ((galois (& seed_cpy ))<<i );
8186 }
8287 }
88+ /* copy the ALFG to the global buffer */
89+ memcpy (& alfg_buffer , buff , sizeof (alfg_buffer ));
8390
8491 return 1 ;
8592
@@ -114,4 +121,12 @@ uint32_t opal_rand(opal_rng_buff_t *buff){
114121
115122}
116123
117-
124+ /**
125+ * @brief A wrapper for opal_rand() with our global ALFG buffer;
126+ *
127+ * @param[in] none
128+ * @param[out] int, the same as normal rand(3)
129+ */
130+ int opal_random (void ){
131+ return (int )opal_rand (& alfg_buffer );
132+ }
Original file line number Diff line number Diff line change @@ -32,4 +32,6 @@ OPAL_DECLSPEC int opal_srand(opal_rng_buff_t *buff, uint32_t seed);
3232
3333OPAL_DECLSPEC uint32_t opal_rand (opal_rng_buff_t * buff );
3434
35+ OPAL_DECLSPEC int opal_random (void );
36+
3537#endif /* OPAL_ALFG_H */
You can’t perform that action at this time.
0 commit comments