gpt4 book ai didi

multithreading - Openmp创建许多线程,但似乎只使用一个内核

转载 作者:行者123 更新时间:2023-12-03 12:52:38 26 4
gpt4 key购买 nike

我正在尝试使用OpenMP在Fortran中并行化for循环。

看起来工作正常,它肯定会创建正确数量的线程,并且运行速度比原始串行版本快得多。

但是,%CPU的使用量很大,使我担心线程仅集中在一个或两个内核上(与我在网上看到的示例相反,在每个示例中,每个线程都有自己的PID)。

$ export omp_num_threads=12
$ nohup ./z90nr&
$ ps aurx
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
ty 25350 7771 0.0 1564928 26868 pts/9 Rl 14:18 169:40 ./z90nr

这是一个问题吗?如果是的话,我该如何解决?
我尝试设置GOMP_CPU_AFFINITY,但这不能解决问题。

谢谢!!

最佳答案

不;这只是线程和进程之间的区别。

Threads全部存在于一个process中;因此只有一个PID。而较大的%CPU只是报告这些数字的方式。此处> 100%表示肯定使用了一个以上的CPU。 top命令在这里很有帮助;如果运行top -H,则应该可以分别看到每个线程,如果在运行时按1,则可以看到每个CPU的CPU使用率,这也有助于分解所有正在运行的线程。

关于multithreading - Openmp创建许多线程,但似乎只使用一个内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com