numa_test.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from caffe2.python import core, workspace
  2. from caffe2.proto import caffe2_pb2
  3. from caffe2.python.test_util import TestCase
  4. import unittest
  5. core.GlobalInit(["caffe2", "--caffe2_cpu_numa_enabled=1"])
  6. def build_test_net(net_name):
  7. net = core.Net(net_name)
  8. net.Proto().type = "async_scheduling"
  9. numa_device_option = caffe2_pb2.DeviceOption()
  10. numa_device_option.device_type = caffe2_pb2.CPU
  11. numa_device_option.numa_node_id = 0
  12. net.ConstantFill([], "output_blob_0", shape=[1], value=3.14,
  13. device_option=numa_device_option)
  14. numa_device_option.numa_node_id = 1
  15. net.ConstantFill([], "output_blob_1", shape=[1], value=3.14,
  16. device_option=numa_device_option)
  17. gpu_device_option = caffe2_pb2.DeviceOption()
  18. gpu_device_option.device_type = caffe2_pb2.CUDA
  19. gpu_device_option.device_id = 0
  20. net.CopyCPUToGPU("output_blob_0", "output_blob_0_gpu",
  21. device_option=gpu_device_option)
  22. net.CopyCPUToGPU("output_blob_1", "output_blob_1_gpu",
  23. device_option=gpu_device_option)
  24. return net
  25. @unittest.skipIf(not workspace.IsNUMAEnabled(), "NUMA is not enabled")
  26. @unittest.skipIf(workspace.GetNumNUMANodes() < 2, "Not enough NUMA nodes")
  27. @unittest.skipIf(not workspace.has_gpu_support, "No GPU support")
  28. class NUMATest(TestCase):
  29. def test_numa(self):
  30. net = build_test_net("test_numa")
  31. workspace.RunNetOnce(net)
  32. self.assertEqual(workspace.GetBlobNUMANode("output_blob_0"), 0)
  33. self.assertEqual(workspace.GetBlobNUMANode("output_blob_1"), 1)
  34. if __name__ == '__main__':
  35. unittest.main()