Package: tree-puzzle / 5.3~rc16+dfsg-9

use_debian_packaged_sprng.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
Description: Use Debian packaged libsprng
Author: Andreas Tille <tille@debian.org>
Last-Update: Mon, 08 Jul 2019 16:47:12 +0200
  ATTENTION: Please double check the change in src/util.c.
             The Debian packaged sprng seems to have a different
             interface for init_sprng (quoting from CHANGES.TEXT):
             
                               Changes in Version 2.0
                  ----------------------

        Using the previous version of SPRNG, a user can use only one of the
        SPRNG generators in one run of the program. The objective of the new
        version is to combine the current random number generators (RNGs) into
        a single library so that a user can use all of them in a single program
        at a same time.
   
        The user now is able to and needs to specify the type of RNG when a
        random number stream is initialized. We add one integer argument
        rng_type to the front of the argument list of the function init_sprng.

        int *init_sprng(int rng_type, 
                int stream_number, int nstreams, int seed, int rng_parameter) 
           SPRNG_POINTER init_sprng(integer rng_type,
                           integer streamnum, integer nstreams,
                           integer seed, integer param)


        User can sprcify one of the follows for rng_type:
         SPRNG_LFG 
         SPRNG_LCG 
         SPRNG_LCG64 
         SPRNG_CMRG 
         SPRNG_MLFG 
         SPRNG_PMLCG 
        The following macros are added to sprng.h and sprng_f.h:

        #define SPRNG_LFG       0
        #define SPRNG_LCG       1
        #define SPRNG_LCG64 2
        #define SPRNG_CMRG      3
        #define SPRNG_MLFG      4
        #define SPRNG_PMLCG 5

        For simple interface, a user can only have one random number stream at
        one time since he doesn't specify stream ID.  
        The default generator is "SPRNG_LFG".
        User still can change RNG at runtime by calling init_sprng:
        int *init_sprng(int rng_type, 
                int seed, int rng_parameter) 
           SPRNG_POINTER init_sprng(integer rng_type,
                           integer seed, integer param)


--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,7 +15,7 @@
 #  ($Id$)
 #
 
-SUBDIRS = sprng
+# SUBDIRS = sprng
 bin_PROGRAMS = puzzle @PPUZZLE@
 EXTRA_PROGRAMS = ppuzzle
 EXTRA_DIST = \
@@ -30,8 +30,8 @@ EXTRA_DIST = \
 #SPRNG_OBJ = makeseed.$(OBJEXT) store.$(OBJEXT) memory.$(OBJEXT) checkid.$(OBJEXT) lcg64.$(OBJEXT) primes-lcg64.$(OBJEXT) 
 #SPRNG_DIR_OBJ = sprng/makeseed.$(OBJEXT) sprng/store.$(OBJEXT) sprng/memory.$(OBJEXT) sprng/checkid.$(OBJEXT) sprng/lcg64.$(OBJEXT) sprng/primes-lcg64.$(OBJEXT) 
 ### MLFG - multiplicative lagged Fibonacci generator
-SPRNG_OBJ = mlfg.$(OBJEXT) makeseed.$(OBJEXT) memory.$(OBJEXT) checkid.$(OBJEXT) store.$(OBJEXT)
-SPRNG_DIR_OBJ = sprng/mlfg.$(OBJEXT) sprng/makeseed.$(OBJEXT) sprng/memory.$(OBJEXT) sprng/checkid.$(OBJEXT) sprng/store.$(OBJEXT)
+# SPRNG_OBJ = mlfg.$(OBJEXT) makeseed.$(OBJEXT) memory.$(OBJEXT) checkid.$(OBJEXT) store.$(OBJEXT)
+# SPRNG_DIR_OBJ = sprng/mlfg.$(OBJEXT) sprng/makeseed.$(OBJEXT) sprng/memory.$(OBJEXT) sprng/checkid.$(OBJEXT) sprng/store.$(OBJEXT)
 
 #SPRNG_OBJ = sprng/makeseed.$(OBJEXT) sprng/store.$(OBJEXT) sprng/memory.$(OBJEXT) sprng/checkid.$(OBJEXT) sprng/lcg64.$(OBJEXT) sprng/primes-lcg64.$(OBJEXT) 
 
@@ -49,13 +49,13 @@ SPRNG_DIR_OBJ = sprng/mlfg.$(OBJEXT) spr
 
 puzzle_SOURCES = gamma.c ml1.c ml2.c mlparam.c model1.c model2.c puzzle1.c puzzle2.c pstep.c util.c consensus.c treesort.c treetest.c ml.h util.h puzzle.h pstep.h gamma.h consensus.h treesort.h treetest.h
 #puzzle_LDADD = sgamma.o sml1.o sml2.o smlparam.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o spstep.o sutil.o sconsensus.o streesort.o sprng/liblcg64.a
-puzzle_LDADD = sgamma.$(OBJEXT) sml1.$(OBJEXT) sml2.$(OBJEXT) smlparam.$(OBJEXT) smodel1.$(OBJEXT) smodel2.$(OBJEXT) spuzzle1.$(OBJEXT) spuzzle2.$(OBJEXT) spstep.$(OBJEXT) sutil.$(OBJEXT) sconsensus.$(OBJEXT) streesort.$(OBJEXT) streetest.$(OBJEXT) 
+puzzle_LDADD = sgamma.$(OBJEXT) sml1.$(OBJEXT) sml2.$(OBJEXT) smlparam.$(OBJEXT) smodel1.$(OBJEXT) smodel2.$(OBJEXT) spuzzle1.$(OBJEXT) spuzzle2.$(OBJEXT) spstep.$(OBJEXT) sutil.$(OBJEXT) sconsensus.$(OBJEXT) streesort.$(OBJEXT) streetest.$(OBJEXT)
 
-TPINCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/sprng 
+TPINCLUDES = -I. -I.. -I$(srcdir) -I/usr/include/sprng 
 SDEFS =
 SCFLAGS = 
 SLDFLAGS = 
-SLDLIBS = @LIBS@
+SLDLIBS = -lsprng @LIBS@
 
 SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(TPINCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) 
 SCCLD = $(CC)
@@ -68,7 +68,7 @@ PCC = @MPICC@
 PDEFS = -DPARALLEL
 PCFLAGS = 
 PLDFLAGS = 
-PLDLIBS = @LIBS@ @MPILIBS@
+PLDLIBS = -lsprng @LIBS@ @MPILIBS@
 
 PCOMPILE = $(PCC) $(PDEFS) $(DEFS) $(TPINCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) 
 PCCLD = $(PCC)
@@ -76,7 +76,7 @@ PLINK = $(PCCLD) $(AM_CFLAGS) $(PCFLAGS)
 
 
 make-sprng-objs:
-	cd sprng && $(MAKE) $(SPRNG_OBJ)
+	echo "Use Debian packaged libsprng2."
 
  
 puzzle$(EXEEXT): $(puzzle_LDADD) $(puzzle_SOURCES) make-sprng-objs Makefile
--- a/configure.ac
+++ b/configure.ac
@@ -179,6 +179,6 @@ dnl AC_CHECK_FUNCS(xdrstdio_create)
 dnl AC_CHECK_FUNCS(xdr_destroy)
 dnl AC_CHECK_FUNCS(xdr_inline)
 
-AC_CONFIG_FILES([Makefile src/Makefile src/sprng/Makefile doc/Makefile data/Makefile tests/Makefile])
+AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile data/Makefile tests/Makefile])
 dnl AC_CONFIG_FILES([Makefile src/Makefile src/sprng/Makefile doc/Makefile doc/fig/Makefile data/Makefile tests/Makefile])
 AC_OUTPUT
--- a/src/util.c
+++ b/src/util.c
@@ -626,7 +626,7 @@ int initrandom(int seed)
 #  ifndef PARALLEL
 	   fprintf(STDOUT,"Using SPRNG -- Scalable Parallel Random Number Generator\n");
 	   fflush(STDOUT);
-	   randstream = init_sprng(0,1,seed,SPRNG_DEFAULT); /*init stream*/
+	   randstream = init_sprng(SPRNG_LFG, 0,1,seed,SPRNG_DEFAULT); /*init stream*/
 
 #	   ifdef RANDVERBOSE1
 	      fprintf(STDOUT, "!!! random seed set to %d !!!\n", seed);
@@ -639,7 +639,7 @@ int initrandom(int seed)
 	     fflush(STDOUT);
 	   }
 	   /* MPI_Bcast(&seed, 1, MPI_UNSIGNED, PP_MyMaster, MPI_COMM_WORLD); */
-	   randstream = init_sprng(PP_Myid,PP_NumProcs,seed,SPRNG_DEFAULT); /*initialize stream*/
+	   randstream = init_sprng(SPRNG_LFG, PP_Myid,PP_NumProcs,seed,SPRNG_DEFAULT); /*initialize stream*/
 #	   ifdef RANDVERBOSE1
 	      fprintf(STDOUT, "(%2d) !!! random seed set to %d !!!\n", PP_Myid, seed);
 	      fprintf(STDOUT, " Printing information about new stream\n");