multithreading - PyTorch 方法中使用了哪些类型的优化?
问题描述
我正在使用PyTorch
诸如torch.mm
or之类的方法来实现一系列密集的矩阵运算torch.dot
。我想知道 PyTorch 是否使用多线程或其他优化机制来加快进程。我没有使用 GPU。如果您能告诉我这些方法有多快,以及我是否需要采取任何行动来帮助这个过程,我将不胜感激。
解决方案
PyTorch 使用高效的 BLAS 实现和多线程(openMP,如果我没记错的话)将此类操作与多核并行化。一些性能损失来自 Python 本身——因为这是一种解释语言,所以无法进行类似编译器的重大优化。您可以使用该jit
模块来加速矩阵乘法周围的“包装器”代码,但对于非常小的矩阵之外的任何东西,这个成本可能可以忽略不计。
您可能可以手动获得一项重大改进,但 PyTorch 不会自动应用,那就是正确排序矩阵乘法。您可能知道,根据矩阵形状,乘法ABCD
计算的性能可能与计算的性能不同A(B(CD))
,(AB)(CD)
等等。
推荐阅读
- grep - 当我使用 egrep 时,使用 \w 在正则表达式匹配中无法正常工作
- swift - 符合类的协议抛出“不能符合”类错误
- python - 如何在模式中安装模式库?
- flutter - Flutter:小部件不会在 Tap 上动态更改
- javascript - TestCafe 中的选择器出错 - 方法 .find()
- android - 如何在 Unity 2018 中构建 Android API Level 29
- javascript - 为什么 .includes() 找不到子数组?(javascript)
- android - 如何从 ForegroundService 中将应用程序带到前台
- javascript - 通过 Javascript 或 JQuery 动态更改 :root 变量
- python - 如何做 3 个向量的外积以在 numpy 中创建 3d 矩阵?(对于 nd 也是一样的)