Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何强制单线程执行?_Linux_Gdb_Openmp - Fatal编程技术网

Linux 如何强制单线程执行?

Linux 如何强制单线程执行?,linux,gdb,openmp,Linux,Gdb,Openmp,我只想在一个线程中执行一个程序。当然,该程序使用OpenMP库来运行多线程,但出于某些调试目的,我希望禁用多线程 在gdb中或者在ld.so-级别上是否有一个选项可以只动态链接到一个虚拟OpenMP库,该库为omp调用提供合理的行为(例如omp\u get\u num\u threads将始终返回1),但不会启动多个线程?如何在运行时设置omp\u num\u threads=1?您可能还需要将OMP_THREAD_LIMIT设置为1,以便更好地测量。在运行时将OMP_NUM_THREADS设置

我只想在一个线程中执行一个程序。当然,该程序使用OpenMP库来运行多线程,但出于某些调试目的,我希望禁用多线程


gdb
中或者在
ld.so
-级别上是否有一个选项可以只动态链接到一个虚拟OpenMP库,该库为omp调用提供合理的行为(例如
omp\u get\u num\u threads
将始终返回
1
),但不会启动多个线程?

如何在运行时设置omp\u num\u threads=1?您可能还需要将OMP_THREAD_LIMIT设置为1,以便更好地测量。

在运行时将OMP_NUM_THREADS设置为1怎么样?您可能还希望将OMP_THREAD_LIMIT设置为1,以便更好地测量。

是的,这就是环境变量的用途。但是,请注意,有许多代码实际上忽略了“OMP_set_num_threads(4)”(或类似代码)中的令人羡慕的内容,理由是“我的机器中有四个内核”。你可能会猜到,我认为这是一个糟糕的想法,但不幸的是,它仍然很常见。这就是为什么我建议除了OMP_NUM_线程之外,OMP_THREAD_LIMIT=1,因为我认为它应该将那些硬连接的情况减少到1。是的,这就是环境变量的用途。然而,请注意,在“omp_set_num_threads(4)”(或类似内容)中有许多代码实际上忽略了令人羡慕的部分,理由是“我的机器中有四个内核”。你可能会猜到,我认为这是一个糟糕的想法,但不幸的是,它仍然很常见。这就是为什么我建议除了OMP_NUM_线程之外,还要使用OMP_THREAD_LIMIT=1,因为我认为它应该将那些硬连接的情况减少到1。你的OpenMP实现可能包括一个带有串行存根的OpenMP库,就像英特尔的一样。如果您想要一个独立于实现的答案,请坚持使用环境变量和函数调用。您的OpenMP实现可能包括一个带有串行存根的OpenMP库,就像Intel的一样。如果您想要一个独立于实现的答案,请坚持使用环境变量和函数调用。