- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This might seem pretty stupid but that's where I am stuck.
I am trying to build a Fortran application for a parallel machine using the Parallel Studio XE 2016 Cluster Edition on top on the MS Visual Studio Entreprise 2015. All works fine until I try to use the Intel MPI libraries, either the one embeded on the cluster edition or the MPI library 5.1.
Before submitting the code to the high performance machine, I would like to debug it locally.
My local machine is running Win8 64bits, x64-based processor, 8GB. When I installed the Fortran package, it installed itself in the Program Files (x86)\IntelSWTools folder but all mpi libraries are either intel64 or em64t. It does not matter how many Fortran mpi libraries I install, they all seem to be x64. I would expect things to not work, as they do not at the present.
Must I find, download ans install a x64 Fortran? I was never "told" that the Fortran I was installing was x86.
Any suggestions?
Thanks,.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Let us set aside MPI and SMP/OpenMP issues as a first step.
On your desktop machine running Windows, do you have the 64-bit VS and Intel Parallel Studio (Composer or Professional) components installed? Can you build any 64-bit EXE using Intel Fortran? In the Start menu, under Intel Parallel Studio, do you see a shortcut to CMD for 64-bit development?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In short, I think that's the problem. I have Intel Fortran's student version and I have no clue on how to check if it can produce x64 console applications...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, that image does not help pinpoint the problem. Go to the Windows Start menu (button at lower left corner of desktop, in default desktop configuration, or press the Windows key). Click on Intel Parallel Studio, and when the sub-menu gets expanded, take a screenshot and post here.
The Student version is identical to the Professional/Composer versions except for license terms and certain additional components that are not central to building local programs.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Almost there! Please click-expand the "Compiler and Performance Libraries" that you showd in Intel02.png. You should see two shortcuts to CMD.exe, one for 32-bit and one for 64-bit.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Not very clear in the limited space so here are the short-cuts, top to bottom:
Command Prompt with Intel Compiler 16.0 Update 3:
C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.3.207\windows\bin\ipsxe-comp-vars.bat" ia32 vs2015"
C:\Windows\System32\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.3.207\windows\bin\ipsxe-comp-vars.bat" intel64 vs2015"
Command Prompt with Intel Compiler 16.0 Update 4:
C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\bin\ipsxe-comp-vars.bat" ia32 vs2015"
C:\Windows\System32\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\bin\ipsxe-comp-vars.bat" intel64 vs2015"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The presence of the shortcut ""C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\bin\ipsxe-comp-vars.bat" intel64 vs2015"
is proof that you have the necessary compiler tools installed for development. Please try compiling a "Hello World" program into a 64-bit EXE using that command prompt, or using Visual Studio and selecting to target X64.
There are many on-line guides for using Intel Fortran with Visual Studio (I have not tried any). I suspect that it is just a matter of your negotiating the menus in Visual Studio.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Many thanks - I feel a total idiot because I cannot use the two tools properly. I am currently away from the university and don't have anyone I could beg for help. I will try to use your kind advise to solve it. Many many thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well, it only took me months to understand the problem - your help was fundamental!
It is not solved yet but I think it is a matter of time now... many many many thanks!
Build Log |
Build started: Project: ex2, Configuration: Debug|x64 |
Output |
Linking... Link /OUT:"x64\Debug\ex2.exe" /INCREMENTAL:NO /NOLOGO /MANIFEST /MANIFESTFILE:"x64\Debug\ex2.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\ex2.pdb" /SUBSYSTEM:CONSOLE /IMPLIB:"D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\ex2.lib" "x64\Debug\test.obj" ipo: warning #11082: D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\test.obj: locally defined symbol __imp_MPIFCMB5 imported ipo: warning #11082: D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\test.obj: locally defined symbol __imp_MPIFCMB9 imported ipo: warning #11082: D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\test.obj: locally defined symbol __imp_MPIPRIV1 imported ipo: warning #11082: D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\test.obj: locally defined symbol __imp_MPIPRIV2 imported ipo: warning #11082: D:\_1 - shared\_Arquivos\Alexandre\_Tecnicos\Pós-Doutorado\Exercicios MPI\ex2\ex2\ex2\x64\Debug\test.obj: locally defined symbol __imp_MPIPRIVC imported test.obj : warning LNK4049: locally defined symbol MPIFCMB5 imported test.obj : warning LNK4049: locally defined symbol MPIFCMB9 imported test.obj : warning LNK4049: locally defined symbol MPIPRIV1 imported test.obj : warning LNK4049: locally defined symbol MPIPRIV2 imported test.obj : warning LNK4049: locally defined symbol MPIPRIVC imported test.obj : error LNK2019: unresolved external symbol MPI_INIT referenced in function MAIN__ test.obj : error LNK2019: unresolved external symbol MPI_COMM_SIZE referenced in function MAIN__ test.obj : error LNK2019: unresolved external symbol MPI_COMM_RANK referenced in function MAIN__ test.obj : error LNK2019: unresolved external symbol MPI_GET_PROCESSOR_NAME referenced in function MAIN__ test.obj : error LNK2019: unresolved external symbol MPI_RECV referenced in function MAIN__ test.obj : error LNK2019: unresolved external symbol MPI_SEND referenced in function MAIN__ test.obj : error LNK2019: unresolved external symbol MPI_FINALIZE referenced in function MAIN__ x64\Debug\ex2.exe : fatal error LNK1120: 7 unresolved externals ex2 - 8 error(s), 10 warning(s) |
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
PS: the code is from Intel:
=================================================================
!
! Copyright 2003-2013 Intel Corporation. All Rights Reserved.
!
! The source code contained or described herein and all documents
! related to the source code ("Material") are owned by Intel Corporation
! or its suppliers or licensors. Title to the Material remains with
! Intel Corporation or its suppliers and licensors. The Material is
! protected by worldwide copyright and trade secret laws and treaty
! provisions. No part of the Material may be used, copied, reproduced,
! modified, published, uploaded, posted, transmitted, distributed, or
! disclosed in any way without Intel's prior express written permission.
!
! No license under any patent, copyright, trade secret or other
! intellectual property right is granted to or conferred upon you by
! disclosure or delivery of the Materials, either expressly, by
! implication, inducement, estoppel or otherwise. Any license under
! such intellectual property rights must be express and approved by
! Intel in writing.
!
program main
use mpi
implicit none
integer i, size, rank, namelen, ierr
character (len=MPI_MAX_PROCESSOR_NAME) :: name
integer stat(MPI_STATUS_SIZE)
call MPI_INIT (ierr)
call MPI_COMM_SIZE (MPI_COMM_WORLD, size, ierr)
call MPI_COMM_RANK (MPI_COMM_WORLD, rank, ierr)
call MPI_GET_PROCESSOR_NAME (name, namelen, ierr)
if (rank.eq.0) then
print *, 'Hello world: rank ', rank, ' of ', size, ' running on ', name
do i = 1, size - 1
call MPI_RECV (rank, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (size, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (namelen, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
name = ''
call MPI_RECV (name, namelen, MPI_CHARACTER, i, 1, MPI_COMM_WORLD, stat, ierr)
print *, 'Hello world: rank ', rank, ' of ', size, ' running on ', name
enddo
else
call MPI_SEND (rank, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr)
call MPI_SEND (size, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr)
call MPI_SEND (namelen, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr)
call MPI_SEND (name, namelen, MPI_CHARACTER, 0, 1, MPI_COMM_WORLD, ierr)
endif
call MPI_FINALIZE (ierr)
end
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My suggestion is that you use a "divide-and-conquer" strategy. Just as you should sharpen and clean your arms before going to battle or get all the ingredients ready before baking a 50-lb loaf of bread, see if you can (i) reduce your problem size, (ii) run on a single processor with one thread and obtain results that are reasonable. After that is done, you can parallelize your code for SMP, and then step up to MPI and clusters.
The build-log that you showed in #12 shows only the error messages. Usually, to diagnose what went wrong, one needs to know the commands/settings/steps used in the build attempt that failed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Once more, many thanks.
I am trying to do as suggested, I hope, using Intel's own code.
I think the paths things was sorted, but now I am stuck trying to understand IF I put the right path and why it does not see the mpi headers. As they say, a day at a time...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
A couple of comments that may or may not be helpful:
1) Intel MPI currently provides only 64-bit support. You're building (it would seem) for x64, so that should be ok.
2) There is a dedicated Intel forum for MPI and other cluster-related things. If you need more help with Intel MPI, that's a great place to ask.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Refer to https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/712760 for continued discussion on building/running the MPI example cited in post #13.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page