def testGpuInvalidConfig(self): gpus = config.list_physical_devices('GPU') self.assertNotEqual(len(gpus), 0) for gpu in gpus: config.set_memory_growth(gpu, True) c = context.context().config self.assertTrue(c.gpu_options.allow_growth) with self.assertRaisesRegexp(ValueError, 'memory limit'): config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(), context.VirtualDeviceConfiguration() ]) self.assertIsNone(config.get_virtual_device_configuration(gpus[-1])) config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ]) c = context.context().config self.assertFalse(c.gpu_options.allow_growth) with self.assertRaisesRegexp(ValueError, 'virtual devices'): config.set_memory_growth(gpus[-1], False)
def testGpuInvalidConfig(self): gpus = config.list_physical_devices('GPU') self.assertNotEqual(len(gpus), 0) for gpu in gpus: config.set_memory_growth(gpu, True) c = context.context().config self.assertTrue(c.gpu_options.allow_growth) with self.assertRaisesRegexp(ValueError, 'memory limit'): config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(), context.VirtualDeviceConfiguration() ]) self.assertIsNone(config.get_virtual_device_configuration(gpus[-1])) config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ]) c = context.context().config self.assertFalse(c.gpu_options.allow_growth) with self.assertRaisesRegexp(ValueError, 'virtual devices'): config.set_memory_growth(gpus[-1], False)
def testVirtualGpu(self): gpus = config.list_physical_devices('GPU') self.assertNotEqual(len(gpus), 0) self.assertIsNone(config.get_virtual_device_configuration(gpus[-1])) config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ]) self.assertEqual( len(config.get_virtual_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_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=20), context.VirtualDeviceConfiguration(memory_limit=20) ]) with self.assertRaisesRegexp(RuntimeError, 'cannot be modified'): config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ]) # Setting the same GPU configuration is fine config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ])
def testVirtualGpu(self): gpus = config.list_physical_devices('GPU') self.assertNotEqual(len(gpus), 0) self.assertIsNone(config.get_virtual_device_configuration(gpus[-1])) config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ]) self.assertEqual(len(config.get_virtual_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)
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.assertRaisesRegexp(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.assertRaisesRegexp(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.assertRaisesRegexp(ValueError, 'memory limit'): config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(), context.VirtualDeviceConfiguration() ]) self.assertIsNone(config.get_virtual_device_configuration(gpus[-1])) config.set_virtual_device_configuration(gpus[-1], [ context.VirtualDeviceConfiguration(memory_limit=10), context.VirtualDeviceConfiguration(memory_limit=10) ]) c = context.context().config self.assertFalse(c.gpu_options.allow_growth) with self.assertRaisesRegexp(ValueError, 'virtual devices'): config.set_memory_growth(gpus[-1], False)
def SetVirtualCpus(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 = device_config.list_physical_devices('CPU') if not physical_devices: raise RuntimeError('No CPUs found') configs = device_config.get_virtual_device_configuration(physical_devices[0]) if configs is None: virtual_devices = [context.VirtualDeviceConfiguration() for _ in range(num_virtual_cpus)] device_config.set_virtual_device_configuration( physical_devices[0], virtual_devices) else: if len(configs) < num_virtual_cpus: raise RuntimeError('Already configured with %d < %d virtual CPUs' % (len(configs), num_virtual_cpus))
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_virtual_device_configuration(physical_devices[0]) if configs is None: virtual_devices = [ context.VirtualDeviceConfiguration() for _ in range(num_virtual_cpus) ] config.set_virtual_device_configuration(physical_devices[0], virtual_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_virtual_device_configuration(cpu_device), 3)
def test3VirtualCPUs(self): cpu_device = config.list_physical_devices("CPU")[0] self.assertLen(config.get_virtual_device_configuration(cpu_device), 3)