text: #pragma once
  
  #include <functional>
  #include <string>
  
  namespace caffe2 { namespace onnx {
  
  enum class DeviceType {CPU=0, CUDA=1};
  
  struct Device {
    Device(const std::string& spec);
    DeviceType type;
    int device_id{-1};
  };
  
  }}
  
  namespace std {
  template <> struct hash<caffe2::onnx::DeviceType> {
    std::size_t operator()(const caffe2::onnx::DeviceType &k) const {
      return std::hash<int>()(static_cast<int>(k));
    }
  };
  } // namespace std
  