27 #include <dmlc/base.h> 29 #include <dmlc/type_traits.h> 30 #include <dmlc/parameter.h> 31 #include <mshadow/tensor.h> 34 #include <nnvm/tuple.h> 35 #include <nnvm/symbolic.h> 41 #ifndef MXNET_USE_OPENCV 42 #define MXNET_USE_OPENCV 1 48 #ifndef MXNET_USE_CUDA 49 #define MXNET_USE_CUDA MSHADOW_USE_CUDA 55 #ifndef MXNET_USE_CUDNN 56 #define MXNET_USE_CUDNN MSHADOW_USE_CUDNN 62 #ifndef MXNET_USE_CUSOLVER 63 #define MXNET_USE_CUSOLVER MSHADOW_USE_CUSOLVER 67 #define MXNET_GPU_NOT_ENABLED_ERROR "GPU is not enabled" 73 #if DMLC_USE_CXX11 && defined(__GNUC__) && !defined(__clang_version__) 74 #if __GNUC__ == 4 && __GNUC_MINOR__ < 8 75 #error "Currently we need g++ 4.8 or higher to fully support c++11 features" 86 #define MXNET_API __declspec(dllexport) 88 #define MXNET_API __declspec(dllimport) 97 #ifndef MXNET_PREDICT_ONLY 98 #define MXNET_PREDICT_ONLY 0 104 #if MXNET_USE_PROFILER 105 #define PROFILER_MESSAGE(msg) msg 107 #define PROFILER_MESSAGE(msg) nullptr 111 #define MXNET_MAJOR 0 113 #define MXNET_MINOR 11 115 #define MXNET_PATCH 0 117 #define MXNET_VERSION (MXNET_MAJOR*10000 + MXNET_MINOR*100 + MXNET_PATCH) 119 #define MXNET_MAKE_VERSION(major, minor, patch) ((major)*10000 + (minor)*100 + patch) 123 #define PROFILER_MESSAGE_FUNCNAME PROFILER_MESSAGE(__FUNCTION__) 159 if (dev_type ==
kCPUPinned)
return cpu::kDevMask;
182 return !(*
this == b);
188 inline void Save(dmlc::Stream *strm)
const {
189 strm->Write(&dev_type,
sizeof(dev_type));
190 strm->Write(&dev_id,
sizeof(dev_id));
197 inline bool Load(dmlc::Stream *strm) {
198 if (strm->Read(&dev_type,
sizeof(dev_type)) !=
sizeof(
dev_type))
return false;
199 if (strm->Read(&dev_id,
sizeof(int32_t)) !=
sizeof(int32_t))
return false;
213 inline static Context CPU(int32_t dev_id = 0);
219 inline static Context GPU(int32_t dev_id = -1);
250 template<
typename xpu>
252 return static_cast<mshadow::Stream<xpu>*
>(stream);
276 if (dev_type !=
kCPU) {
278 CHECK_EQ(cudaGetDevice(&ctx.
dev_id), cudaSuccess);
280 LOG(FATAL) <<
"Please compile with CUDA enabled for cuda features";
303 std::string::size_type l = str.find(
'(');
304 CHECK_NE(l, std::string::npos);
305 std::string::size_type r = str.find(
')');
306 CHECK_EQ(r, str.length()-1);
308 std::string type = str.substr(0, l);
309 int id = std::stoi(str.substr(l+1, r-l-1));
312 }
else if (type ==
"gpu") {
314 }
else if (type ==
"cpu_pinned") {
317 LOG(FATAL) <<
"Invalid context string " << str;
320 LOG(FATAL) <<
"Invalid context string " << str;
331 out <<
"cpu_pinned(";
340 #define STRINGIZE_DETAIL(x) #x 341 #define STRINGIZE(x) STRINGIZE_DETAIL(x) 342 #define MXNET_DESCRIBE(...) describe(__VA_ARGS__ "\n\nFrom:" __FILE__ ":" STRINGIZE(__LINE__)) 343 #define ADD_FILELINE "\n\nDefined in " __FILE__ ":L" STRINGIZE(__LINE__) 349 #endif // MXNET_BASE_H_ static const int32_t kMaxDevID
the maximal device index
Definition: base.h:205
namespace of mxnet
Definition: base.h:126
mshadow::Stream< xpu > * get_stream() const
get mshadow stream from Context
Definition: base.h:251
bool Load(dmlc::Stream *strm)
load the content from binary stream
Definition: base.h:197
mshadow::default_real_t real_t
data type that will be used to store ndarray
Definition: base.h:134
static Context GPU(int32_t dev_id=-1)
nnvm::TShape TShape
Shape data structure used to record shape information.
Definition: base.h:136
Context ctx
base Context
Definition: base.h:240
bool operator<(const Context &b) const
Comparator, used to enable Context as std::map key.
int dev_mask() const
Get corresponding device mask.
Definition: base.h:158
static const int32_t kMaxDevType
the maximal device type
Definition: base.h:203
execution time context. The information needed in runtime for actual execution.
Definition: base.h:238
DeviceType dev_type
the device type we run the op on
Definition: base.h:149
int32_t dev_id
device id we are going to run it on
Definition: base.h:151
static Context FromString(std::string str)
void * stream
the stream of the device, can be NULL or Stream<gpu>* in GPU mode
Definition: base.h:244
void Save(dmlc::Stream *strm) const
save the content into binary stream
Definition: base.h:188
mshadow::gpu gpu
mxnet gpu
Definition: base.h:130
const Context & get_ctx() const
get the base Context from RunContext
Definition: base.h:255
DeviceType
Type of device.
Definition: base.h:143
mshadow::cpu cpu
mxnet cpu
Definition: base.h:128
nnvm::Op Op
operator structure from NNVM
Definition: base.h:138
Context()
default constructor
Definition: base.h:153
static Context Create(DeviceType dev_type, int32_t dev_id=-1)
Create a new context.
bool operator!=(const Context &b) const
check if current context not equals another one
Definition: base.h:181
static Context CPU(int32_t dev_id=0)
std::ostream & operator<<(std::ostream &out, const NDArray &ndarray)
static Context CPUPinned(int32_t dev_id=-1)
mshadow::index_t index_t
index type usually use unsigned
Definition: base.h:132
TBlob class that holds common representation of arbirary dimension tensor, can be used to transformed...
Context information about the execution environment.
Definition: base.h:141
bool operator==(const Context &b) const
check if current context equals another one
Definition: base.h:173
unsigned index_t
Definition: base.h:36