Ignore:
Timestamp:
01/10/20 12:20:51 (4 years ago)
Author:
adurocher
Message:

transfert_mpi : fixed tmp array copy issue on GPU

PGI doesn't give the GPU version (host_data use device) of 'message_*(i)%buff' when calling MPI_send_init.
Using 'message_*(i)%buff(1)' instead solves the problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/parallel/transfert_mpi.f90

    r999 r1000  
    336336      call MPI_Request_free(message%mpi_requests_in(i), ierr) 
    337337      !$acc host_data use_device(message%mpi_buffer_out(i)%buff) 
    338       call MPI_Send_Init( message%mpi_buffer_out(i)%buff, message%mpi_buffer_out(i)%n, MPI_REAL8, i,& 
     338      ! /!\ buff(1) is important for PGI to avoid temporary array copy 
     339      call MPI_Send_Init( message%mpi_buffer_out(i)%buff(1), message%mpi_buffer_out(i)%n, MPI_REAL8, i,& 
    339340                          0, comm_icosa, message%mpi_requests_out(i), ierr ) 
    340341      !$acc end host_data 
    341342      !$acc host_data use_device(message%mpi_buffer_in(i)%buff) 
    342       call MPI_Recv_Init( message%mpi_buffer_in(i)%buff, message%mpi_buffer_in(i)%n, MPI_REAL8, i,& 
     343      call MPI_Recv_Init( message%mpi_buffer_in(i)%buff(1), message%mpi_buffer_in(i)%n, MPI_REAL8, i,& 
    343344                          0, comm_icosa, message%mpi_requests_in(i), ierr ) 
    344345      !$acc end host_data 
Note: See TracChangeset for help on using the changeset viewer.