| |
|
| |
|
| |
|
| |
|
| |
|
| | import unittest |
| | import numpy as np |
| | from random import randint |
| | 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): |
| | return caffe2_pb2.DeviceOption(device_type=caffe2_pb2.IDEEP) |
| |
|
| | def test_copy_to_ideep(self): |
| | op = core.CreateOperator( |
| | "CopyCPUToIDEEP", |
| | ["X"], |
| | ["X_ideep"], |
| | ) |
| | op.device_option.CopyFrom(self._get_deep_device()) |
| | n = randint(1, 128) |
| | c = randint(1, 64) |
| | h = randint(1, 128) |
| | w = randint(1, 128) |
| | X = np.random.rand(n, c, h, w).astype(np.float32) |
| | workspace.FeedBlob("X", X) |
| | workspace.RunOperatorOnce(op) |
| | X_ideep = workspace.FetchBlob("X_ideep") |
| | np.testing.assert_allclose(X, X_ideep) |
| |
|
| | def test_copy_to_ideep_zero_dim(self): |
| | op = core.CreateOperator( |
| | "CopyCPUToIDEEP", |
| | ["X"], |
| | ["X_ideep"], |
| | ) |
| | op.device_option.CopyFrom(self._get_deep_device()) |
| | n = 0 |
| | c = randint(1, 128) |
| | X = np.random.rand(n, c).astype(np.float32) |
| | workspace.FeedBlob("X", X) |
| | workspace.RunOperatorOnce(op) |
| | X_ideep = workspace.FetchBlob("X_ideep") |
| | np.testing.assert_allclose(X, X_ideep) |
| |
|
| | def test_copy_from_ideep(self): |
| | op = core.CreateOperator( |
| | "CopyIDEEPToCPU", |
| | ["X_ideep"], |
| | ["X"], |
| | ) |
| | op.device_option.CopyFrom(self._get_deep_device()) |
| | n = randint(1, 128) |
| | c = randint(1, 64) |
| | h = randint(1, 128) |
| | w = randint(1, 128) |
| | X = np.random.rand(n, c, h, w).astype(np.float32) |
| | workspace.FeedBlob("X_ideep", X, self._get_deep_device()) |
| | workspace.RunOperatorOnce(op) |
| | X_ideep = workspace.FetchBlob("X") |
| | np.testing.assert_allclose(X, X_ideep) |
| |
|
| | def test_copy_from_ideep_zero_dim(self): |
| | op = core.CreateOperator( |
| | "CopyIDEEPToCPU", |
| | ["X_ideep"], |
| | ["X"], |
| | ) |
| | op.device_option.CopyFrom(self._get_deep_device()) |
| | n = 0 |
| | c = randint(1, 64) |
| | X = np.random.rand(n, c).astype(np.float32) |
| | workspace.FeedBlob("X_ideep", X, self._get_deep_device()) |
| | workspace.RunOperatorOnce(op) |
| | X_ideep = workspace.FetchBlob("X") |
| | np.testing.assert_allclose(X, X_ideep) |
| |
|
| | def test_copy_from_ideep_fallthrough(self): |
| | op = core.CreateOperator( |
| | "CopyIDEEPToCPU", |
| | ["X_ideep"], |
| | ["X"],) |
| | op.device_option.CopyFrom(self._get_deep_device()) |
| | n = randint(1, 128) |
| | c = randint(1, 64) |
| | h = randint(1, 128) |
| | w = randint(1, 128) |
| | X = np.random.rand(n, c, h, w).astype(np.float32) |
| | workspace.FeedBlob("X_ideep", X) |
| | workspace.RunOperatorOnce(op) |
| | X_ideep = workspace.FetchBlob("X") |
| | np.testing.assert_allclose(X, X_ideep) |
| |
|
| | if __name__ == "__main__": |
| | unittest.main() |
| |
|