Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] bug report-
From: Shiqing Fan (fan_at_[hidden])
Date: 2011-08-09 09:25:00


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 <fan_at_[hidden] <mailto:fan_at_[hidden]>>
>
> 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 <yangrenyong_at_[hidden]
>> <mailto:yangrenyong_at_[hidden]>>
>>
>> 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 <fan_at_[hidden] <mailto:fan_at_[hidden]>>
>>
>> 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 <fan_at_[hidden] <mailto:fan_at_[hidden]>>
>>>
>>> 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
>>>> devel_at_[hidden] <mailto:devel_at_[hidden]>
>>>> 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:fan_at_[hidden] <mailto:fan_at_[hidden]>
>>>
>>>
>>
>>
>> --
>> ---------------------------------------------------------------
>> 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:fan_at_[hidden] <mailto:fan_at_[hidden]>
>>
>>
>>
>
>
> --
> ---------------------------------------------------------------
> 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:fan_at_[hidden] <mailto:fan_at_[hidden]>
>
>

-- 
---------------------------------------------------------------
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: fan_at_[hidden]