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)
Exemple #2
0
  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)
Exemple #3
0
    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)
Exemple #5
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.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))
Exemple #8
0
 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)
Exemple #9
0
 def test3VirtualCPUs(self):
   cpu_device = config.list_physical_devices("CPU")[0]
   self.assertLen(config.get_virtual_device_configuration(cpu_device), 3)