We use GPU or CPU to run calculations on data (tensors). Choosing where to put tensors helps make programs faster or simpler.
GPU vs CPU tensor placement in TensorFlow
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
TensorFlow
with tf.device('/CPU:0'): tensor_cpu = tf.constant([1.0, 2.0, 3.0]) with tf.device('/GPU:0'): tensor_gpu = tf.constant([1.0, 2.0, 3.0])
Use tf.device() to specify where tensors or operations run.
Device names like /CPU:0 and /GPU:0 tell TensorFlow to use CPU or GPU.
Examples
TensorFlow
with tf.device('/CPU:0'): a = tf.constant([1, 2, 3])
TensorFlow
with tf.device('/GPU:0'): b = tf.constant([4, 5, 6])
TensorFlow
print(a.device) print(b.device)
Sample Model
This program checks if a GPU is available. It creates one tensor on the CPU and one on the GPU if possible. Then it prints where each tensor is stored.
TensorFlow
import tensorflow as tf # Check if GPU is available if tf.config.list_physical_devices('GPU'): print('GPU is available') else: print('GPU is NOT available') # Create tensor on CPU with tf.device('/CPU:0'): tensor_cpu = tf.constant([10.0, 20.0, 30.0]) # Create tensor on GPU if available, else CPU device_name = '/GPU:0' if tf.config.list_physical_devices('GPU') else '/CPU:0' with tf.device(device_name): tensor_gpu = tf.constant([10.0, 20.0, 30.0]) print('Tensor on CPU device:', tensor_cpu.device) print('Tensor on GPU device:', tensor_gpu.device)
Important Notes
Not all computers have GPUs. TensorFlow will use CPU if GPU is not found.
GPU is faster for big calculations but uses more power.
You can move tensors between CPU and GPU but it takes time, so avoid moving data too often.
Summary
Use tf.device() to control if tensors run on CPU or GPU.
GPU speeds up big calculations, CPU is always available.
Check tensor device with tensor.device to debug or optimize.
Practice
1. What is the main reason to use
tf.device() in TensorFlow when working with GPUs and CPUs?easy
Solution
Step 1: Understand the purpose of
This function is used to tell TensorFlow where to place tensors or operations, either on CPU or GPU.tf.device()Step 2: Compare options with the function's purpose
Changing data types, initializing variables, or saving models are unrelated to device placement.Final Answer:
To specify whether a tensor or operation runs on CPU or GPU -> Option DQuick Check:
tf.device() controls device placement = B [OK]
Hint: tf.device() sets CPU or GPU for tensors [OK]
Common Mistakes:
- Confusing device placement with data type changes
- Thinking tf.device() initializes variables
- Assuming tf.device() saves models
2. Which of the following is the correct syntax to place a tensor on GPU device 0 in TensorFlow?
easy
Solution
Step 1: Recall TensorFlow device naming conventions
TensorFlow uses '/GPU:0' to refer to the first GPU device.Step 2: Check each option's device string
The correct format for GPU device 0 iswith tf.device('/GPU:0'): x = tf.constant([1, 2, 3]). Formats like'/CPU:0','device:GPU0', and'GPU0'are incorrect.Final Answer:
with tf.device('/GPU:0'): x = tf.constant([1, 2, 3]) -> Option AQuick Check:
Correct GPU device string = D [OK]
Hint: Use '/GPU:0' to specify first GPU device [OK]
Common Mistakes:
- Using 'GPU0' without slash and colon
- Confusing CPU and GPU device strings
- Missing the 'with' context for tf.device
3. What will be the output device placement of the tensor
x in the following code if a GPU is available?
with tf.device('/CPU:0'):
x = tf.constant([1, 2, 3])
print(x.device)medium
Solution
Step 1: Analyze the device context used
The code useswith tf.device('/CPU:0'), so the tensorxis forced to be on CPU.Step 2: Understand device string output
Printingx.devicewill show the full device string indicating CPU, regardless of GPU availability.Final Answer:
It will show a CPU device string like '/job:localhost/replica:0/task:0/device:CPU:0' -> Option BQuick Check:
Device context forces CPU = C [OK]
Hint: Device context overrides default device placement [OK]
Common Mistakes:
- Assuming GPU is used automatically if available
- Expecting error when CPU is forced
- Thinking device string can be empty
4. Identify the error in this TensorFlow code snippet that tries to place a tensor on GPU:
with tf.device('/GPU:1'):
x = tf.constant([4, 5, 6])
print(x.device)
Assuming the system has only one GPU device.medium
Solution
Step 1: Check available GPU devices
The system has only one GPU, which is '/GPU:0'. Trying to use '/GPU:1' refers to a non-existent second GPU.Step 2: Understand TensorFlow behavior on invalid device
TensorFlow raises an error if the specified device does not exist.Final Answer:
Error because GPU device '/GPU:1' does not exist -> Option CQuick Check:
Invalid GPU index causes error = A [OK]
Hint: Check GPU count before using device index [OK]
Common Mistakes:
- Assuming GPU indices start at 1
- Expecting automatic fallback to CPU
- Ignoring device existence errors
5. You want to speed up a large matrix multiplication in TensorFlow using GPU if available, but fall back to CPU if no GPU exists. Which code snippet correctly implements this logic?
hard
Solution
Step 1: Check for GPU availability
Usetf.config.list_physical_devices('GPU')to detect if GPU exists.Step 2: Use conditional device placement
If GPU exists, place operation on '/GPU:0', else place on '/CPU:0' to ensure fallback.Step 3: Verify other options
Forcing GPU without checking availability risks errors if no GPU. Auto-placement lacks explicit conditional control. Forcing CPU ignores available GPU.Final Answer:
if tf.config.list_physical_devices('GPU'): with tf.device('/GPU:0'): result = tf.matmul(a, b) else: with tf.device('/CPU:0'): result = tf.matmul(a, b) -> Option AQuick Check:
Conditional device placement with fallback = A [OK]
Hint: Check GPU presence before device placement [OK]
Common Mistakes:
- Not handling fallback when GPU missing
- Assuming TensorFlow always picks GPU
- Forcing CPU even if GPU is available
