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

Method GetState

oneflow/core/ep/cpu/cpu_random_generator.cpp:39–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37size_t CPUGenerator::GetStateSize() const { return sizeof(CPUGeneratorState); }
38
39void CPUGenerator::GetState(size_t state_size, void* state) const {
40 CHECK_EQ_OR_THROW(state_size, GetStateSize())
41 << "state size of cpu generator should be equal to " << GetStateSize();
42 CPUGeneratorState local_state;
43 std::stringstream ss;
44 ss << engine_;
45 std::vector<std::string> splits;
46 Split(ss.str(), " ", [&](std::string&& s) { splits.emplace_back(s); });
47 // The last element in `splits` indicates state size, not state.
48 if (splits.size() != CPUGeneratorState::state_size + 1) {
49 return THROW(RuntimeError) << "std::mt19937 state size should be "
50 << CPUGeneratorState::state_size << ", but got "
51 << splits.size() - 1;
52 }
53 for (int i = 0; i < CPUGeneratorState::state_size; ++i) {
54 local_state.states[i] = std::atoll(splits[i].data());
55 }
56 local_state.seed = current_seed();
57 memcpy(state, &local_state, sizeof(CPUGeneratorState));
58}
59
60void CPUGenerator::SetState(size_t state_size, const void* state) {
61 CHECK_EQ_OR_THROW(state_size, GetStateSize())

Callers

nothing calls this directly

Calls 4

SplitFunction · 0.85
emplace_backMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected