def testAsyncBasic(self): ctx = context.Context(execution_mode=context.ASYNC) ctx.ensure_initialized() has_cpu_device = False for x in ctx.devices(): has_cpu_device = has_cpu_device or 'CPU' in x self.assertTrue(has_cpu_device) del ctx
def testSoftPlacement(self): if not context.context().num_gpus(): self.skipTest('No GPUs found') # Temporarily replace the context # pylint: disable=protected-access del context._context try: context._context = context.Context( device_policy=context.DEVICE_PLACEMENT_SILENT, config=config_pb2.ConfigProto(allow_soft_placement=True)) cpu_tensor = constant_op.constant(1.0) result = cpu_tensor + cpu_tensor self.assertEqual(result.device, '/job:localhost/replica:0/task:0/device:GPU:0') finally: del context._context context._context = context.Context()
def testSetLogicalDeviceAfterContextInitialization(self): ctx = context.Context() ctx.set_logical_cpu_devices(4) self.assertIs(len(ctx.list_logical_devices('CPU')), 4) # Cannot set logical device twice. with self.assertRaisesRegex(RuntimeError, 'Virtual CPUs already set'): ctx.set_logical_cpu_devices(8)
def testSoftPlacement(self): if not context.context().num_gpus(): self.skipTest('No GPUs found') # Temporarily replace the context # pylint: disable=protected-access del context._context context._context = context.Context() try: config.set_device_policy('silent') config.set_soft_device_placement(True) cpu_tensor = constant_op.constant(1.0) result = cpu_tensor + cpu_tensor self.assertEqual(result.device, '/job:localhost/replica:0/task:0/device:GPU:0') finally: del context._context context._context = context.Context()
def testContext(self): ctx = context.Context() self.assertFalse(ctx.in_graph_mode()) self.assertTrue(ctx.in_eager_mode()) self.assertEqual('', ctx.scope_name) self.assertEqual(-1, ctx._device_index) # pylint: disable=protected-access self.assertFalse(ctx.recording_summaries) self.assertIsNone(ctx.summary_writer_resource) del ctx
def testSilentCopy(self): # Temporarily replace the context # pylint: disable=protected-access old_context = context.context() context._set_context(context.Context()) try: config.set_device_policy('silent') cpu_tensor = constant_op.constant(1.0) gpu_tensor = cpu_tensor.gpu() self.assertAllEqual(cpu_tensor + gpu_tensor, 2.0) finally: context._set_context(old_context)
def testCrossContextTensorCache(self): old_context = context.context() old_x = constant_op.constant(9.5) context._set_context(context.Context()) try: new_x = constant_op.constant(9.5) self.assertEqual(new_x.numpy(), 9.5) finally: context._set_context(old_context) self.assertEqual(old_x.numpy(), 9.5)
def testSetLogicalLocalCpuDevice(self): ctx = context.Context() # Manually add a remote CPU device into logical device list. ctx._logical_devices = [] # pylint: disable=protected-access dev = context.LogicalDevice(name='/job:worker/replica:0/task:1', device_type='CPU') ctx._logical_devices.append(dev) # pylint: disable=protected-access self.assertIs(len(ctx.list_logical_devices('CPU')), 1) # This would pass the check since the previously added device is not local. ctx.set_logical_cpu_devices(4) # Logical device list would be overwritten after initialization. self.assertIs(len(ctx.list_logical_devices('CPU')), 4)
def testSoftPlacement(self): # Temporarily replace the context # pylint: disable=protected-access old_context = context.context() context._set_context(context.Context()) try: config.set_device_policy('silent') config.set_soft_device_placement(True) cpu_tensor = constant_op.constant(1.0) result = cpu_tensor + cpu_tensor self.assertEqual(result.device, '/job:localhost/replica:0/task:0/device:GPU:0') finally: context._set_context(old_context)
def testContextThreadLocalMembers(self): def get_context_values(ctx): return [ ctx.executing_eagerly(), ctx.scope_name, ctx.device_name, ctx.num_gpus() ] def get_values(ctx, values): values.extend(get_context_values(ctx)) context_values = [] ctx = context.Context() self._runInThread(get_values, (ctx, context_values)) self.assertAllEqual(context_values, get_context_values(ctx))
def testContext(self): ctx = context.Context() self.assertTrue(ctx.executing_eagerly()) self.assertEqual('', ctx.scope_name) ctx.scope_name = 'foo' self.assertEqual('foo', ctx.scope_name) self.assertEqual(context.SYNC, ctx.execution_mode) ctx.execution_mode = context.ASYNC self.assertEqual(context.ASYNC, ctx.execution_mode) ctx.execution_mode = context.SYNC self.assertEqual(context.SYNC, ctx.execution_mode) self.assertEqual('', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device('GPU:0'): self.assertEqual('/job:localhost/replica:0/task:0/device:GPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device(None): self.assertEqual('', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device('CPU:0'): self.assertEqual( '/job:localhost/replica:0/task:0/device:CPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device(ctx.list_logical_devices('CPU')[0]): self.assertEqual( '/job:localhost/replica:0/task:0/device:CPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) gpus = ctx.list_logical_devices('GPU') if gpus: with ctx.device(gpus[0]): self.assertEqual( '/job:localhost/replica:0/task:0/device:GPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) has_cpu_device = False for x in ctx.devices(): has_cpu_device = has_cpu_device or 'CPU' in x self.assertTrue(has_cpu_device) del ctx
def testContextThreadLocalMembers(self): def get_context_values(ctx): return [ ctx.in_graph_mode(), ctx.in_eager_mode(), ctx.scope_name, ctx.summary_writer_resource, ctx.device_name, ctx.num_gpus() ] def get_values(ctx, values): values.extend(get_context_values(ctx)) context_values = [] ctx = context.Context() self._runInThread(get_values, (ctx, context_values)) self.assertAllEqual(context_values, get_context_values(ctx))
def testSoftPlacement(self): # Temporarily replace the context # pylint: disable=protected-access old_context = context.context() context._set_context(context.Context()) try: config.set_device_policy('silent') config.set_soft_device_placement(True) # Avoid the TensorHandle cache hit. # TODO(b/169790439): include Context to the TensorHandle cache. cpu_tensor = constant_op.constant(1.1) result = cpu_tensor + cpu_tensor self.assertEqual(result.device, '/job:localhost/replica:0/task:0/device:GPU:0') finally: context._set_context(old_context)
def testContext(self): ctx = context.Context() self.assertTrue(ctx.executing_eagerly()) self.assertEqual('', ctx.scope_name) ctx.scope_name = 'foo' self.assertEqual('foo', ctx.scope_name) self.assertEqual(context.SYNC, ctx.execution_mode) ctx.execution_mode = context.ASYNC self.assertEqual(context.ASYNC, ctx.execution_mode) ctx.execution_mode = context.SYNC self.assertEqual(context.SYNC, ctx.execution_mode) self.assertIsNone(ctx.summary_writer) ctx.summary_writer = 'mock' self.assertEqual('mock', ctx.summary_writer) self.assertIsNone(ctx.summary_recording) ctx.summary_recording = 'mock' self.assertEqual('mock', ctx.summary_recording) self.assertIsNone(ctx.summary_step) ctx.summary_step = 'mock' self.assertEqual('mock', ctx.summary_step) self.assertEqual('', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device('GPU:0'): self.assertEqual('/job:localhost/replica:0/task:0/device:GPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device(None): self.assertEqual('', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device('CPU:0'): self.assertEqual( '/job:localhost/replica:0/task:0/device:CPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) has_cpu_device = False for x in ctx.devices(): has_cpu_device = has_cpu_device or 'CPU' in x self.assertTrue(has_cpu_device) del ctx
def testContext(self): ctx = context.Context() self.assertFalse(ctx.in_graph_mode()) self.assertTrue(ctx.in_eager_mode()) self.assertEqual('', ctx.scope_name) ctx.scope_name = 'foo' self.assertEqual('foo', ctx.scope_name) self.assertIsNone(ctx.summary_writer_resource) ctx.summary_writer_resource = 'mock' self.assertEqual('mock', ctx.summary_writer_resource) self.assertFalse(ctx.recording_summaries) ctx.recording_summaries = True self.assertTrue(ctx.recording_summaries) self.assertEqual('', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device('GPU:0'): self.assertEqual('/job:localhost/replica:0/task:0/device:GPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device(None): self.assertEqual('', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) with ctx.device('CPU:0'): self.assertEqual('/job:localhost/replica:0/task:0/device:CPU:0', ctx.device_name) self.assertEqual(ctx.device_name, ctx.device_spec.to_string()) has_cpu_device = False for x in ctx.devices(): has_cpu_device = has_cpu_device or 'CPU' in x self.assertTrue(has_cpu_device) del ctx
def testSetGlobalSeed(self): c = context.Context() c._set_global_seed(123) c._set_global_seed([1, 2]) c._set_global_seed((1, 2)) c._set_global_seed(np.asarray([11, 22], dtype=np.int64))
def testContextConfig(self): if not context.context().num_gpus(): self.skipTest('No GPUs found') ctx = context.Context(config=config_pb2.ConfigProto( device_count={'GPU': 0})) self.assertEquals(0, ctx.num_gpus())
def testDevice_supportsLogicalDevice(self): ctx = context.Context() cpus = ctx.list_logical_devices('CPU') with ctx.device(cpus[0]): self.assertEqual('/job:localhost/replica:0/task:0/device:CPU:0', ctx.device_name)
def testDevice_supportsDeviceSpec(self): ctx = context.Context() device_name = '/job:localhost/replica:0/task:0/device:CPU:0' device_spec = pydev.DeviceSpec.from_string(device_name) with ctx.device(device_spec): self.assertEqual(device_name, ctx.device_name)
def testContextConfig(self): ctx = context.Context(config=config_pb2.ConfigProto( device_count={'GPU': 0})) self.assertEquals(0, ctx.num_gpus())