multithreading - 如何在 PyTorch 中禁用多线程?

标签 multithreading pytorch libtorch

我正在尝试确保以 C++ 构建的 PyTorch 程序仅使用单个线程。程序在 CPU 上运行。

它有一个相当小的模型,多线程没有帮助,实际上会导致问题,因为我的程序已经是多线程的了。我调用:

    at::set_num_interop_threads(1);
    at::set_num_threads(1);
    torch::set_num_threads(1);
    omp_set_num_threads(1);
    omp_set_dynamic(0);
    omp_set_nested(0);

另外,我设置了环境变量 OPENBLAS_NUM_THREADS 到 1。

仍然,当我在单线程中生成时,总共有 16 个线程出现在 htop 上,机器的 16 个处理器达到 100%。

我错过了什么吗?什么?

最佳答案

来自PyTorch docs ,可以这样做:

torch.set_num_threads(1)

为了安全起见,请在实例化任何模型等之前执行此操作(因此在导入后立即执行)。这对我有用。

更多信息:https://jdhao.github.io/2020/07/06/pytorch_set_num_threads/

关于multithreading - 如何在 PyTorch 中禁用多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70205858/

相关文章:

Java 将负载平衡到许多 JVM 中

c# - 监控与锁定

multithreading - 线程中的 Perl 内存泄漏(线程不释放内存)

python - word2vec的RNN模型(GRU)回归未学习

c++ - 如何用 C++ 数组填充 torch::tensor?

java - 如何使用paintComponent()进行多线程?

python - 如何查看 torch 的确切安装位置 pip vs conda torch 安装

python - Torchvision 0.2.1 变换。Normalize 未按预期工作

c++ - torch C++ : Getting the value of a int tensor by using *. 数据<int>()

c++ - libtorch 中 numpy.spacing(1) 的等价物是什么?