pytorch/caffe2/opt/onnx_convert.h
Orion Reblitz-Richardson 0f419abf40 Roll nomnigraph build into caffe2 (#11303)
Summary:
We need to remove nomnigraph from the list of public libraries in order to support libtorch extensions. Easiest way to do this is to include it into the Caffe2 source like all other caffe2/core/ code.

However, because the headers are in a different place, we need to include them for linked libraries (pybind, tests, etc).

On an upside, this means that nomnigraph is now default hidden visibility too.

FYI peterjc123 xkszltl goldsborough bwasti Yangqing
Pull Request resolved: https://github.com/pytorch/pytorch/pull/11303

Reviewed By: pjh5

Differential Revision: D9694932

Pulled By: orionr

fbshipit-source-id: 5db3eb20bc5ddc873ce9151236b74663fbb33ed8
2018-09-06 19:38:09 -07:00

38 lines
1.3 KiB
C++

#include "caffe2/core/common.h"
class CAFFE2_API OnnxAnnotation : public nom::repr::Annotation {
public:
OnnxAnnotation() : Annotation(AnnotationKind::Onnx) {}
OnnxAnnotation(std::string device)
: Annotation(AnnotationKind::Onnx), Device(device) {}
void setDevice(std::string device) { Device = device; }
const std::string getDevice() const { return Device; }
void setOperatorDef(caffe2::OperatorDef* opDef) {
OpDef = opDef;
}
const caffe2::OperatorDef* getOperatorDef() const {
assert(OpDef && "OperatorDef was never set. Use OnnxAnnotation::setOperatorDef.");
return OpDef;
}
caffe2::OperatorDef* getMutableOperatorDef() {
assert(OpDef && "OperatorDef was never set. Use OnnxAnnotation::setOperatorDef.");
return OpDef;
}
static bool classof(const Annotation *A) {
return A->getKind() == AnnotationKind::Onnx;
}
private:
std::string Device = "";
caffe2::OperatorDef* OpDef = nullptr;
};
CAFFE2_API nom::repr::NNModule convertToNNModule(caffe2::NetDef &net, std::unordered_map<std::string, nom::repr::NNGraph::NodeRef>* blobMapOut = nullptr);
CAFFE2_API caffe2::NetDef convertToOnnxProto(nom::repr::NNModule&);
CAFFE2_API std::unique_ptr<nom::repr::NeuralNetOperator> convertToOperatorDef(caffe2::OperatorDef op);