夜行録 - 酔歩.net

日暮れて道遠し さらに夜道を行く もって夜行録と名付く

LAM/MPI + PGI cc

会社のクラスター。 LAM/MPI インストールされてんだけど、どうもディストロから何も考えずに一式突っこんだままなので mpicc が gcc 前提になっとる。
mpicc は LAMHCC でコンパイラ振り分けられるんだが、なにせ gcc 前提で build したやつだから、 -pthread をくっつけるようになっていて、これが LAMHCC で PGI の pgcc を使おうとした時に悪さをする。 pgcc はいちいち -pthread をありえないオプションつーことでエラーにして終了するから。

それというのも pgcc があるのに LAM/MPI をちゃんと自分で作らないからで(っていうか、バージョンも随分古いままだぞ)、 LAM の方にはちゃんとこれを回避するオプションがある(--without-dash-pthread)。 build 時のオプションだけどorz
あるいは、 lam_config.h で define しているだけだから、そこで潰すんでもいい。 ただ、いずれにせよユーザ権限じゃ如何ともし難い。ちゃんと仕事しろよ駄目管理人……。

てゆーか、ただ使うなら手で -llam -lmpi とかつければいいんだが、 configure が自分で mpicc 叩いてチェックする系はどう回避しろってのか……

何故か MPICH も入ってるんでそっち使うか……。orz
それに LAM/MPI はもう放置モードっぽくて、みんな OpenMPI に移ったようだな。

$ cat N.c
#include 
int
main ()
{
int argc; char **argv; MPI_Init(&argc,&argv);
  ;
  return 0;
}
$ env MPICH_CC=pgcc /opt/mpich-ch_p4-gcc-1.2.7/bin/mpicc -c N.c
$ env LAMHCC=pgcc /opt/lam-7.0.6/bin/mpicc -c N.c
pgcc-Error-Unknown switch: -pthread
/opt/lam-7.0.6/bin/mpicc: No such file or directory
$ grep pthread /opt/lam-7.0.6/include/lam_config.h 
/* Do threads have different pids (pthreads on linux) */
#define WRAPPER_EXTRA_CFLAGS "-pthread"
#define WRAPPER_EXTRA_CXXFLAGS "-pthread"
#define WRAPPER_EXTRA_FFLAGS "-pthread"

追記: $HOME/bin に以下の内容で mpicc ファイルを作ってやったら、うまく configure も騙せて最後まで build できた。昔はこういうイカサマ大得意だったのに、すっかり思いつかなくなっちゃってるな。

exec pgcc $* -I/opt/lam-7.0.6/include -L/opt/lam-7.0.6/lib -lmpi -llam -lpthread
2008年06月23日 (Mon) - 01:31:00 - その他雑記 - 4325x - permalink
Karma points: 2. Do you like this article? [yes/no]