Now I see the problem. The Open MPI binaries were build with Microsoft
cl compiler, it has different name conventions, so the symbols couldn't
be resolved by g++ compiler. I've started the native MinGW compiler
support, some projects can already be built via gcc or g++, but it's not
finished yet.
Regards,
Shiqing
On 2011-08-09 3:19 PM, renyong.yang wrote:
Hi,
I'm using mingw g++, the IDE is eclipse cdt,
these are all the info:
make all
'Building file: ../src/mpi_test1.cpp'
'Invoking: Cross G++ Compiler'
g++ -I"C:\Program Files\OpenMPI_v1.5.3-win32\include" -O0 -g3 -Wall -c
-fmessage-length=0 -MMD -MP -MF"src/mpi_test1.d" -MT"src/mpi_test1.d"
-o "src/mpi_test1.o" "../src/mpi_test1.cpp"
'Finished building: ../src/mpi_test1.cpp'
' '
'Building target: mpi_test1'
'Invoking: Cross G++ Linker'
g++ -L"C:\Program Files\OpenMPI_v1.5.3-win32\bin" -o "mpi_test1"
./src/mpi_test1.o -lmpi
c:/program
files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe:
warning: auto-importing has been activated without
--enable-auto-import specified on the command line.
This should work unless it involves constant data structures
referencing symbols from auto-imported DLLs.
./src/mpi_test1.o: In function `main':
C:\Users\yong\workspace\mpi_test1\Debug/../src/mpi_test1.cpp:21:
undefined reference to `MPI::COMM_WORLD'
C:\Users\yong\workspace\mpi_test1\Debug/../src/mpi_test1.cpp:23:
undefined reference to `MPI::COMM_WORLD'
./src/mpi_test1.o: In function `Intracomm':
C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/intracomm.h:25: undefined
reference to `MPI::Comm::Comm()'
./src/mpi_test1.o:C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/functions_inln.h:91:
undefined reference to `MPI::InitializeIntercepts()'
./src/mpi_test1.o: In function `Intracomm':
C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/intracomm_inln.h:23:
undefined reference to `MPI::Comm::Comm()'
./src/mpi_test1.o:C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/op_inln.h:122:
undefined reference to `ompi_mpi_cxx_op_intercept'
./src/mpi_test1.o:mpi_test1.cpp:(.rdata$_ZTVN3MPI3WinE[vtable for
MPI::Win]+0x24): undefined reference to `MPI::Win::Free()'
./src/mpi_test1.o:mpi_test1.cpp:(.rdata$_ZTVN3MPI8DatatypeE[vtable for
MPI::Datatype]+0x3c): undefined reference to `MPI::Datatype::Free()'
collect2: ld returned 1 exit status
make: *** [mpi_test1] Error 1
Info: resolving _ompi_mpi_comm_null by linking to
__imp__ompi_mpi_comm_null (auto-import)
2011/8/9 Shiqing Fan <f...@hlrs.de <mailto:f...@hlrs.de>>
Hi,
Which command did you use to compile your code?
I tried following code on my Windows 7 machine with compile
command "mpicxx hello.cpp":
hello.cpp
===================================
# include "mpi.h"
using namespace std;
int main ( int argc, char *argv[] )
{
int rank, size;
MPI::Init ( argc, argv );
size = MPI::COMM_WORLD.Get_size ( );
rank = MPI::COMM_WORLD.Get_rank ( );
printf("Rank # %d \n", rank);
MPI::Finalize ( );
return 0;
}
console output :
======================================
d:\work\OpenMPI\tests\CXX>mpicxx hello.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version
16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
hello.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:hello.exe
"/LIBPATH:C:\Program Files\OpenMPI_v1.5.3-win32\lib"
libmpi_cxx.lib
libmpi.lib
libopen-pal.lib
libopen-rte.lib
advapi32.lib
Ws2_32.lib
shlwapi.lib
hello.obj
d:\work\OpenMPI\tests\CXX>mpirun -np 2 hello.exe
Rank # 0
Rank # 1
Regards,
Shiqing
On 2011-08-09 3:04 PM, renyong.yang wrote:
I compiled the simple code with "Microsoft Compute Cluster Pack"
on Windows and if I load its own loader "mpiexec.exe" within its
program folder, the program can work correctly, however if I
tried to use your loader "C:\Program
Files\OpenMPI_v1.5.3-win32\bin\mpiexec.exe" and "C:\Program
Files\OpenMPI_v1.5.3-win32\bin\mpirun.exe", the process it
created is always with rank "0". BTW, I compile the code
with "Microsoft Compute Cluster Pack" because the simple code can
not be compiled with the v1.5.3 release for windows, the compiler
complains:
./src/mpi_test1.o: In function `Intracomm':
C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/intracomm.h:25:
undefined reference to `MPI::Comm::Comm()'
./src/mpi_test1.o: In function `Intracomm':
C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/intracomm_inln.h:23:
undefined reference to `MPI::Comm::Comm()'
./src/mpi_test1.o:C:/Program
Files/OpenMPI_v1.5.3-win32/include/openmpi/ompi/mpi/cxx/op_inln.h:122:
undefined reference to `ompi_mpi_cxx_op_intercept'
./src/mpi_test1.o:mpi_test1.cpp:(.rdata$_ZTVN3MPI3WinE[vtable for
MPI::Win]+0x24): undefined reference to `MPI::Win::Free()'
./src/mpi_test1.o:mpi_test1.cpp:(.rdata$_ZTVN3MPI8DatatypeE[vtable for
MPI::Datatype]+0x3c): undefined reference to `MPI::Datatype::Free()'
collect2: ld returned 1 exit status
make: *** [mpi_test1] Error 1
When I tried CMake with GUI for version 1.4.3, no .sln file
generated, is there something I've missed?
Regardes~~
Renyong
2011/8/9 renyong.yang <yangreny...@gmail.com
<mailto:yangreny...@gmail.com>>
Hi,
I've solved the same weird error on Linux, but have not
tried Windows yet. The error recurs on Linux system, when I
firstly use mpich on my Linux, the program works fine, then I
uninstalled it and switched to your open-mpi, the error came
out without warning, and I tried to change the compiler to
mpic++ other than g++, the error remains. So I doubt if the
Boost.MPI is compatible with current MPI system, I recompiled
the Boost.MPI library and substituted the old ones, the code
with Boost library came back to work. So I guess the old
compiled Boost library depends on other library like mpich,
so it can't work with current open-mpi because they are
incompatible, however, I'm still confused why simple code (In
the last mail I sent to you) which does not depend on Boost
library(I never used mpich on Windows before), can not work.
Wishes~
Renyong
2011/8/9 Shiqing Fan <f...@hlrs.de <mailto:f...@hlrs.de>>
Hi,
The code works for me under MinGW console with the
pre-compiled installer. Could you try "which mpicc" to
ensure that the correct Open MPI commands are in path?
For building Open MPI by your self with CMake, you have
to configure it in the GUI and then generate the sln
files by pressing the generate button. I don't recommend
to use the other two means, they haven't been tested for
some while.
Regards,
Shiqing
On 2011-08-09 3:48 AM, renyong.yang wrote:
hi,
the following code:
int main(int argc, char **argv)
{
int procnum;
/* Initialize MPI */
MPI_Init(&argc, &argv);
/* Find out this processor number */
MPI_Comm_rank(MPI_COMM_WORLD, &procnum);
/* Find out the number of processors */
std::cout << "I'm process: " << procnum << std::endl;
MPI_Finalize();
return 0;
}
also goes with the same rank "0" error, I think if
there's something wrong with the auxiliary program
"mpirun" ?
BTW, I tried all the 3 means on your
http://svn.open-mpi.org/svn/ompi/trunk/README.WINDOWS.txt guideline
but none worked to compile my own dll for
http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.3.tar.bz2,
the first approach failed because I found no .sln file
in the distributed tarballs after configuring with
cmake, the second mean I can not use is the lacking of
ompi-static.tgz file, the 3rd solution I tried does not
work neither, because I don't know what the ash.exe
shell interpreter you are actually pointing to, so I'd
be much appreciated if you can tell me the a working
approach. Thanks very much.
2011/8/9 Shiqing Fan <f...@hlrs.de <mailto:f...@hlrs.de>>
Hi,
I've never tried this Boost.MPI with Open MPI on
Windows. Does it work without the Boost.MPI library?
Did you run your test under MinGW?
Regards,
Shiqing
On 2011-08-08 5:31 PM, renyong.yang wrote:
Run time environment of mine is Windows 7, with
the unstable OpenMPI_v1.5.3-2_win32.exe
<http://www.open-mpi.org/software/ompi/v1.5/downloads/OpenMPI_v1.5.3-2_win32.exe>
release
for Windows, together with Microsoft Compute
Cluster Pack. Additionally I'm using Boost.MPI
library v1.47 compiled by mingw, I write those
following codes:
int main(int argc, char **argv)
{
mpi::environment env(argc, argv); // Boost.MPI class
boost::mpi::communicator worldCom; // Boost.MPI class
std::cout << "rank():" << worldCom.rank() << std::endl;
worldCom.barrier();
return 0;
}
and successfully compiled and linked with your
library as "a.exe" by mingw, however, if I run it:
>mpirun -np 4 a.exe
the command will create 4 process with the same
rank "0", I wonder if it's the bug of your unstable
release for windows?
BTW, can you publish the Visual studio project to
the subversion? Thanks very much.
_______________________________________________
devel mailing list
de...@open-mpi.org <mailto:de...@open-mpi.org>
http://www.open-mpi.org/mailman/listinfo.cgi/devel
--
---------------------------------------------------------------
Shiqing Fan
High Performance Computing Center Stuttgart (HLRS)
Tel: ++49(0)711-685-87234 Nobelstrasse 19
Fax: ++49(0)711-685-65832 70569 Stuttgart
http://www.hlrs.de/organization/people/shiqing-fan/
email:f...@hlrs.de <mailto:f...@hlrs.de>
--
---------------------------------------------------------------
Shiqing Fan
High Performance Computing Center Stuttgart (HLRS)
Tel: ++49(0)711-685-87234 Nobelstrasse 19
Fax: ++49(0)711-685-65832 70569 Stuttgart
http://www.hlrs.de/organization/people/shiqing-fan/
email:f...@hlrs.de <mailto:f...@hlrs.de>
--
---------------------------------------------------------------
Shiqing Fan
High Performance Computing Center Stuttgart (HLRS)
Tel: ++49(0)711-685-87234 Nobelstrasse 19
Fax: ++49(0)711-685-65832 70569 Stuttgart
http://www.hlrs.de/organization/people/shiqing-fan/
email:f...@hlrs.de <mailto:f...@hlrs.de>
--
---------------------------------------------------------------
Shiqing Fan
High Performance Computing Center Stuttgart (HLRS)
Tel: ++49(0)711-685-87234 Nobelstrasse 19
Fax: ++49(0)711-685-65832 70569 Stuttgart
http://www.hlrs.de/organization/people/shiqing-fan/
email: f...@hlrs.de