| |
|
| |
|
| |
|
| |
|
| |
|
| | import unittest |
| | import hypothesis.strategies as st |
| | from hypothesis import given |
| | import numpy as np |
| | from caffe2.python import core, workspace |
| | import caffe2.python.hypothesis_test_util as hu |
| | import caffe2.python.mkl_test_util as mu |
| | import caffe2.proto.caffe2_pb2 as pb2 |
| |
|
| | @unittest.skipIf(not workspace.C.has_mkldnn, |
| | "Skipping as we do not have mkldnn.") |
| | class MKCopyTest(hu.HypothesisTestCase): |
| | @given(width=st.integers(7, 9), |
| | height=st.integers(7, 9), |
| | input_channels=st.integers(1, 3), |
| | batch_size=st.integers(1, 3), |
| | **mu.gcs) |
| | def test_mkl_copy(self, |
| | width, |
| | height, |
| | input_channels, |
| | batch_size, |
| | gc, dc): |
| | X = np.random.rand( |
| | batch_size, input_channels, width, height).astype(np.float32) |
| | self.ws.create_blob("X").feed(X, pb2.DeviceOption()) |
| | self.ws.run(core.CreateOperator( |
| | "CopyCPUToMKL", |
| | ["X"], |
| | ["X_MKL"], |
| | device_option=pb2.DeviceOption(device_type=pb2.MKLDNN) |
| | )) |
| | self.ws.run(core.CreateOperator( |
| | "CopyMKLToCPU", |
| | ["X_MKL"], |
| | ["X_copy"], |
| | device_option=pb2.DeviceOption(device_type=pb2.MKLDNN) |
| | )) |
| | np.testing.assert_array_equal(X, self.ws.blobs["X_copy"].fetch()) |
| |
|
| | @given(n=st.sampled_from([0, 10])) |
| | def test_mkl_zero_copy(self, n): |
| | shape = (0, n) |
| | X = np.zeros(shape=shape).astype(np.float32) |
| | self.ws.create_blob("X").feed(X, pb2.DeviceOption()) |
| | self.ws.run(core.CreateOperator( |
| | "CopyCPUToMKL", |
| | ["X"], |
| | ["X_MKL"], |
| | device_option=pb2.DeviceOption(device_type=pb2.MKLDNN) |
| | )) |
| | self.ws.run(core.CreateOperator( |
| | "CopyMKLToCPU", |
| | ["X_MKL"], |
| | ["X_copy"], |
| | device_option=pb2.DeviceOption(device_type=pb2.MKLDNN) |
| | )) |
| | np.testing.assert_equal(shape, self.ws.blobs["X_copy"].fetch().shape) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | import unittest |
| | unittest.main() |
| |
|