不同编程环境中GPU调用代码

在编程中,调用 集成显卡(集显)独立显卡(独显) 通常涉及设置GPU设备和执行计算任务。以下是一些示例代码,展示了如何在不同编程环境中使用 集显独显



1. 使用CUDA和PyTorch调用GPU

检查可用的GPU设备

首先,检查系统中可用的GPU设备:

import torch

# 检查可用的GPU设备
if torch.cuda.is_available():
    print(f"Available GPUs: {torch.cuda.device_count()}")
    for i in range(torch.cuda.device_count()):
        print(f"GPU {i}: {torch.cuda.get_device_name(i)}")
else:
    print("No GPU available, using CPU.")
设置默认GPU设备

设置默认的GPU设备,以便在代码中使用:

# 设置默认的GPU设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")
将模型和数据移动到GPU

将模型和数据移动到指定的GPU设备上:

# 定义一个简单的模型
model = torch.nn.Linear(10, 1)
model.to(device)

# 定义输入数据
input_data = torch.randn(16, 10).to(device)

# 执行前向传播
output = model(input_data)
print(output)

2. 使用TensorFlow调用GPU

检查可用的GPU设备

检查系统中可用的GPU设备:

import tensorflow as tf

# 检查可用的GPU设备
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
    for gpu in gpus:
        print(f"Available GPU: {gpu}")
else:
    print("No GPU available, using CPU.")
设置GPU内存增长

为了避免GPU内存分配问题,可以设置GPU内存增长:

# 设置GPU内存增长
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)
将模型和数据移动到GPU

将模型和数据移动到指定的GPU设备上:

# 定义一个简单的模型
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))
])

# 定义输入数据
input_data = tf.random.normal([16, 10])

# 执行前向传播
with tf.device('/GPU:0'):  # 指定使用第一个GPU设备
    output = model(input_data)
    print(output)

3. 使用Numba调用GPU

Numba是一个用于Python的JIT编译器,可以加速数值计算。以下是一个使用Numba调用GPU的示例:

from numba import cuda
import numpy as np

# 检查可用的GPU设备
device = cuda.get_current_device()
print(f"Using GPU: {device.name}")

# 定义一个简单的GPU函数
@cuda.jit
def add_kernel(a, b, c):
    i = cuda.grid(1)
    if i < c.size:
        c[i] = a[i] + b[i]

# 准备输入数据
a = np.array([1, 2, 3, 4], dtype=np.float32)
b = np.array([5, 6, 7, 8], dtype=np.float32)
c = np.zeros_like(a)

# 将数据移动到GPU
d_a = cuda.to_device(a)
d_b = cuda.to_device(b)
d_c = cuda.to_device(c)

# 执行GPU计算
threads_per_block = 32
blocks_per_grid = (a.size + threads_per_block - 1) // threads_per_block
add_kernel[blocks_per_grid, threads_per_block](d_a, d_b, d_c)

# 将结果从GPU移动回CPU
c = d_c.copy_to_host()
print(c)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司南锤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值