Gentoo Archives: gentoo-cluster

From: Alexander Piavka <piavka@×××××××××.il>
To: Justin Bronder <jsbronder@g.o>
Cc: gentoo-cluster@l.g.o
Subject: Re: [gentoo-cluster] Installing and using multiple MPI implementations at the same time.
Date: Mon, 10 Mar 2008 16:31:16
Message-Id: Pine.LNX.4.64.0803101700430.24263@lesbinux
In Reply to: [gentoo-cluster] Installing and using multiple MPI implementations at the same time. by Justin Bronder
1 Hi Justin,
2
3 I've started playing with your empi implementation.
4
5 Some problems & suggestions:
6
7 1)'eselect mpi set ...' does not check for existance of ~/.env.d dir
8 and fails if one does not exists.
9
10 It creates ~/.env.d/mpi which looks like this:
11 ----------------------
12 PATH="/usr/lib64/mpi/mpi-openmpi/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin"
13 MANPATH="/usr/lib64/mpi/mpi-openmpi/usr/share/man:/etc/java-config-2/current-system-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.18/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/"
14 LD_LIBRARY_PATH="/usr/lib64/mpi/mpi-openmpi/usr/lib64:"
15 ESELECT_MPI_IMP="mpi-openmpi"
16 export LD_LIBRARY_PATH
17 export PATH
18 export MANPATH
19 export ESELECT_MPI_IMP
20 ----------------------
21
22 while the following would be better:
23 ----------------------
24 PATH="/usr/lib64/mpi/mpi-openmpi/usr/bin:${PATH}"
25 MANPATH="/usr/lib64/mpi/mpi-openmpi/usr/share/man:${MANPATH}"
26 LD_LIBRARY_PATH="/usr/lib64/mpi/mpi-openmpi/usr/lib64:${LD_LIBRARY_PATH}"
27 ESELECT_MPI_IMP="mpi-openmpi"
28 export LD_LIBRARY_PATH
29 export PATH
30 export MANPATH
31 export ESELECT_MPI_IMP
32 ----------------------
33
34 maybe even
35 ----------------------
36 if [ "X${PATH}" != "X" ]; then
37 export PATH="/usr/lib64/mpi/mpi-openmpi/usr/bin:${PATH}"
38 else
39 export PATH="/usr/lib64/mpi/mpi-openmpi/usr/bin"
40 fi
41 if [ "X${MANPATH}" != "X" ]; then
42 export MANPATH="/usr/lib64/mpi/mpi-openmpi/usr/share/man:${MANPATH}"
43 else
44 export MANPATH="/usr/lib64/mpi/mpi-openmpi/usr/share/man"
45 fi
46 if [ "X${LD_LIBRARY_PATH}" != "X" ]; then
47 export LD_LIBRARY_PATH="/usr/lib64/mpi/mpi-openmpi/usr/lib64:${LD_LIBRARY_PATH}"
48 else
49 export LD_LIBRARY_PATH="/usr/lib64/mpi/mpi-openmpi/usr/lib64"
50 fi
51 export ESELECT_MPI_IMP
52 ----------------------
53
54 Also, probably . besides /etc/env.d/mpi/mpi-openmpi the /etc/env.d/XXmpi
55 file should also be created with the default empi profile then 'eselect mpi set <mpi-implementation>'
56 is run.
57
58 2)another problem is a failure to install binpkg
59 of openmpi on another identical systems, the error is
60
61 *
62 * ERROR: mpi-openmpi/openmpi-1.2.5-r1 failed.
63 * Call stack:
64 * ebuild.sh, line 1717: Called dyn_setup
65 * ebuild.sh, line 768: Called qa_call 'pkg_setup'
66 * ebuild.sh, line 44: Called pkg_setup
67 * openmpi-1.2.5-r1.ebuild, line 23: Called mpi_pkg_setup
68 * mpi.eclass, line 306: Called die
69 * The specific snippet of code:
70 * [[ -f "${FILESDIR}"/${MPI_ESELECT_FILE} ]] \
71 * || die "MPI_ESELECT_FILE is not defined/found. ${MPI_ESELECT_FILE}"
72 * The die message:
73 * MPI_ESELECT_FILE is not defined/found. eselect.mpi.openmpi
74 *
75 * If you need support, post the topmost build error, and the call stack if relevant.
76 * A complete build log is located at '/var/tmp/portage/mpi-openmpi/openmpi-1.2.5-r1/temp/build.log'.
77 *
78
79 I thinks this is due to MPI_ESELECT_FILE being defined in pkg_setup() of
80 openmpi ebuild and not in top of ebuild (will check if this would help later)
81
82 3) If i have PORTDIR_OVERLAY="/usr/local/overlays/csbgu /tmp/empi"
83 empi --create --implementation mpi-openmpi =sys-cluster/openmpi-1.2.5-r1
84 would create mpi-openmpi category tree under /usr/local/overlays/csbgu/mpi-openmpi
85 since it's first overlay in PORTDIR_OVERLAY, it would be nice if it could
86 ALWAYS be created under the empi overlay i.e /tmp/empi/mpi-openmpi
87 Of couse i can put the empi overlay first in PORTDIR_OVERLAY instead
88 but i want to avoid manual tweaking as much as possible.
89 With all mpi-implementation residing in the same overlay tree as empi
90 it would much more convienient , for me, to auto distribute single overlay
91 among cluster hosts and avoid possible need for commands
92 like 'empi --create --implementation mpi-openmpi ...'
93
94 Thanks
95 Alex
96
97 On Thu, 7 Feb 2008, Justin Bronder wrote:
98
99 > Well bug 44132 [1] has been a real thorn in my side for some time. The
100 > problem being that all mpi implementations currently in portage block each
101 > other. This is a real pain for any serious administrators, makes testing
102 > new/other implementations too time-consuming, and in my opinion has probably
103 > slowed any progress related to getting cluster applications into portage or
104 > the overlays.
105 >
106 > All that being said, I set out to do something about it. Donnie Berkholz was
107 > nice enough to help me out early on and ended up suggesting that I look
108 > at crossdev. I shamelessly ripped off the aforementioned script and tuned
109 > it for mpi implementations and packages. It should be noted that all the
110 > changes I've implemented do [should, hopefully will] not effect the way the
111 > packages behave now, rather it just adds another option. The idea is as
112 > follows.
113 >
114 > sys-cluster/empi: Does the same stuff that crossdev does. You create a new
115 > implementation root by specifying a name and mpi implementation package to
116 > build it with. [2] Empi adds these to an overlay under a new category with
117 > the name you gave. The ebuilds inherit mpi.eclass which handles pushing all
118 > the files to /usr/lib/mpi/<name>, and providing files for eselect-mpi.
119 >
120 > Later, you can add packages by specifying the category name and packages to
121 > install. Empi grabs the ones that inherit mpi (including deps), adds them to
122 > the overlay and emerges. The deps stuff hasn't been tested all that much.
123 >
124 > app-admin/eselect-mpi: Used to setup a user's environment to call a named
125 > implementation install. Basically does this by dropping a bash-sourceable
126 > file in ${HOME}/.env.d/mpi. The not-so-fun part is that the user then has to
127 > remember to source that file. Also used a fair amount by mpi.eclass.
128 >
129 > I threw some quick notes showing commands and output up in my devspace. [3]
130 > If anyone is at all interested, please try this out and let me know what you
131 > think. Even if you don't try it out but have ideas/comments/rants, I'm all ears.
132 >
133 > Current overlay has the following ready to be tried out.
134 > eselect-mpi/eselect-mpi-0.0.1
135 > sys-cluster/empi-0.1
136 > sys-cluster/hpl-1.0-r3
137 > sys-cluster/lam-mpi-7.1.4-r1
138 > sys-cluster/mpi-examples-1.0
139 > sys-cluster/openmpi-1.2.5-r1
140 >
141 > A couple of final words, hpl and mpi-examples currently wouldn't work without
142 > empi, mainly because I'm lazy :) Also I still haven't figured out a good way
143 > to handle do{man,doc,www} etcetera, ideas are welcome. There's still a fair
144 > amount of work to be done, but I wanted to see if anyone had any feedback
145 > regarding the general concept first before pushing on.
146 >
147 > You can pull the overlay from rsync://cold-front.ath.cx/mpi (for now...)
148 >
149 > Thanks,
150 >
151 >
152 > [1] http://bugs.gentoo.org/show_bug.cgi?id=44132
153 > [2] Currently openmpi-1.2.5-r1 or lam-mpi-7.1.4-r1
154 > [3] http://dev.gentoo.org/~jsbronder/README.empi.txt
155 >
156 > --
157 > Justin Bronder
158 >
159
160 --
161 gentoo-cluster@l.g.o mailing list

Replies