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

Function CalcSumOfBlobs

oneflow/core/kernel/boxing_kernel.cpp:51–65  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49
50template<typename T>
51void CalcSumOfBlobs(KernelContext* ctx, const std::function<Blob*(const std::string&)>& BnInOp2Blob,
52 const PbRpf<std::string>& src_bns, const std::string& dst_bn) {
53 Blob* dst_blob = BnInOp2Blob(dst_bn);
54 std::unique_ptr<ep::primitive::Add> primitive =
55 ep::primitive::NewPrimitive<ep::primitive::AddFactory>(DeviceType::kCPU,
56 dst_blob->data_type());
57 CHECK(primitive);
58 std::vector<const void*> srcs(src_bns.size());
59 FOR_RANGE(size_t, i, 0, src_bns.size()) {
60 Blob* src_blob_i = BnInOp2Blob(src_bns.Get(i));
61 srcs[i] = src_blob_i->dptr<T>();
62 }
63 primitive->Launch(ctx->stream(), srcs.data(), srcs.size(), dst_blob->mut_dptr<T>(),
64 dst_blob->static_shape().elem_cnt());
65}
66
67void CopyFromFirstToOtherBlobs(KernelContext* ctx,
68 const std::function<Blob*(const std::string&)>& BnInOp2Blob,

Callers

nothing calls this directly

Calls 6

data_typeMethod · 0.45
sizeMethod · 0.45
LaunchMethod · 0.45
streamMethod · 0.45
dataMethod · 0.45
elem_cntMethod · 0.45

Tested by

no test coverage detected