24 #ifndef MXNET_COMMON_EXEC_UTILS_H_ 25 #define MXNET_COMMON_EXEC_UTILS_H_ 28 #include "../common/utils.h" 47 const std::vector<NDArray> *bufs,
48 std::vector<TBlob> *blobs,
49 std::vector<NDArray> *temp_src,
50 std::vector<NDArray> *temp_dst,
51 std::unordered_map<uint32_t, uint32_t> *idx_map) {
52 bool require_cast =
false;
53 for (
size_t i = 0; i < src.size(); i++) {
56 #if MXNET_USE_MKLDNN == 1 58 is_default = nd.IsDefaultData();
61 (*idx_map)[i] = temp_dst->size();
62 NDArray temp = bufs !=
nullptr ? bufs->at(i) :
NDArray(nd.shape(), nd.ctx(),
64 #if MXNET_USE_MKLDNN == 1 65 CHECK(temp.IsDefaultData());
67 temp_src->emplace_back(nd);
68 temp_dst->emplace_back(temp);
69 blobs->emplace_back(temp.
data());
72 blobs->push_back(nd.data());
79 const std::vector<NDArray> *bufs,
80 std::vector<OpReqType> *req,
81 std::vector<TBlob> *blobs,
82 std::vector<NDArray> *temp_src,
83 std::vector<NDArray> *temp_dst) {
84 bool require_cast =
false;
85 for (
size_t i = 0; i < src.size(); i++) {
88 #if MXNET_USE_MKLDNN == 1 96 is_default = nd.IsDefaultData();
99 NDArray temp = bufs !=
nullptr ? bufs->at(i) :
NDArray(nd.shape(), nd.ctx(),
101 #if MXNET_USE_MKLDNN == 1 102 CHECK(temp.IsDefaultData());
104 temp_src->emplace_back(nd);
105 temp_dst->emplace_back(temp);
106 blobs->emplace_back(temp.
data());
109 blobs->push_back(nd.data());
123 const std::vector<NDArray> &ndoutputs,
124 const std::vector<NDArray> *in_bufs,
125 const std::vector<NDArray> *out_bufs,
126 std::vector<OpReqType> *req,
127 std::vector<TBlob> *input_blobs,
128 std::vector<TBlob> *output_blobs,
129 std::vector<NDArray> *pre_temp_src,
130 std::vector<NDArray> *pre_temp_dst,
131 std::vector<NDArray> *post_temp_src,
132 std::vector<NDArray> *post_temp_dst,
133 std::unordered_map<uint32_t, uint32_t> *in_temp_idx_map,
134 const std::vector<uint32_t> &mutate_idx) {
142 for (
const auto idx : mutate_idx) {
143 auto map_iter = in_temp_idx_map->find(idx);
144 if (map_iter != in_temp_idx_map->end()) {
145 post_temp_src->push_back(pre_temp_dst->at(map_iter->second));
146 post_temp_dst->push_back(ndinputs[idx]);
159 const std::vector<NDArray>& dst,
162 CHECK_EQ(dst.size(), src.size());
163 for (
size_t i = 0; i < src.size(); i++) {
166 CastStorageDispatch<gpu>(ctx, src[i], dst[i]);
171 CastStorageDispatch<cpu>(ctx, src[i], dst[i]);
180 std::vector<int> *iattr,
181 std::vector<int> *oattr) {
183 for (
int v : *oattr) {
189 for (
int v : *iattr) {
195 if (def_v == -1)
return false;
196 for (
int& v : *oattr) {
199 for (
int& v : *iattr) {
214 std::vector<int> *iattr,
215 std::vector<int> *oattr) {
216 bool fallback =
false;
217 for (
int& v : *oattr) {
221 for (
int& v : *iattr) {
238 #endif // MXNET_COMMON_EXEC_UTILS_H_
bool SameType(const nnvm::NodeAttrs &attrs, std::vector< int > *iattr, std::vector< int > *oattr)
The default type inference function, which assigns all undefined types to the same type of one of the...
Definition: exec_utils.h:179
#define MXNET_GPU_NOT_ENABLED_ERROR
Error message for using gpu when MXNET_USE_CUDA==0.
Definition: base.h:68
write gradient to provided space
Definition: op_attr_types.h:49
namespace of mxnet
Definition: base.h:118
DispatchMode
the dispatch mode of the operator
Definition: op_attr_types.h:105
All the possible information needed by Operator.Forward and Backward This is the superset of RunConte...
Definition: op_attr_types.h:66
void CastNonDefaultStorage(const std::vector< NDArray > &src, const std::vector< NDArray > &dst, const OpContext &ctx, const bool is_gpu)
Definition: exec_utils.h:158
bool SetupDefaultBlobsIn(const std::vector< NDArray > &src, const std::vector< NDArray > *bufs, std::vector< TBlob > *blobs, std::vector< NDArray > *temp_src, std::vector< NDArray > *temp_dst, std::unordered_map< uint32_t, uint32_t > *idx_map)
Definition: exec_utils.h:46
perform an inplace write, This option only happen when Target shares memory with one of input argumen...
Definition: op_attr_types.h:55
const TBlob & data() const
Definition: ndarray.h:215
void SetupDefaultBlobsInOut(const std::vector< NDArray > &ndinputs, const std::vector< NDArray > &ndoutputs, const std::vector< NDArray > *in_bufs, const std::vector< NDArray > *out_bufs, std::vector< OpReqType > *req, std::vector< TBlob > *input_blobs, std::vector< TBlob > *output_blobs, std::vector< NDArray > *pre_temp_src, std::vector< NDArray > *pre_temp_dst, std::vector< NDArray > *post_temp_src, std::vector< NDArray > *post_temp_dst, std::unordered_map< uint32_t, uint32_t > *in_temp_idx_map, const std::vector< uint32_t > &mutate_idx)
Definition: exec_utils.h:122
bool SetupDefaultBlobsOut(const std::vector< NDArray > &src, const std::vector< NDArray > *bufs, std::vector< OpReqType > *req, std::vector< TBlob > *blobs, std::vector< NDArray > *temp_src, std::vector< NDArray > *temp_dst)
Definition: exec_utils.h:78
bool DefaultStorageType(const nnvm::NodeAttrs &attrs, const int dev_mask, DispatchMode *dispatch_mode, std::vector< int > *iattr, std::vector< int > *oattr)
The default storage type inference function, which assigns all undefined storage types to kDefaultSto...
Definition: exec_utils.h:211
ndarray interface
Definition: ndarray.h:82