Compiling SPRNG
SPRNG is the Scalable Parallel Random Number Generator.[1] We will compile with Intel Composer XE and Intel MKL.[2]
Configure♯
Environment♯
These modules are loaded:
1) shared
2) proteus
3) gcc/4.8.1
4) sge/univa
5) intel/composerxe/2015.1.133
6) proteus-openmpi/intel/2015/1.8.1-mlnx-ofed
7) automake/1.15
8) autoconf/2.69
Set these environment variables:
CXX=mpic++
F77=mpifort
Configure♯
./configure CFLAGS="-O3 -xHOST" CXXFLAGS="-O3 -xHOST" FFLAGS="-O3 -xHOST" --prefix=/mnt/HA/groups/myrsrchGrp/software --with-mpi --with-fortran > Configure.out 2>&1 &
Make♯
The source package seems to be missing at least one file that the Makefile refers to; also, a parallel build results in many errors. So, make and ignore errors:
make -k > Make.out 2>&1 &
And install:
make install > Make.install.out 2>&1 &
Check♯
cd check
./checksprng
You should get something like:
lcg: Checking Default C++ interface:
Result: PASSED
lcg: Checking Simple C++ interface:
Result: PASSED
lcg: Checking Default FORTRAN interface:
Expect SPRNG WARNING: ngens <= 0.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG WARNING: Invalid parameter
Expect SPRNG WARNING: nspawned <= 0.
Result: PASSED
lcg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
lcg64: Checking Default C++ interface:
Result: PASSED
lcg64: Checking Simple C++ interface:
Result: PASSED
lfg: Checking Default C++ interface:
Result: PASSED
lfg: Checking Simple C++ interface:
Result: PASSED
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG WARNING: Invalid parameter
Expect SPRNG WARNING: nspawned <= 0.
Result: PASSED
lfg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
mlfg: Checking Default C++ interface:
Result: PASSED
mlfg: Checking Simple C++ interface:
Result: PASSED
mlfg: Checking Default FORTRAN interface:
Expect SPRNG WARNING: ngens <= 0.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG WARNING: Invalid parameter
Expect SPRNG WARNING: nspawned <= 0.
Result: PASSED
mlfg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
cmrg: Checking Default C++ interface:
Result: PASSED
cmrg: Checking Simple C++ interface:
Result: PASSED
cmrg: Checking Default FORTRAN interface:
Expect SPRNG WARNING: ngens <= 0.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG WARNING: Invalid parameter
Expect SPRNG WARNING: nspawned <= 0.
Result: PASSED
cmrg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
pmlcg: Checking Default C++ interface:
Result: PASSED
pmlcg: Checking Simple C++ interface:
Result: PASSED
pmlcg: Checking Default FORTRAN interface:
Expect SPRNG WARNING: ngens <= 0.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG ERROR: gennum not in range.
Expect SPRNG WARNING: Invalid parameter
Expect SPRNG WARNING: nspawned <= 0.
Result: PASSED
pmlcg: Checking Simple FORTRAN interface:
Expect SPRNG ERROR: packed string invalid.
Result: PASSED
References♯
[2] Compiling for Intel with Intel Composer XE, MKL, and Intel MPI