ncclRecv Interface

interface

Receive data from rank peer into recvbuff.

Rank peer needs to call ncclSend with the same datatype and the same count as this rank.

This operation is blocking for the GPU. If multiple ncclSend() and ncclRecv() operations need to progress concurrently to complete, they must be fused within a ncclGroupStart()/ ncclGroupEnd() section.


Called by

interface~~ncclrecv~~CalledByGraph interface~ncclrecv ncclRecv proc~execute_nccl backend_nccl%execute_nccl proc~execute_nccl->interface~ncclrecv

public function ncclRecv(recvbuff, count, datatype, peer, comm, stream) result(ncclResult_t) bind(c, name='ncclRecv')

Arguments

Type IntentOptional Attributes Name
real(kind=c_float) :: recvbuff

Buffer to recv data into

integer(kind=c_size_t), value :: count

Number of elements to recv

type(ncclDataType), value :: datatype

Datatype to recv

integer(kind=c_int), value :: peer

Source GPU

type(ncclComm), value :: comm

Communicator

type(dtfft_stream_t), value :: stream

CUDA Stream

Return Value integer(kind=c_int32_t)

Completion status