我正在尝试确保以 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/