|
1 | 1 | ***********************************************************************************************
|
2 |
| -# Applying collfs patches to glibc-2.4 |
| 2 | +# What is collfs? |
3 | 3 |
|
4 |
| -# The magic rtld rules go in elf/rtld-Rules |
| 4 | +collfs is a user library and set of patches to glibc that enables file system calls to be handled collectively over an |
| 5 | +MPI Communicator. collfs was written with the specific goal of providing scalable dynamic loading on supercomputers |
| 6 | +with faster interconnect than i/o performance, but is a general-purpose tool that can be used either directly as a |
| 7 | +library or implicitly by wrapping file system calls with collective versions. |
5 | 8 |
|
6 |
| -# This here is the whole point of all the shenanigans. |
7 |
| -# CPPFLAGS-rtld := -DNOT_IN_libc=1 -DIS_IN_rtld=1 |
| 9 | +The collfs patches are currently quite minimal. They insert an externally visible struct object into the run-time |
| 10 | +dynamic linker containing void function hooks for collective MPI versions of the standard file system API. These function pointers |
| 11 | +are then used (when non-NULL) to replace file system function calls within the standard dynamic loading routines in glibc. Additionally, |
| 12 | +we provide a small static C library via LD_PRELOAD that initializes MPI (this is pre-main, so it passes NULL to the Init |
| 13 | +routines) and activates the function hooks to point to our collective versions of the standard file system API, |
| 14 | +shadowing the original file system functions (but utilizing them by default). |
8 | 15 |
|
| 16 | +*********************************************************************************************** |
| 17 | +# Installing collfs on a Fedora Core 5 system |
| 18 | + |
| 19 | +Fedora Core 5 is at this point, quite old, but it features a 2.4 version of glibc, which is very close to the 2.4 glibc |
| 20 | +installed on the IBM Blue Gene/P. |
| 21 | + |
| 22 | +This assumes you have an FC5 installation with the standard development RPMs installed. If you are unable to build |
| 23 | +glibc-2.4 from the SRPM, you will probably need to install the missing RPMs from the DVD or a web repository. |
| 24 | + |
| 25 | +Tips for setting up a non-root installation environment for SRPMs can be found here: |
| 26 | +http://www.owlriver.com/tips/non-root// |
| 27 | + |
| 28 | +mkdir -p ~/sandbox/glibc |
| 29 | +cd ~/sandbox/glibc |
| 30 | +wget http://dl.dropbox.com/u/65439/glibc-2.4-11-collfs.src.rpm |
| 31 | +rpmbuild --nodeps --rebuild -bc glibc-2.4-11-collfs.src.rpm |
9 | 32 |
|
| 33 | +This should leave you with a built glibc (good for testing) in the RPM build directory, which |
| 34 | +was/var/tmp/glibc-2.4-root on my machine. |
10 | 35 |
|
11 | 36 | ***********************************************************************************************
|
12 | 37 | # Building glibc-2.4 for the compute nodes:
|
|
0 commit comments