Poplar and PopLibs
EngineOptions.hpp
1// Copyright (c) 2022 Graphcore Ltd. All rights reserved.
2
3#ifndef poplar_EngineOptions_hpp
4#define poplar_EngineOptions_hpp
5
6#include <poplar/OptionFlags.hpp>
7#include <poplar/Target.hpp>
8
9namespace poplar {
10
11namespace core {
12struct EngineOptions;
13}
14
29public:
30 // Construct a EngineOptions object from an option flags object.
31 // Flags from the environment variable are parsed and take precedence.
32 explicit EngineOptions(const poplar::OptionFlags &opts, const Target &target,
33 unsigned repFactor);
34
36
37 const core::EngineOptions *getImpl() const { return impl.get(); }
38
39private:
40 std::unique_ptr<core::EngineOptions> impl;
41 size_t targetHash;
42 friend struct std::hash<EngineOptions>;
43};
44
53std::size_t hash_value(const EngineOptions &options);
54
55} // namespace poplar
56
57// Hashing support for EngineOptions
58namespace std {
59
60template <> struct hash<poplar::EngineOptions> {
61 size_t operator()(const poplar::EngineOptions &) const;
62};
63
64} // namespace std
65
66#endif // poplar_EngineOptions_hpp
A group of properties for a poplar::Executable object.
Definition: EngineOptions.hpp:28
A set of option/value string flags to be used in various APIs.
Definition: OptionFlags.hpp:24
A target representation.
Definition: Target.hpp:69
Poplar classes and functions.
Definition: ArrayRef.hpp:14
std::size_t hash_value(const EngineOptions &options)
Obtain a hash value for an EngineOptions object.