比较CPU和GPU运算效率的代码
时间: 2024-10-28 17:07:55 浏览: 32
并行运算与神经网络_基于CPU_GPU的并行神经网络运算_matlab
5星 · 资源好评率100%
CPU(中央处理器)和GPU(图形处理器)的设计目的不同,CPU通常更注重通用计算能力,而GPU则专注于并行处理大量数据,特别是在图像和视频处理方面。它们的运算效率取决于任务的特性和硬件优化。
要在Python中比较CPU和GPU的运算效率,可以使用`numba`库,它能将部分Python代码转换为机器码,提高性能。这里是一个简单的例子,我们将使用`numba`来加速两个操作:CPU上的普通for循环和GPU上的CUDA计算:
```python
import numba
import cupy as cp
# CPU 示例,使用 numpy
@numba.jit(nopython=True)
def cpu_dot_product(a, b):
result = 0.0
for i in range(len(a)):
result += a[i] * b[i]
return result
# GPU 示例,使用 cupy
@numba.cuda.jit
def gpu_dot_product(a, b):
result = 0.0
for i in range(len(a)):
result += a[i] * b[i]
return result
a = np.random.rand(10**6) # 生成随机数组
b = np.random.rand(10**6)
cpu_time = time.time()
cpu_result = cpu_dot_product(a, b)
cpu_time = time.time() - cpu_time
# 如果有cuda支持
if cp.cuda.runtime.is_available():
a_gpu = cp.array(a)
b_gpu = cp.array(b)
gpu_time = time.time()
gpu_result = gpu_dot_product[1](a_gpu, b_gpu) # 使用[1:]启用并行化
gpu_time = time.time() - gpu_time
else:
gpu_result = None
print(f"CPU 时间: {cpu_time:.4f} 秒, 结果: {cpu_result}")
if gpu_result is not None:
print(f"GPU 时间: {gpu_time:.4f} 秒, 结果: {gpu_result}")
阅读全文