"output type who needs copying.");
const auto& src = local_output_blobs_[i]->template Get<TensorCPU>();
auto src_dims = src.sizes().vec();
- if (src.template IsType<float>() && src.sizes().size() != 0 &&
- src.numel() != 0 && base_op_->type() != "Python") {
+ if (src.template IsType<float>() && src.dim() != 0 && base_op_->type() != "Python") {
Blob* dst = OperatorBase::OutputBlob(i);
// The output tensor must be ideep tensor with public format.
// If reusing ideep tensor with non-public format, the tensor buffer
from caffe2.proto import caffe2_pb2
from caffe2.python import core, workspace
+
@unittest.skipIf(not workspace.C.use_mkldnn, "No MKLDNN support.")
class CopyTest(unittest.TestCase):
def _get_deep_device(self):
"CopyCPUToIDEEP",
["X"],
["X_ideep"],
- )
+ )
op.device_option.CopyFrom(self._get_deep_device())
n = randint(1, 128)
c = randint(1, 64)
X_ideep = workspace.FetchBlob("X_ideep")
np.testing.assert_allclose(X, X_ideep)
- @unittest.skipIf(True, "zero dim is NOT supported for now.")
def test_copy_to_ideep_zero_dim(self):
op = core.CreateOperator(
- "CopyCPUToIDEEP",
- ["X"],
- ["X_ideep"],
- )
+ "CopyCPUToIDEEP",
+ ["X"],
+ ["X_ideep"],
+ )
op.device_option.CopyFrom(self._get_deep_device())
n = 0
c = randint(1, 128)
"CopyIDEEPToCPU",
["X_ideep"],
["X"],
- )
+ )
op.device_option.CopyFrom(self._get_deep_device())
n = randint(1, 128)
c = randint(1, 64)
X_ideep = workspace.FetchBlob("X")
np.testing.assert_allclose(X, X_ideep)
- @unittest.skipIf(True, "zero dim is NOT supported for now.")
def test_copy_from_ideep_zero_dim(self):
op = core.CreateOperator(
- "CopyIDEEPToCPU",
- ["X_ideep"],
- ["X"],
- )
+ "CopyIDEEPToCPU",
+ ["X_ideep"],
+ ["X"],
+ )
op.device_option.CopyFrom(self._get_deep_device())
n = 0
c = randint(1, 64)
FetchedBlob FetchTensor(const itensor &atensor, bool force_copy) {
#ifdef USE_NUMPY
FetchedBlob result;
- CAFFE_ENFORCE(atensor.materialized(),
+ CAFFE_ENFORCE((atensor.ndims() != 0) &&
+ (atensor.get_nelems() == 0 ||
+ atensor.get_data_handle() != nullptr),
"Trying to fetch uninitialized tensor");
const int numpy_type = CaffeToNumpyType(type_transform(atensor));
CAFFE_ENFORCE(
bool ZeroDim(PyArrayObject *array) {
#ifdef USE_NUMPY
int ndim = PyArray_NDIM(array);
- npy_intp *npy_dims = PyArray_DIMS(array);
- return ndim == 0 ||
- std::find(npy_dims, npy_dims + ndim, 0) != npy_dims + ndim;
+ return ndim == 0;
#else
CAFFE_THROW("Caffe2 was compiled without NumPy support.");
#endif