自动并行计算

异步计算

默认情况下,PyTorch中的 GPU 操作是异步的。当调用一个使用 GPU 的函数时,这些操作会在特定的设备上排队但不一定会在稍后立即执行。这就使我们可以并行更多的计算,包括 CPU 或其他 GPU 上的操作。

一般情况下,异步计算的效果对调用者是不可见的,因为

  • 每个设备按照它们排队的顺序执行操作
  • 在 CPU 和 GPU 之间或两个 GPU 之间复制数据时,PyTorch会自动执行必要的同步操作。

因此,计算将按每个操作同步执行的方式进行。 可以通过设置环境变量CUDA_LAUNCH_BLOCKING = 1来强制进行同步计算。当 GPU 产生error时,这可能非常有用。(异步执行时,只有在实际执行操作之后才会报告此类错误,因此堆栈跟踪不会显示请求的位置。)

自动并行计算

默认情况下,GPU 操作是异步的。当调用一个使用 GPU 的函数时,这些操作会在特定的设备上排队,但不一定会在稍后执行。这允许我们并行更多的计算,包括 CPU 或其他 GPU 上的操作。

下面看一个简单的例子。

import torch
import timeassert torch.cuda.device_count() >= 2#先实现一个简单的计时类
class Benchmark():  # 本类已保存在d2lzh_pytorch包中方便以后使用def __init__(self, prefix=None):self.prefix = prefix + ' ' if prefix else ''def __enter__(self):self.start = time.time()def __exit__(self, *args):print('%stime: %.4f sec' % (self.prefix, time.time() - self.start))

定义run函数,令它做20000次矩阵乘法

def run(x):for _ in range(20000):y = torch.mm(x, x)

分别在两块GPU上创建Tensor

x_gpu1 = torch.rand(size=(100, 100), device='cuda:0')
x_gpu2 = torch.rand(size=(100, 100), device='cuda:1')

分别使用它们运行run函数并打印运行所需时间

with Benchmark('Run on GPU1.'):run(x_gpu1)torch.cuda.synchronize()with Benchmark('Then run on GPU2.'):run(x_gpu2)torch.cuda.synchronize()
Run on GPU1. time: 0.3149 sec
Then run on GPU2. time: 0.3816 sec

尝试系统能自动并行这两个任务:

with Benchmark('Run on both GPU1 and GPU2 in parallel.'):run(x_gpu1)run(x_gpu2)torch.cuda.synchronize()
Run on both GPU1 and GPU2 in parallel. time: 0.5288 sec

当两个计算任务一起执行时,执行总时间小于它们分开执行的总和。这表明,PyTorch能有效地实现在不同设备上自动并行计算。

深度学习-自动并行计算相关推荐

  1. 深度学习自动编译和优化技术调研

    深度学习自动编译和优化技术调研 转自:https://moqi.com.cn/blog/deeplearning/ 作者:墨奇科技全栈开发 在墨奇科技,我们需要将一些包含深度神经网络(DNN)的 AI ...

  2. 硬件平台上深度学习自动内核优化

    硬件平台上深度学习自动内核优化 对于AI开发人员来说,在各种硬件平台上优化深度神经网络的性能仍然是一个难题.在系统支持方面,在这里面临着许多问题:将训练有素的模型从多个前端(例如Tensorflow, ...

  3. 自编码的matlab代码,深度学习自动编码机MATLAB实现

    深度学习自动编码机MATLAB实现 matlab 2020-11-30 下载地址 https://www.codedown123.com/52407.html 深度学习自动编码机MATLAB实现,包含 ...

  4. 机器码农:深度学习自动编程

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ 张俊林 (本文2016年发表于<程序员>杂志) (想更系统地学习深度学习知识?请参考:深度学习枕边书) 随着深度学 ...

  5. 国内首次深度学习自动驾驶,阿波罗不再只是计划:来自百度开发者中心的观察报告...

    导读:从世界上首个可在真实道路上实现端到端模式的高级自动驾驶模型Road Hackers,到百度和汽车零部件厂商合作开发的车载可计算平台 BCU,从诞生之初就备受关注的"阿波罗计划" ...

  6. 【人工智能】深度学习自动构图研究报告

    言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 言有三(微信号Longlongtogo) 编辑 | 言有三 感谢北航的云飞扬,武汉理工大学的贾承丰的辅助 今天带来基于深度 ...

  7. Matting(抠图)--用深度学习自动去除照片背景

    转自:https://zhuanlan.zhihu.com/p/38031181 https://zhuanlan.zhihu.com/p/151212267 现在又有一个 AI 能干 Photosh ...

  8. 利用深度学习自动评价数百万张酒店图像

    雷锋网(公众号:雷锋网)按:本文由「图普科技」编译自Using Deep Learning to automatically rank millions of hotel images 德国比价网站i ...

  9. 普渡大学利用深度学习自动检测核反应堆裂缝

    美国普渡大学正在开发人工智能系统利用深度学习技术检测核反应堆裂缝,未来能帮助减少发生事故和维护成本. 普渡大学(Purdue University)正在开发一个系统,使用人工智能技术检测核反应堆视频中 ...

最新文章

  1. 自定义控件(一) Activity的构成(PhoneWindow、DecorView)
  2. 一级计算机综合训练第五卷,2018职称计算机考试基础综合练习及答案(5)
  3. sql注入及mybatis防止sql注入
  4. 【ARM】Load Store指令
  5. 在Linux系统里安装Virtual Box的详细步骤 1
  6. [转]小白都能看懂的softmax详解
  7. pytorch学习入门 (二) Variable(变量)
  8. 段寄存器中代码段数据段堆栈段附加段
  9. Win10系统Win键无法使用
  10. python发邮件详解_用Python3发送邮件详解
  11. Ubuntu安装SublimeText3
  12. 可怕!中国博士留学生在美国遭枪击身亡,北大毕业,已经读到了博士第四年...
  13. 数据仓库整合各系统码表和参数表
  14. multisim10元件库介绍
  15. mysql workbench安装配置_Mysql WorkBench安装配置图文教程
  16. 2014年三维地理信息系统 研究成果
  17. 温漂:元器件温度系数TCR
  18. 【现代软件工程】结对编程 —— 四则运算UI
  19. linux 各网卡作用(docker0、eth0、lo、rndis0、usb0、dummy0、l4tbr0)
  20. wsl docker 启动elasticsearch vm.max_map_count [65530] is too low问题永久解决方案

热门文章

  1. 华为策略路由加等价路由_华为——防火墙——策略路由配置及思路
  2. mysql 投票总排行_MySQL投票表,查找每个用户对条目的最新投票,并根据值进行计数...
  3. python建立列表并输入_python操作列表
  4. 苹果断开电脑连接服务器无响应,mac电脑iTerm2链接linux服务器断线解决方案
  5. ssl在线申请php源码,简易实现HTTPS之自动实现ssl
  6. python中自定义类中的self_Python类和构造方法
  7. 全国战争linux添加eth0,linux服务器双线路接入配置
  8. java面向对象多态特性
  9. 【LeetCode笔记】88. 合并两个有序数组(Java、双指针)
  10. 【学习笔记】JAVA基础——异常处理部分