28 #include <dmlc/base.h> 30 #include <dmlc/type_traits.h> 31 #include <dmlc/parameter.h> 32 #include <mshadow/tensor.h> 35 #include <nnvm/tuple.h> 36 #include <nnvm/symbolic.h> 42 #ifndef MXNET_USE_OPENCV 43 #define MXNET_USE_OPENCV 1 49 #ifndef MXNET_USE_CUDA 50 #define MXNET_USE_CUDA MSHADOW_USE_CUDA 56 #ifndef MXNET_USE_CUDNN 57 #define MXNET_USE_CUDNN MSHADOW_USE_CUDNN 63 #ifndef MXNET_USE_CUSOLVER 64 #define MXNET_USE_CUSOLVER MSHADOW_USE_CUSOLVER 68 #define MXNET_GPU_NOT_ENABLED_ERROR "GPU is not enabled" 74 #if DMLC_USE_CXX11 && defined(__GNUC__) && !defined(__clang_version__) 75 #if __GNUC__ == 4 && __GNUC_MINOR__ < 8 76 #error "Currently we need g++ 4.8 or higher to fully support c++11 features" 87 #define MXNET_API __declspec(dllexport) 89 #define MXNET_API __declspec(dllimport) 98 #ifndef MXNET_PREDICT_ONLY 99 #define MXNET_PREDICT_ONLY 0 105 #if MXNET_USE_PROFILER 106 #define PROFILER_MESSAGE(msg) msg 108 #define PROFILER_MESSAGE(msg) nullptr 112 #define MXNET_MAJOR 1 114 #define MXNET_MINOR 0 116 #define MXNET_PATCH 0 118 #define MXNET_VERSION (MXNET_MAJOR*10000 + MXNET_MINOR*100 + MXNET_PATCH) 120 #define MXNET_MAKE_VERSION(major, minor, patch) ((major)*10000 + (minor)*100 + patch) 124 #define PROFILER_MESSAGE_FUNCNAME PROFILER_MESSAGE(__FUNCTION__) 191 return !(*
this == b);
197 inline void Save(dmlc::Stream *strm)
const {
198 strm->Write(&dev_type,
sizeof(dev_type));
199 strm->Write(&dev_id,
sizeof(dev_id));
206 inline bool Load(dmlc::Stream *strm) {
207 if (strm->Read(&dev_type,
sizeof(dev_type)) !=
sizeof(
dev_type))
return false;
208 if (strm->Read(&dev_id,
sizeof(int32_t)) !=
sizeof(int32_t))
return false;
222 inline static Context CPU(int32_t dev_id = 0);
228 inline static Context GPU(int32_t dev_id = -1);
265 template<
typename xpu>
267 return static_cast<mshadow::Stream<xpu>*
>(stream);
291 if (dev_type &
kGPU) {
293 CHECK_EQ(cudaGetDevice(&ctx.
dev_id), cudaSuccess);
295 LOG(FATAL) <<
"Please compile with CUDA enabled for cuda features";
322 std::string::size_type l = str.find(
'(');
323 CHECK_NE(l, std::string::npos);
324 std::string::size_type r = str.find(
')');
325 CHECK_EQ(r, str.length()-1);
327 std::string type = str.substr(0, l);
328 int id = std::stoi(str.substr(l+1, r-l-1));
331 }
else if (type ==
"gpu") {
333 }
else if (type ==
"cpu_pinned") {
335 }
else if (type ==
"cpu_shared") {
338 LOG(FATAL) <<
"Invalid context string " << str;
341 LOG(FATAL) <<
"Invalid context string " << str;
352 out <<
"cpu_pinned(";
354 out <<
"cpu_shared(";
363 #define STRINGIZE_DETAIL(x) #x 364 #define STRINGIZE(x) STRINGIZE_DETAIL(x) 365 #define MXNET_DESCRIBE(...) describe(__VA_ARGS__ "\n\nFrom:" __FILE__ ":" STRINGIZE(__LINE__)) 366 #define ADD_FILELINE "\n\nDefined in " __FILE__ ":L" STRINGIZE(__LINE__) 372 #endif // MXNET_BASE_H_ DeviceType dev_mask() const
Get corresponding device mask.
Definition: base.h:160
static const int32_t kMaxDevID
the maximal device index
Definition: base.h:214
namespace of mxnet
Definition: base.h:127
mshadow::Stream< xpu > * get_stream() const
get mshadow stream from Context
Definition: base.h:266
bool Load(dmlc::Stream *strm)
load the content from binary stream
Definition: base.h:206
mshadow::default_real_t real_t
data type that will be used to store ndarray
Definition: base.h:135
static Context GPU(int32_t dev_id=-1)
nnvm::TShape TShape
Shape data structure used to record shape information.
Definition: base.h:137
Context ctx
base Context
Definition: base.h:255
bool operator<(const Context &b) const
Comparator, used to enable Context as std::map key.
static const int32_t kMaxDevType
the maximal device type
Definition: base.h:212
execution time context. The information needed in runtime for actual execution.
Definition: base.h:253
DeviceType dev_type
the device type we run the op on
Definition: base.h:151
int32_t dev_id
device id we are going to run it on
Definition: base.h:153
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:259
void Save(dmlc::Stream *strm) const
save the content into binary stream
Definition: base.h:197
mshadow::gpu gpu
mxnet gpu
Definition: base.h:131
const Context & get_ctx() const
get the base Context from RunContext
Definition: base.h:270
DeviceType
Type of device.
Definition: base.h:144
static Context CPUShared(int32_t dev_id=0)
mshadow::cpu cpu
mxnet cpu
Definition: base.h:129
int real_dev_id() const
Returns dev_id for kGPU, 0 otherwise.
Definition: base.h:167
nnvm::Op Op
operator structure from NNVM
Definition: base.h:139
Context()
default constructor
Definition: base.h:155
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:190
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:133
TBlob class that holds common representation of arbirary dimension tensor, can be used to transformed...
Context information about the execution environment.
Definition: base.h:142
bool operator==(const Context &b) const
check if current context equals another one
Definition: base.h:182
unsigned index_t
Definition: base.h:37