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 1   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