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 |