MCPcopy Create free account
hub / github.com/Oneflow-Inc/oneflow / Recv

Function Recv

oneflow/user/kernels/communicate_util.cpp:52–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50}
51
52Maybe<void> Recv(void* out, size_t elem_cnt, DataType dtype, int64_t src, DeviceType device_type,
53 ep::Stream* stream) {
54 if (GlobalProcessCtx::Rank() == src) {
55 size_t buffer_size = elem_cnt * GetSizeOfDataType(dtype);
56 auto** src_data_ptr = ThreadLocalSrcDataPtr();
57 const void* in = *src_data_ptr;
58 CHECK_OR_RETURN(*src_data_ptr != nullptr);
59 std::unique_ptr<ep::primitive::Memcpy> memcpy_primitive =
60 ep::primitive::NewPrimitive<ep::primitive::MemcpyFactory>(device_type,
61 ep::primitive::MemcpyKind::kDtoD);
62 CHECK(memcpy_primitive) << "Can not create Memcpy primitive for device type " << device_type;
63 memcpy_primitive->Launch(stream, out, in, buffer_size);
64 *src_data_ptr = nullptr;
65 } else {
66 std::unique_ptr<ccl::Recv> recv =
67 ccl::NewCollectiveCommunication<ccl::Recv>(device_type, dtype);
68 recv->Launch(stream, out, elem_cnt, src);
69 }
70 return Maybe<void>::Ok();
71}
72
73} // namespace oneflow

Callers 7

ComputeMethod · 0.70
ComputeMethod · 0.70
ComputeMethod · 0.70
ComputeMethod · 0.70
ComputeMethod · 0.70
ComputeMethod · 0.70
ComputeMethod · 0.70

Calls 3

GetSizeOfDataTypeFunction · 0.85
ThreadLocalSrcDataPtrFunction · 0.85
LaunchMethod · 0.45

Tested by

no test coverage detected