-
Notifications
You must be signed in to change notification settings - Fork 858
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Possibly incorrect F08 test in ./configure script #11582
Comments
should it be
instead? Or should we (first?) try what is mandated by the standard"
compiles just fine (and I guess this is the expected behavior) however
and
both compile correctly but issue the same warning
Despite the warning, I was able to successfully build Open MPI and some simple test program. so
That being said, there is no warning when using |
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Thanks for the feedback. It's not the GCC directive in and of itself that causes the issue - I think our compiler just ignores the directive itself. However, the problem is due to the fact that Using |
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Will this be in the next release-candidate, then? |
@jsquyres @bwbarrett could you please discuss this issue during the next telcon? I proposed #11591 in order to address this, but it breaks on IBM platforms (and I am unable to investigate this without access to the IBM environment). If we fix that later (e.g.
|
@jsquyres AWS is also bitten by this. Do we have a consensus on the fix? |
First try if "type(*), dimension(..) :: foo" works as-is (e.g. without any pragma/directive). Thanks Chris Parrott for bringing this to our attention Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
FYI: more discussion is occurring on #11591 |
NVIDIA HPC Compiler (e.g. nvfortran) incorrectly selected the GCC style pragmas to support IGNORE_TKR. Harden the test by mimicking exactly the mpi f08 bindings in order to fix that false positive. Thanks Chris Parrot for the report. Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
NVIDIA HPC Compiler (e.g. nvfortran) incorrectly selected the GCC style pragmas to support IGNORE_TKR. Harden the test by mimicking exactly the mpi f08 bindings in order to fix that false positive. Thanks Chris Parrot for the report. Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp> (cherry picked from commit 600df6a)
NVIDIA HPC Compiler (e.g. nvfortran) incorrectly selected the GCC style pragmas to support IGNORE_TKR. Harden the test by mimicking exactly the mpi f08 bindings in order to fix that false positive. Thanks Chris Parrot for the report. Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp> (back-ported from commit 600df6a)
NVIDIA HPC Compiler (e.g. nvfortran) incorrectly selected the GCC style pragmas to support IGNORE_TKR. Harden the test by mimicking exactly the mpi f08 bindings in order to fix that false positive. Thanks Chris Parrot for the report. Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp> bot:notacherrypick (back-ported from commit 600df6a)
NVIDIA HPC Compiler (e.g. nvfortran) incorrectly selected the GCC style pragmas to support IGNORE_TKR. Harden the test by mimicking exactly the mpi f08 bindings in order to fix that false positive. Thanks Chris Parrot for the report. Refs. open-mpi#11582 Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp> bot:notacherrypick (back-ported from commit 600df6a)
Background information
What version of Open MPI are you using? (e.g., v3.0.5, v4.0.2, git branch name and hash, etc.)
We observed this while testing Open MPI 3.1.5 with the NVIDIA HPC SDK compilers, but we also see the same behavior in the current 4.1.5 release.
(Yes, we do understand that 3.1.5 is obsolete, but I have been told that we have an app that depends on this version for performance reasons until some additional functionality is implemented in UCX.)
Describe how Open MPI was installed
Downloaded source tarball. Set path to pick up NVIDIA HPC SDK compilers, then ran:
CC=nvc FC=nvfortran ./configure
Please describe the system on which you are running
This problem is independent of any particular operating system version and CPU type.
Details of the problem
This problem may be tangentially related to #9795.
In the recent 23.3 release
nvfortran
, our compiler developers have added support fortype (*), dimension (*)
declarations in Fortran. Where previously (release 23.1 and before), the following test would fail withnvfortran
in./configure
:This test now succeeds with
nvfortran
, causing./configure
to incorrectly assume thatnvfortran
supports the!GCC$ ATTRIBUTES NO_ARG_CHECK
directive.Before,
./configure
would correctly fail down to the!DIR$ IGNORE_TKR
case:Now the
!GCC$ ATTRIBUTES NO_ARG_CHECK
test succeeds, causing./configure
to incorrectly assume thatnvfortran
supports this directive.This, in turn, causes Open MPI to generate incorrect Fortran interfaces with
nvfortran
that use!GCC$ ATTRIBUTES NO_ARG_CHECK ::
rather than the standard!DIR$ IGNORE_TKR
directive.According to our Fortran language expert:
Thus, he believes this test should pass for all standards-compliant Fortran compilers, and it should not assume that the GCC directive is needed here.
Could you take a look at this
./configure
test and consider if the logic here is correct?Thanks in advance.
The text was updated successfully, but these errors were encountered: