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

Reply via email to