MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / dev_tensor_memset

Method dev_tensor_memset

src/core/impl/tensor.cpp:725–763  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

723/* =================== misc =================== */
724
725void mgb::dev_tensor_memset(const DeviceTensorND& tensor, int val) {
726 auto&& env = CompNodeEnv::from_comp_node(tensor.comp_node());
727 env.activate();
728 size_t size = tensor.layout().span().dist_byte();
729 switch (env.property().type) {
730#if MGB_CUDA
731 case CompNode::DeviceType::CUDA:
732 MGB_CUDA_CHECK(cudaMemsetAsync(
733 tensor.raw_ptr(), val, size, env.cuda_env().stream));
734 break;
735#endif
736#if MGB_ATLAS
737 case CompNode::DeviceType::ATLAS:
738#if MGB_USE_ATLAS_ASYNC_API
739 MGB_ATLAS_CHECK(aclrtMemsetAsync(
740 tensor.raw_ptr(), -1, val, size, env.atlas_env().stream));
741#else
742 MGB_ATLAS_CHECK(aclrtMemset(tensor.raw_ptr(), -1, val, size));
743#endif
744 break;
745#endif
746#if MGB_CAMBRICON
747 case CompNode::DeviceType::CAMBRICON:
748 MGB_CNRT_CHECK(
749 cnrtMemsetAsync(tensor.raw_ptr(), val, size, env.cnrt_env().queue));
750 break;
751#endif
752 case CompNode::DeviceType::CPU: {
753 auto fill = [tensor, size, val]() {
754 std::memset(tensor.as_megdnn().raw_ptr(), val, size);
755 };
756 env.cpu_env().dispatch(fill);
757 } break;
758 default:
759 mgb_throw(
760 MegBrainError, "unhandled comp node in dev_tensor_memset: %s",
761 tensor.comp_node().to_string().c_str());
762 }
763}
764
765namespace mgb {
766template class TensorStorage<HostTensorStorageTrait>;

Callers

nothing calls this directly

Calls 10

dist_byteMethod · 0.80
spanMethod · 0.80
as_megdnnMethod · 0.80
comp_nodeMethod · 0.45
activateMethod · 0.45
layoutMethod · 0.45
propertyMethod · 0.45
raw_ptrMethod · 0.45
dispatchMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected