Skip to content

Missing ELEMENTAL in declaration of ompi_request_op_ne in mpi_f08 module?  #10057

Closed
@sfilippone

Description

@sfilippone

Thank you for taking the time to submit an issue!

Background information

What version of Open MPI are you using? (e.g., v3.0.5, v4.0.2, git branch name and hash, etc.)

openmpi-4.1.0-5.fc34.x86_64

Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)

Fedora 34 package

If you are building/installing from a git clone, please copy-n-paste the output from git submodule status.

Please describe the system on which you are running

  • Operating system/version:
  • Computer hardware:
  • Network type:
    Linux laptop

Details of the problem

When using the MPI module mpi_f08 I am getting the following error.

psi_dswapdata.F90:248:16:

  248 |         if (any(y%comid .ne. mpi_request_null)) then
      |                1
Error: Operands of comparison operator ‘.ne.’ at (1) are TYPE(mpi_request)/TYPE(mpi_request)

The y%comid variable is an array.
In mpi-types.F90 (am not sure how the various includes work with the f08 version) I see

 logical function ompi_request_op_ne(a, b)
    type(MPI_Request), intent(in) :: a, b
    ompi_request_op_ne = (a%MPI_VAL .NE. b%MPI_VAL)
  end function ompi_request_op_ne

Now, the error message above shold be fixed by declaring the function to be ELEMENTAL so that the array comparison is treated properly (and similarly for all the other defined equality/inequality operators)

 elemental  function ompi_request_op_ne(a, b) result(res)
   logical :: res 
    type(MPI_Request), intent(in) :: a, b
    res = (a%MPI_VAL .NE. b%MPI_VAL)
  end function ompi_request_op_ne

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions