Esempio n. 1
0
    def testVirtualGpu(self):
        config.set_soft_device_placement(False)
        gpus = config.list_physical_devices('GPU')
        self.assertNotEqual(len(gpus), 0)

        self.assertIsNone(config.get_logical_device_configuration(gpus[-1]))
        config.set_logical_device_configuration(gpus[-1], [
            context.LogicalDeviceConfiguration(memory_limit=10),
            context.LogicalDeviceConfiguration(memory_limit=10)
        ])
        self.assertEqual(
            len(config.get_logical_device_configuration(gpus[-1])), 2)

        logical_gpus = config.list_logical_devices('GPU')
        self.assertTrue(len(logical_gpus), len(gpus) + 1)
        for i in range(0, len(logical_gpus)):
            with ops.device('/device:GPU:' + str(i)):
                a = array_ops.identity(1.0)
                self.evaluate(a)

        with self.assertRaisesRegex(errors.InvalidArgumentError,
                                    'Could not satisfy'):
            with ops.device('/device:GPU:' + str(len(logical_gpus))):
                a = array_ops.identity(1.0)
                self.evaluate(a)

        # Modifying the GPU configuration is not supported
        with self.assertRaisesRegex(RuntimeError, 'cannot be modified'):
            config.set_logical_device_configuration(gpus[-1], [
                context.LogicalDeviceConfiguration(memory_limit=20),
                context.LogicalDeviceConfiguration(memory_limit=20)
            ])

        with self.assertRaisesRegex(RuntimeError, 'cannot be modified'):
            config.set_logical_device_configuration(gpus[-1], [
                context.LogicalDeviceConfiguration(memory_limit=10),
                context.LogicalDeviceConfiguration(memory_limit=10),
                context.LogicalDeviceConfiguration(memory_limit=10)
            ])

        # Setting the same GPU configuration is fine
        config.set_logical_device_configuration(gpus[-1], [
            context.LogicalDeviceConfiguration(memory_limit=10),
            context.LogicalDeviceConfiguration(memory_limit=10)
        ])
Esempio n. 2
0
    def testVirtualGpu(self):
        gpus = config.list_physical_devices('GPU')
        self.assertNotEqual(len(gpus), 0)

        self.assertIsNone(config.get_logical_device_configuration(gpus[-1]))
        config.set_logical_device_configuration(gpus[-1], [
            context.LogicalDeviceConfiguration(memory_limit=10),
            context.LogicalDeviceConfiguration(memory_limit=10)
        ])
        self.assertEqual(
            len(config.get_logical_device_configuration(gpus[-1])), 2)

        logical_gpus = config.list_logical_devices('GPU')
        self.assertTrue(len(logical_gpus), len(gpus) + 1)
        for i in range(0, len(logical_gpus)):
            with ops.device('/device:GPU:' + str(i)):
                a = constant_op.constant(1.0)
                self.evaluate(a)

        with self.assertRaisesRegexp(RuntimeError, 'unknown device'):
            with ops.device('/device:GPU:' + str(len(logical_gpus))):
                a = constant_op.constant(1.0)
                self.evaluate(a)

        # Modifying the GPU configuration is not supported
        with self.assertRaisesRegexp(RuntimeError, 'cannot be modified'):
            config.set_logical_device_configuration(gpus[-1], [
                context.LogicalDeviceConfiguration(memory_limit=20),
                context.LogicalDeviceConfiguration(memory_limit=20)
            ])

        with self.assertRaisesRegexp(RuntimeError, 'cannot be modified'):
            config.set_logical_device_configuration(gpus[-1], [
                context.LogicalDeviceConfiguration(memory_limit=10),
                context.LogicalDeviceConfiguration(memory_limit=10),
                context.LogicalDeviceConfiguration(memory_limit=10)
            ])

        # Setting the same GPU configuration is fine
        config.set_logical_device_configuration(gpus[-1], [
            context.LogicalDeviceConfiguration(memory_limit=10),
            context.LogicalDeviceConfiguration(memory_limit=10)
        ])
Esempio n. 3
0
 def setUp(self):
     super(InteropTest, self).setUp()
     physical_devices = config.list_physical_devices('CPU')
     configs = config.get_logical_device_configuration(physical_devices[0])
     if configs is None:
         logical_devices = [
             context.LogicalDeviceConfiguration() for _ in range(3)
         ]
         config.set_logical_device_configuration(physical_devices[0],
                                                 logical_devices)
Esempio n. 4
0
    def testGpuInvalidConfig(self):
        gpus = config.list_physical_devices('GPU')
        self.assertNotEqual(len(gpus), 0)

        if len(gpus) > 1:
            # Assert if other GPUs were not configured
            config.set_memory_growth(gpus[0], True)
            with self.assertRaisesRegex(ValueError, 'cannot differ'):
                c = context.context().config

            # If we limit visibility to GPU 0, growth is fine
            config.set_visible_devices(gpus[0], 'GPU')
            c = context.context().config
            self.assertTrue(c.gpu_options.allow_growth)

            # Default setting for second GPU is False and works if we set visibility
            config.set_visible_devices(gpus[1], 'GPU')
            c = context.context().config
            self.assertFalse(c.gpu_options.allow_growth)

            # Growth now fails because all the GPUs are visible and not the same
            config.set_visible_devices(gpus, 'GPU')
            with self.assertRaisesRegex(ValueError, 'cannot differ'):
                c = context.context().config

        for gpu in gpus:
            config.set_memory_growth(gpu, True)

        c = context.context().config
        self.assertTrue(c.gpu_options.allow_growth)

        with self.assertRaisesRegex(ValueError, 'memory limit'):
            config.set_logical_device_configuration(gpus[-1], [
                context.LogicalDeviceConfiguration(),
                context.LogicalDeviceConfiguration()
            ])

        self.assertIsNone(config.get_logical_device_configuration(gpus[-1]))
        config.set_logical_device_configuration(gpus[-1], [
            context.LogicalDeviceConfiguration(memory_limit=10),
            context.LogicalDeviceConfiguration(memory_limit=10)
        ])

        c = context.context().config
        self.assertFalse(c.gpu_options.allow_growth)

        with self.assertRaisesRegex(ValueError, 'virtual devices'):
            config.set_memory_growth(gpus[-1], False)
def set_virtual_cpus_to_at_least(num_virtual_cpus):
  """Create virtual CPU devices if they haven't yet been created."""
  if num_virtual_cpus < 1:
    raise ValueError("`num_virtual_cpus` must be at least 1 not %r" %
                     (num_virtual_cpus,))
  physical_devices = config.list_physical_devices("CPU")
  if not physical_devices:
    raise RuntimeError("No CPUs found")
  configs = config.get_logical_device_configuration(physical_devices[0])
  if configs is None:
    logical_devices = [
        context.LogicalDeviceConfiguration() for _ in range(num_virtual_cpus)
    ]
    config.set_logical_device_configuration(physical_devices[0],
                                            logical_devices)
  else:
    if len(configs) < num_virtual_cpus:
      raise RuntimeError("Already configured with %d < %d virtual CPUs" %
                         (len(configs), num_virtual_cpus))
 def testSetVirtualCPUsAgain(self):
     strategy_combinations.set_virtual_cpus_to_at_least(2)
     cpu_device = config.list_physical_devices("CPU")[0]
     self.assertLen(config.get_logical_device_configuration(cpu_device), 3)
 def test3VirtualCPUs(self):
     cpu_device = config.list_physical_devices("CPU")[0]
     self.assertLen(config.get_logical_device_configuration(cpu_device), 3)
 def testLogicalCPUs(self):
     context._reset_context()
     test_util.set_logical_devices_to_at_least('CPU', 3)
     cpu_device = config.list_physical_devices('CPU')[0]
     self.assertLen(config.get_logical_device_configuration(cpu_device), 3)