Skip to content

Commit 5e83306

Browse files
sherry-1001jiangzhichen
andauthored
optimized get API (#5)
* optimized `get` API * tirvial --------- Co-authored-by: jiangzhichen <[email protected]>
1 parent 9efa6ab commit 5e83306

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

examples/cpp/cxx_test.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,23 @@ int main()
3636
<< "returned: "
3737
<< hp->get("x.y.z", "false") << std::endl;
3838

39+
// ======= opt api test =======
40+
41+
PUTPARAM(xacc.eager, false);
42+
PUTPARAM(xacc.lazy.device, "xla");
43+
44+
std::string device_type = GETPARAM(xacc.lazy.device, "xpu");
45+
std::cout << "\n:: (opt api) test put parameter" << std::endl
46+
<< "expected: xla" << std::endl
47+
<< "returned: " << device_type << std::endl
48+
<< "expected: 0" << std::endl
49+
<< "returned: " << GETPARAM(xacc.eager, true) << std::endl;
50+
51+
std::cout << "\n:: (opt api) test undefined" << std::endl
52+
<< "expected: 100" << std::endl
53+
<< "returned: " << GETPARAM(xacc.dynamo.time, 100) << std::endl;
54+
3955
std::cout << "in main" << std::endl;
56+
4057
return 0;
4158
}

hyperparameter/hyperparameter.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace hyperparameter
3232
{
3333
return finalize((len >= 32 ? h32bytes(p, len, seed) : seed + PRIME5) + len, p + (len & ~0x1F), len & 0x1F);
3434
}
35-
35+
3636
private:
3737
static constexpr uint64_t PRIME1 = 11400714785074694791ULL;
3838
static constexpr uint64_t PRIME2 = 14029467366897019727ULL;
@@ -191,6 +191,21 @@ namespace hyperparameter
191191
{
192192
return storage_put_str(_storage, key, val);
193193
}
194+
195+
std::shared_ptr<hyperparameter::Hyperparameter> get_hp() {
196+
static std::shared_ptr<Hyperparameter> hp;
197+
if (!hp) {
198+
hp = hyperparameter::create_shared();
199+
}
200+
return hp;
201+
}
194202
}
195203

204+
#define GETHP hyperparameter::get_hp()
205+
206+
// Implicit create hyperparameter object
207+
#define GETPARAM(p, default_val) \
208+
(GETHP->get(([](){ constexpr uint64_t x = hyperparameter::xxhash(#p,sizeof(#p)-1); return x;})(), default_val))
209+
#define PUTPARAM(p, default_val) (GETHP->put(#p, default_val))
210+
196211
#endif

0 commit comments

Comments
 (0)