wrestling to compile sprng as RPM for a Rocks Cluster. Long rambling whining request for help :)
Paul,
rsprng is suggested (not required) in Rmpi. I am using rlecuyer. rlecuyer
can be simply installed in R as
install.packages("rlecuyer")
To use rlecuyer in Rmpi, run mpi.setup.rngstream(). Otherwise use
mpi.setup.sprng() for SRRNG.
Hao
Paul Johnson wrote:
Anybody have sprng (scalable parallel random number generator) RPM and SRPM files for RedHat/Centos with MPI? There are various posts about troubles compiling it, but I don't find details on the fixes. Many R packages for HPC require Rmpi, Rmpi requires rsprng, which in turn requires the C++/Fortran library SPRNG (capitalized? or not?). SPRNG is here, http://sprng.fsu.edu/. AFAICT, it is now in version 4. The source (dated 6/7/2007) is available here: http://sprng.fsu.edu/Version4.0/sprng4.tar.gz I've been trying to compile that on Centos so I can build an RPM for a Cluster. There are a number of wrinkles with this compile. It has a standard GNU INSTALL file, which is encouraging. But 1. The c++ code in the sprng4 package is not consistent with the guidelines of the current gcc c++ compiler. There are quite a few little changes to make, like changing #include <iostream.h> to #include <iostream> I am attaching a patch file which includes the changes that are, as far as I can tell, MINIMALLY necessary to get sprng4 to compile, except for the EXAMPLES directory. In the sprng4 source directory, this patch requires -p2, as in patch -p2 < sprng-4.patch 2. The build in the EXAMPLES directory has some big problems. Even after applying that patch, the "make" fails with errors in [1]. The make will complete, however, if we delete the EXAMPLES directory from the Makefile in the top level. That is, change: SUBDIRS = SRC lib check TESTS include EXAMPLES . to SUBDIRS = SRC lib check TESTS include . After applying the sprng-4.patch (attached), running the configure, and then making that one change, then the make will finish. 3. The "make install" step does not copy the include files into the install directory. I mean, if you run "ls" in the install folder, there is "bin", "lib" and "share", but no "include". I found many hints about the required fixes in the packaging efforts of Eugeny A. Rostovtsev (REAL) <real at altlinux.org> in the ALTLINUX distribution. The SRPM file supplies "sprng4.tar.gz", but it is not the original source code package from the SPRNG authors. The packaging is a little atypical for the RPM framework, as one is supposed to supply the original "pristine" source and a patch. Nevertheless, it is very informative. The patch I attach here includes the changes incorporated in the ALTLINUX package (after some cleanup). Most changes are C++ cleanup. In the SPEC file that Mr. Rostovtsev uses in ALTLINUX, he deals with the "lack of installed include files" problem by copying the *.h files "by hand" after running "make install". For your reference, I'm attaching that SPEC file so you can see for yourself. The SPEC file assumes the MPI implementation has an executable file called "mpivars.sh", and there is no such file in OpenMPI 1.3. In Debian/Ubuntu, I see Dirk Eddelbuettel supplies libsprng-2. I'm trying to see how that compiles. The source code on that one is pretty old. If I can't figure out sprng4, I will go back and work more on sprng-2 following Dirk's lead. I find also Nakama's mention of troubles compiling sprng4 and some proposed patches: http://prs.ism.ac.jp/~nakama/mascagni/ He proposes patches and fixes, but I can't make them compile AT ALL. I notice those patches were proposed here about 1.5 years ago. If you have ideas, I'd be glad to hear them. In the interim, I'm going to study how Dirk compiled & installed SPRNG2 to see if I can make an RPM that way. pj [1] mpif77 -Wl,-R/usr/local/libexec/openmpi/lib -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../include -DSPRNG_MPI -g -O2 -c -o sprngf_mpi_tmp-sprngf_mpi.o `test -f 'sprngf_mpi.F' || echo './'`sprngf_mpi.F mpif77 -Wl,-R/usr/local/libexec/openmpi/lib -g -O2 -o sprngf_mpi.tmp -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -Wl,-R/usr/local/libexec/openmpi/lib --showme:link sprngf_mpi_tmp-sprngf_mpi.o -L../../lib -lsprng -lm -lstdc++ -lm -pthread -Wl,-R/usr/local/libexec/openmpi/lib -g -O2 -o sprngf_mpi.tmp -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -Wl,-R/usr/local/libexec/openmpi/lib sprngf_mpi_tmp-sprngf_mpi.o -L../../lib -lsprng -lm -lstdc++ -lm -L/usr/lib/openmpi/lib -lmpi_f77 -lmpi -lopen-rte -lopen-pal -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl mpif77 -Wl,-R/usr/local/libexec/openmpi/lib -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../include -DSPRNG_MPI -g -O2 -c -o sprngf_simple_mpi_tmp-sprngf-simple_mpi.o `test -f 'sprngf-simple_mpi.F' || echo './'`sprngf-simple_mpi.F mpif77 -Wl,-R/usr/local/libexec/openmpi/lib -g -O2 -o sprngf-simple_mpi.tmp -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -Wl,-R/usr/local/libexec/openmpi/lib --showme:link sprngf_simple_mpi_tmp-sprngf-simple_mpi.o -L../../lib -lsprng -lm -lstdc++ -lm -pthread -Wl,-R/usr/local/libexec/openmpi/lib -g -O2 -o sprngf-simple_mpi.tmp -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -Wl,-R/usr/local/libexec/openmpi/lib sprngf_simple_mpi_tmp-sprngf-simple_mpi.o -L../../lib -lsprng -lm -lstdc++ -lm -L/usr/lib/openmpi/lib -lmpi_f77 -lmpi -lopen-rte -lopen-pal -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl mv: cannot stat `sprng-simple_mpi.tmp': No such file or directory make[4]: *** [sprng_mpi_test] Error 1 make[4]: Leaving directory `/home/pauljohn/LinuxDownloads/src/sprngrpm/sprng-4.0/EXAMPLES/mpisprng' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/home/pauljohn/LinuxDownloads/src/sprngrpm/sprng-4.0/EXAMPLES/mpisprng' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/pauljohn/LinuxDownloads/src/sprngrpm/sprng-4.0/EXAMPLES' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/pauljohn/LinuxDownloads/src/sprngrpm/sprng-4.0' make: *** [all] Error 2 -- Paul E. Johnson Professor, Political Science 1541 Lilac Lane, Room 504 University of Kansas
_______________________________________________ R-sig-hpc mailing list R-sig-hpc at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-hpc
Department of Statistics & Actuarial Sciences Fax Phone#:(519)-661-3813 The University of Western Ontario Office Phone#:(519)-661-3622 London, Ontario N6A 5B7 http://www.stats.uwo.ca/faculty/yu