| 1 | # 5 October 2005 |
|---|
| 2 | # Building parallel-netcdf on BGL |
|---|
| 3 | |
|---|
| 4 | Be sure to run configure with the --build and --host flags to put it in "cross |
|---|
| 5 | compile mode". This will make configure use compile-only tests, insted of the |
|---|
| 6 | usual compile-and-run tests (running tests on the bgl login node won't work as |
|---|
| 7 | the compute nodes are totaly different). |
|---|
| 8 | |
|---|
| 9 | configure --build powerpc32-unknown-gnu --host powerpc-suse-linux \ |
|---|
| 10 | --with-mpi=/bgl/BlueLight/ppcfloor/bglsys/ |
|---|
| 11 | |
|---|
| 12 | It's possible to build pnetcdf with the IBM xl compilers, but you have to set |
|---|
| 13 | quite a few environment variables |
|---|
| 14 | |
|---|
| 15 | export CC=blrts_xlc |
|---|
| 16 | export MPICC=blrts_xlc |
|---|
| 17 | export CXX=blrts_xlC |
|---|
| 18 | export MPICXX=blrts_xlC |
|---|
| 19 | export FC=blrts_xlf |
|---|
| 20 | export F77=blrts_xlf |
|---|
| 21 | export MPIF77=blrts_xlf |
|---|
| 22 | |
|---|
| 23 | export CFLAGS="-I/bgl/BlueLight/ppcfloor/bglsys/include" |
|---|
| 24 | export LIBS="-L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -ldevices.rts -lrts.rts -ldevices.rts -lrts.rts" |
|---|
| 25 | |
|---|
| 26 | configure --build powerpc32-unknown-gnu --host powerpc-suse-linux |
|---|
| 27 | |
|---|
| 28 | Several early versions of IBM's MPI-IO implementation would segfault under |
|---|
| 29 | certain workloads. If you are running driver version "V1R3M0_240_2006-060623" |
|---|
| 30 | or newer, the segfault issue should be resolved. If you are running an older |
|---|
| 31 | driver, read on: |
|---|
| 32 | |
|---|
| 33 | When built against some older BlueGene drivers, nc_test does not run |
|---|
| 34 | completley without setting a special environment variable, hitting a seg fault |
|---|
| 35 | deep inside ROMIO. We first noticed this in IBM's "Driver 202" MPI and also in |
|---|
| 36 | "V1R1M1_253_2005-051003" and "V1R2M1_020_2006-060110" We have told IBM |
|---|
| 37 | developers about the problem. Code that makes use of the ncmpi_get_vara_*_all |
|---|
| 38 | or ncmpi_put_vara_*_all routines will likely trigger a seg fault. IBM has |
|---|
| 39 | provided a workaround: if your code seg-faults, try setting the |
|---|
| 40 | "BGLMPIO_TUNEBLOCKING" environment variable to 0. With this environment |
|---|
| 41 | variable set, nc_tests runs to completion and passes. For one real-world |
|---|
| 42 | example, the FLASH-IO benchmark with 8 processors sees a 5% performance hit |
|---|
| 43 | when writing out plotfiles. That increases to 22% with 16 processors. Again, upgrading to the latest BlueGene drivers should fix this issue. |
|---|