[R-sig-hpc] Patches -> success with sprng2.0b on Ubuntu; Centos/Rocks Cluster still mysterious in Fortran
Paul Johnson
pauljohn32 at gmail.com
Wed Jan 20 05:46:50 CET 2010
Hello, everybody.
I stubbornly persist (for replication purposes) toward the goal of
building sprng on a cluster running Rocks Linux (Centos based) in
order to use Rmpi.
=============Chapter 1: Ubuntu likes me================
My laptop is Ubuntu 8.10, and I have been doing the development there.
I ended up taking advantage of fixes discovered by Dirk E in his
package for Debian/Ubuntu and the fixes proposed for ALTLinux. And
advice from several others in various email lists.
I have worked with sprng versions 2.0a and 2.0b. 2.0a is used in the
libsprng package in Debian/Ubuntu channels, but it is no longer
available from the FSU website. From the FSU site, they offer version
2.0b.
I uploaded a series of patches, a copy of the source code (for your
convenience), and output to this directory:
http://pj.freefaculty.org/linux/sprng
sprng2.0b.tar.gz
sprng-01-C-comments-onlyfor2.0a.patch
sprng-02-dirk-misc.patch
sprng-03-makefiles.patch
sprng-04-AllCFixes.patch
sprng-05-fixmenu.patch
sprng-06-openmpi.patch
The first patch is only used if you are working with sprng2.0a.tar.gz,
it is NOT used with 2.0b. All of the rest apply to both. The last is
strictly optional.
The steps to open the code, apply the patches, and, most importantly,
to demonstrate the full functionality (results of "checksprng" and
"timespring") are in this text files:
Ubuntu-build-check.txt
timesprng.txt
The C and Fortran examples work fine. As a result, I consider the
question of compiling "cleanly" and "testing" on Ubuntu to be solved.
It works with or without MPI.
That may seem trivial, but it takes some effort. The Debian/Ubuntu
package libsrpng does not currently conduct the testing phase. In the
files I uploaded, you can see full functioning versions of checksprng
and testsprng.
==========Chapter 2: Centos hate me ========
The report on my final goal--installing this in a Rocks cluster--is
not so perfect. The C examples work. The Fortran with pointer
checking examples don't work. Maybe I don't care?? The libraries do
compile. Maybe that's good enough for Rmpi?
I put the output from "make" and the check programs in this file:
Centos-build.txt
Even getting this to compile on Centos is a hassle. The versions of
the compilers, openmpi, and the "echo" program are different. For
example, the fortran compiler on Centos enforces a line length
limitation, so several print statements in Fortran examples cause
compiler failures. I also learned that, unlike Ubuntu where "echo"
will translate \134 into the "backslash" character, on Centos it is
necessary to add a zero, as in \0134. After hacking and such, I'm
able to compile sprng2.0b on Centos, and I can run all of the C-based
random generator tests. The Fortran scripts with pointer checking
fail.
I'm trying to decide if that's important. I don't write Fortran
programs. But I'd hate to release this on an unsuspecting user group
unless I can understand what's going on. If you are a Fortran user,
perhaps you can advise me how to debug this.
Observe the last part of the output:
./checksprng
lfg: Checking Default C interface:
Result: PASSED
lfg: Checking Simple C interface:
Result: PASSED
lfg: Checking C interface with pointer checking:
Result: PASSED
lcg: Checking Default C interface:
Result: PASSED
lcg: Checking Simple C interface:
Result: PASSED
lcg: Checking C interface with pointer checking:
Result: PASSED
lcg64: Checking Default C interface:
Result: PASSED
lcg64: Checking Simple C interface:
Result: PASSED
lcg64: Checking C interface with pointer checking:
Result: PASSED
cmrg: Checking Default C interface:
Result: PASSED
cmrg: Checking Simple C interface:
Result: PASSED
cmrg: Checking C interface with pointer checking:
Result: PASSED
mlfg: Checking Default C interface:
Result: PASSED
mlfg: Checking Simple C interface:
Result: PASSED
mlfg: Checking C interface with pointer checking:
Result: PASSED
pmlcg: Checking Default C interface:
Result: PASSED
pmlcg: Checking Simple C interface:
Result: PASSED
pmlcg: Checking C interface with pointer checking:
Result: PASSED
lfg: Checking Default FORTRAN interface:
./checksprng: line 57: 6879 Segmentation fault ./check.fsprng <
gen0_lfg.data 2> /dev/null
lfg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
lfg: Checking FORTRAN interface with pointer checking:
FAILED: Integer generator incorrect.
FAILED: Float generator incorrect.
FAILED: Double generator incorrect stream.
FAILED: Generator was unable to spawn.
FAILED: Generator incorrect after spawning.
Probable error in spawning the generators.
FAILED: Generator was unable to pack.
FAILED: Incorrect stream after pack/unpack.
Probable error in (un)packing the generators.
FAILED: Generator incorrect stream after pack/unpack.
Probably an error in (un)packing the generators.
FAILED: Free returns -1 instead of 6.
FAILED: Free returns -1 instead of 0.
FAILED: Generator does not produce expected stream
... when ngens <= 0.
FAILED: Generator produces more than 1 stream
... when ngens = 0.
FAILED: Spawn returned 0 instead of 1
... when nspawned was 0.
FAILED: Generator wrong when nspawned = -1.
Expect SPRNG ERROR: packed string invalid
Result: FAILED
lcg: Checking Default FORTRAN interface:
./checksprng: line 66: 6882 Segmentation fault ./check.fsprng <
gen1_lcg.data 2> /dev/null
lcg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
lcg: Checking FORTRAN interface with pointer checking:
FAILED: Integer generator incorrect.
FAILED: Float generator incorrect.
FAILED: Double generator incorrect stream.
FAILED: Generator was unable to spawn.
FAILED: Generator incorrect after spawning.
Probable error in spawning the generators.
FAILED: Generator was unable to pack.
FAILED: Incorrect stream after pack/unpack.
Probable error in (un)packing the generators.
FAILED: Generator incorrect stream after pack/unpack.
Probably an error in (un)packing the generators.
FAILED: Free returns -1 instead of 6.
FAILED: Free returns -1 instead of 0.
FAILED: Generator does not produce expected stream
... when ngens <= 0.
FAILED: Generator produces more than 1 stream
... when ngens = 0.
FAILED: Spawn returned 0 instead of 1
... when nspawned was 0.
FAILED: Generator wrong when nspawned = -1.
Expect SPRNG ERROR: packed string invalid
Result: FAILED
lcg64: Checking Default FORTRAN interface:
./checksprng: line 75: 6885 Segmentation fault ./check.fsprng <
gen2_lcg64.data 2> /dev/null
lcg64: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
lcg64: Checking FORTRAN interface with pointer checking:
FAILED: Integer generator incorrect.
FAILED: Float generator incorrect.
FAILED: Double generator incorrect stream.
FAILED: Generator was unable to spawn.
FAILED: Generator incorrect after spawning.
Probable error in spawning the generators.
FAILED: Generator was unable to pack.
FAILED: Incorrect stream after pack/unpack.
Probable error in (un)packing the generators.
FAILED: Generator incorrect stream after pack/unpack.
Probably an error in (un)packing the generators.
FAILED: Free returns -1 instead of 6.
FAILED: Free returns -1 instead of 0.
FAILED: Generator does not produce expected stream
... when ngens <= 0.
FAILED: Generator produces more than 1 stream
... when ngens = 0.
FAILED: Spawn returned 0 instead of 1
... when nspawned was 0.
FAILED: Generator wrong when nspawned = -1.
Expect SPRNG ERROR: packed string invalid
Result: FAILED
cmrg: Checking Default FORTRAN interface:
./checksprng: line 84: 6888 Segmentation fault ./check.fsprng <
gen3_cmrg.data 2> /dev/null
cmrg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
cmrg: Checking FORTRAN interface with pointer checking:
FAILED: Integer generator incorrect.
FAILED: Float generator incorrect.
FAILED: Double generator incorrect stream.
FAILED: Generator was unable to spawn.
FAILED: Generator incorrect after spawning.
Probable error in spawning the generators.
FAILED: Generator was unable to pack.
FAILED: Incorrect stream after pack/unpack.
Probable error in (un)packing the generators.
FAILED: Generator incorrect stream after pack/unpack.
Probably an error in (un)packing the generators.
FAILED: Free returns -1 instead of 6.
FAILED: Free returns -1 instead of 0.
FAILED: Generator does not produce expected stream
... when ngens <= 0.
FAILED: Generator produces more than 1 stream
... when ngens = 0.
FAILED: Spawn returned 0 instead of 1
... when nspawned was 0.
FAILED: Generator wrong when nspawned = -1.
Expect SPRNG ERROR: packed string invalid
Result: FAILED
mlfg: Checking Default FORTRAN interface:
./checksprng: line 93: 6891 Segmentation fault ./check.fsprng <
gen4_mlfg.data 2> /dev/null
mlfg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
mlfg: Checking FORTRAN interface with pointer checking:
FAILED: Integer generator incorrect.
FAILED: Float generator incorrect.
FAILED: Double generator incorrect stream.
FAILED: Generator was unable to spawn.
FAILED: Generator incorrect after spawning.
Probable error in spawning the generators.
FAILED: Generator was unable to pack.
FAILED: Incorrect stream after pack/unpack.
Probable error in (un)packing the generators.
FAILED: Generator incorrect stream after pack/unpack.
Probably an error in (un)packing the generators.
FAILED: Free returns -1 instead of 6.
FAILED: Free returns -1 instead of 0.
FAILED: Generator does not produce expected stream
... when ngens <= 0.
FAILED: Generator produces more than 1 stream
... when ngens = 0.
FAILED: Spawn returned 0 instead of 1
... when nspawned was 0.
FAILED: Generator wrong when nspawned = -1.
Expect SPRNG ERROR: packed string invalid
Result: FAILED
pmlcg: Checking Default FORTRAN interface:
./checksprng: line 102: 6894 Segmentation fault ./check.fsprng <
gen5_pmlcg.data 2> /dev/null
pmlcg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
pmlcg: Checking FORTRAN interface with pointer checking:
FAILED: Integer generator incorrect.
FAILED: Float generator incorrect.
FAILED: Double generator incorrect stream.
FAILED: Generator was unable to spawn.
FAILED: Generator incorrect after spawning.
Probable error in spawning the generators.
FAILED: Generator was unable to pack.
FAILED: Incorrect stream after pack/unpack.
Probable error in (un)packing the generators.
FAILED: Generator incorrect stream after pack/unpack.
Probably an error in (un)packing the generators.
FAILED: Free returns -1 instead of 6.
FAILED: Free returns -1 instead of 0.
FAILED: Generator does not produce expected stream
... when ngens <= 0.
FAILED: Generator produces more than 1 stream
... when ngens = 0.
FAILED: Spawn returned 0 instead of 1
... when nspawned was 0.
FAILED: Generator wrong when nspawned = -1.
Expect SPRNG ERROR: packed string invalid
--
Paul E. Johnson
Professor, Political Science
1541 Lilac Lane, Room 504
University of Kansas
More information about the R-sig-hpc
mailing list