Josh, Paul,
the problem with old PGI compilers comes from the preprocessor (!)
with pgi 12.10 :
oshmem/shmem/fortran/start_pes_f.c
SHMEM_GENERATE_WEAK_BINDINGS(START_PES, start_pes)
gets expanded as
#pragma weak START_PES = PSTART_PES SHMEM_GENERATE_WEAK_PRAGMA ( weak
start_pes_ = pstart_pes_ )
whereas with pgi 14.7, it gets expanded as
#pragma weak START_PES = PSTART_PES
#pragma weak start_pes_ = pstart_pes_
#pragma weak start_pes__ = pstart_pes__
from oshmem/shmem/fortran/profile/pbindings.h :
#define SHMEM_GENERATE_WEAK_PRAGMA(x) _Pragma(#x)
#define SHMEM_GENERATE_WEAK_BINDINGS(UPPER_NAME,
lower_name) \
SHMEM_GENERATE_WEAK_PRAGMA(weak UPPER_NAME = P ##
UPPER_NAME) \
SHMEM_GENERATE_WEAK_PRAGMA(weak lower_name ## _ = p ## lower_name ##
_) \
SHMEM_GENERATE_WEAK_PRAGMA(weak lower_name ## __ = p ## lower_name
## __)
a workaround is to manually expand the SHMEM_GENERATE_WEAK_BINDINGS
macro and replace
SHMEM_GENERATE_WEAK_BINDINGS(START_PES, start_pes)
with
SHMEM_GENERATE_WEAK_PRAGMA(weak START_PES = PSTART_PES)
SHMEM_GENERATE_WEAK_PRAGMA(weak start_pes_ = pstart_pes_)
SHMEM_GENERATE_WEAK_PRAGMA(weak start_pes__ = pstart_pes__)
/* i was unable to get something that works by simply replacing the
definition of the SHMEM_GENERATE_WEAK_BINDINGS macro */
of course, this would have to be repeated in all the source files ...
Cheers,
Gilles
On 2014/08/15 3:44, Paul Hargrove wrote:
> Josh,
>
> The specific compilers that caused the most problems are the older PGI
> compilers (any before 13.x).
> In this case the user has the option to update their compiler to 13.10 or
> newer.
>
> There are also issues with IBM's xlf.
> For the IBM compiler I have never found a version that builds/links the MPI
> f08 bindings, and now also find no version that can link the OSHMEM fortran
> bindings.
>
> -Paul
>
> -Paul
>
>
> On Thu, Aug 14, 2014 at 11:30 AM, Joshua Ladd <[email protected]> wrote:
>
>> We will update the README accordingly. Thank you, Paul.
>>
>> Josh
>>
>>
>> On Thu, Aug 14, 2014 at 10:00 AM, Jeff Squyres (jsquyres) <
>> [email protected]> wrote:
>>
>>> Good points.
>>>
>>> Mellanox -- can you update per Paul's suggestions?
>>>
>>>
>>> On Aug 13, 2014, at 8:26 PM, Paul Hargrove <[email protected]> wrote:
>>>
>>>> The following is NOT a bug report.
>>>> This is just an observation that may deserve some text in the README.
>>>>
>>>> I've reported issues in the past with some Fortran compilers (mostly
>>> older XLC and PGI) which either cannot build the "use mpi_f08" module, or
>>> cannot correctly link to it (and sometimes this fails only if configured
>>> with --enable-debug).
>>>> Testing the OSHMEM Fortran bindings (enabled by default on Linux) I
>>> have found several compilers which fail to link the examples
>>> (hello_oshmemfh and ring_oshmemfh). I reported one specific instance (with
>>> xlc-11/xlf-13) back in February:
>>> http://www.open-mpi.org/community/lists/devel/2014/02/14057.php
>>>> So far I have these failures only on platforms where the Fortran
>>> compiler is *known* to be broken for the MPI f90 and/or f08 bindings.
>>> Specifically, all the failing platforms are ones on which either:
>>>> + Configure determines (without my help) that FC cannot build the F90
>>> and/or F08 modules.
>>>> OR
>>>> + I must pass --enable-mpi-fortran=usempi or --enable-mpi-fortran=mpifh
>>> for cases configure cannot detect.
>>>> So, I do *not* believe there is anything wrong with the OSHMEM code,
>>> which is why I started this post with "The following is NOT a bug report".
>>> However, I have two recommendations to make:
>>>> 1) Documentation
>>>>
>>>> The README says just:
>>>>
>>>> --disable-oshmem-fortran
>>>> Disable building only the Fortran OSHMEM bindings.
>>>>
>>>> So, I recommend adding a sentence there referencing the "Compiler
>>> Notes" section of the README which has details on some known bad Fortran
>>> compilers.
>>>> 2) Configure:
>>>>
>>>> As I noted above, at least some of the failures are on platforms where
>>> configure has determined it cannot build the f08 MPI bindings. So, maybe
>>> there is something that could be done at configure time to disqualify some
>>> Fortran compilers from building the OSHMEM fotran bindings, too.
>>>> -Paul
>>>>
>>>> --
>>>> Paul H. Hargrove [email protected]
>>>> Future Technologies Group
>>>> Computer and Data Sciences Department Tel: +1-510-495-2352
>>>> Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
>>>> _______________________________________________
>>>> devel mailing list
>>>> [email protected]
>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>> Link to this post:
>>> http://www.open-mpi.org/community/lists/devel/2014/08/15643.php
>>>
>>>
>>> --
>>> Jeff Squyres
>>> [email protected]
>>> For corporate legal information go to:
>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>
>>> _______________________________________________
>>> devel mailing list
>>> [email protected]
>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>> Link to this post:
>>> http://www.open-mpi.org/community/lists/devel/2014/08/15650.php
>>>
>>
>> _______________________________________________
>> devel mailing list
>> [email protected]
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post:
>> http://www.open-mpi.org/community/lists/devel/2014/08/15653.php
>>
>
>
>
>
> _______________________________________________
> devel mailing list
> [email protected]
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2014/08/15654.php