This is correct: OpenMP is for multi-threading (one machine), MPI for clusters (multiple machines). For a ROCKS cluster, use MPI.
Hi,
These days a was trying to install the MEME version 4.4.0 over a cluster that is running ROCKS 5.2 (Chimichanga). But now i have some problems, because i like to use MPICH2, i had tried it for separately and it's ok but when i try to integrated with MEME the package don't install. I use this option of configuration:
./configure --enable-build-libxml2 --enable-build-libxslt --enable-openmp --with-mpidir=/opt/mpich2/gnu
but when i execute MAKE command some error happends:
libtool: link: /opt/mpich2/gnu/bin/mpicc -I.. -DPARALLEL -I../../src/libxml2/include -I../../src/ -Wall -Wno-unused -DUNIX -D__USE_FIXED_PROTOTYPES__ -O3 -o meme_p meme_p-banner.o meme_p-branching_search.o meme_p-calculate_p_y.o meme_p-discretize.o meme_p-display.o meme_p-dpalign.o meme_p-em.o meme_p-init.o meme_p-justlike.o meme_p-likelihood.o meme_p-llr.o meme_p-logs.o meme_p-meme.o meme_p-meme-print-html.o meme_p-meme_util.o meme_p-message.o meme_p-mp.o meme_p-oops.o meme_p-partition.o meme_p-prior.o meme_p-psp.o meme_p-pssm-distr.o meme_p-read_seq_file.o meme_p-regress.o meme_p-seed.o meme_p-seed_diffs.o meme_p-seq2theta.o meme_p-sp_matrix.o meme_p-starts.o meme_p-subseq7.o meme_p-tcm.o meme_p-verbosity.o ../.libs/libcommon.a ../../src/libxml2/.libs/libxml2.a ../../src/libxslt/.libs/libxslt.a -lm
meme_p-message.o: In function `reduce_across_s_points':
message.c:(.text+0x355): undefined reference to `ompi_mpi_comm_world'
message.c:(.text+0x420): undefined reference to `ompi_mpi_double'
meme_p-message.o: In function `reduce_across_models':
message.c:(.text+0x919): undefined reference to `ompi_mpi_comm_world'
message.c:(.text+0xc35): undefined reference to `ompi_mpi_double'
meme_p-mp.o: In function `mpBroadcast':
mp.c:(.text+0xd): undefined reference to `ompi_mpi_comm_world'
mp.c:(.text+0x15): undefined reference to `ompi_mpi_byte'
meme_p-mp.o: In function `mpReduceAdd':
mp.c:(.text+0x56): undefined reference to `ompi_mpi_comm_world'
mp.c:(.text+0x5e): undefined reference to `ompi_mpi_op_sum'
mp.c:(.text+0x69): undefined reference to `ompi_mpi_int'
meme_p-mp.o: In function `mpMyID':
mp.c:(.text+0x9a): undefined reference to `ompi_mpi_comm_world'
meme_p-mp.o: In function `mpNodes':
mp.c:(.text+0xcb): undefined reference to `ompi_mpi_comm_world'
meme_p-sp_matrix.o: In function `reduce_across_heaps':
sp_matrix.c:(.text+0x3f7): undefined reference to `ompi_mpi_comm_world'
sp_matrix.c:(.text+0x4ae): undefined reference to `ompi_mpi_double'
sp_matrix.c:(.text+0x4b5): undefined reference to `ompi_mpi_int'
sp_matrix.c:(.text+0x4bc): undefined reference to `ompi_mpi_int'
sp_matrix.c:(.text+0x4c3): undefined reference to `ompi_mpi_char'
collect2: ld returned 1 exit status
make[4]: *** [meme_p] Error 1
make[4]: Leaving directory `/home/usuario1/meme_4.4.0/src/parallel'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/usuario1/meme_4.4.0/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/usuario1/meme_4.4.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/usuario1/meme_4.4.0'
make: *** [all] Error 2
Please could you help me to solve this ??. Thanks for your response and sorry for write you but i'm so desesperate.
1 answer
First, OpenMP is one thing and MPI is another, completely different. I would try not using OpenMP if your compiler doesn't support it (I don't know which one comes with Rocks). So, remove the -enable-openmp from the configuration, make clean and try making again.
OpenMP is just an API that relies on C/C++ pragmas for parallelization on shared memory systems only, while MPI is an API that works on distributed memory systems. If you are running Rocks, chances are you are in a Beowulf system and MPI would be your best bet.
Another thing, is that I don't know if MEME needs both, but I don't think so.
EDIT: looking at your question again, check your MPIDIR that you are passing, it might be wrong or you're passing a wrong subdir to the configuration
Thanks for the help Paulo, you're right, i had was so confused about OpenMP and MPI... sorry... now i reconfigured without the option --enable-openmp and all is OK... and the MPIDIR is ok too.
I run the parallel test using runcheck_p script and nodes work fine, but i like to test some example using le command meme_p. Do you know one example?
Thanks for your time i appreciate it...
Sorry, but it has been quite sometime since I did anything on motif finding. I will put on my list of things to check and I comment here if I find anything useful for you.
Log in to answer this question.
This may be a related question: Tips On Compiling And Using Meme 4.3 With A Sun Grid Engine Computation Cluster