Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Multithreading 没有线程的OpenMP_Multithreading_Parallel Processing_Openmp - Fatal编程技术网

Multithreading 没有线程的OpenMP

Multithreading 没有线程的OpenMP,multithreading,parallel-processing,openmp,Multithreading,Parallel Processing,Openmp,我的群集有问题。我使用的是一个没有线程的旧系统(它们没有在我的系统中实现)。我的问题很简单:我可以在不在程序中定义线程数的情况下与OpenMP并行工作吗?我的意思是,使用openMP和真正的内核。 如果是这样,我想知道怎么做。我正在使用Fortran 90。您可以使用变量OMP_NUM_THREADS指定要运行的线程数。只有在未指定程序中与此相关的指令时,此操作才会起作用 如果您想在节点之间进行计算,您应该看看 警告:如果您的系统每个节点只有一个内核,那么使用多个线程将不会带来好处,甚至可能导致

我的群集有问题。我使用的是一个没有线程的旧系统(它们没有在我的系统中实现)。我的问题很简单:我可以在不在程序中定义线程数的情况下与OpenMP并行工作吗?我的意思是,使用openMP和真正的内核。
如果是这样,我想知道怎么做。我正在使用Fortran 90。

您可以使用变量OMP_NUM_THREADS指定要运行的线程数。只有在未指定程序中与此相关的指令时,此操作才会起作用

如果您想在节点之间进行计算,您应该看看


警告:如果您的系统每个节点只有一个内核,那么使用多个线程将不会带来好处,甚至可能导致性能下降。您唯一的希望是处理器启用了多线程,但它与多核不同。

问题不计算。你是说你的系统只有一个核心?如果是,为什么要首先使用omp?我从未在单核/线程CPU上尝试过,但我认为可以设置环境变量omp_NUM_THREADS来定义线程数。在类似linux的系统中,在运行可执行文件之前,运行shell命令export-OMP\u-NUM\u-THREADS=2。我真正的问题是,我的系统(有几个内核)非常旧,没有实现线程(硬件不适合它们)。所以我不能把句子当作“OMP_NUM_线程”。我的问题更多地涉及到将openMP与真实内核而不是线程一起使用的可能性。openMP不关心它使用的线程是真实物理线程(每个内核一个)还是模拟线程(每个内核几个线程,又称多线程)。我的第二段意在警告。我将对其进行编辑以使其更清晰。OpenMP的规范是基于线程的。如果操作系统中没有线程支持,OpenMP将无法编译。miguelbernardi:上次我检查OpenMP规范时,num_thread优先于omp_set_num_thread,后者优先于omp_num_THREADS环境变量,后者优先于xlsmopts环境变量。你确定你说的话吗?@Soravux是的,你是对的,我编辑了这个答案,所以现在是正确的。对不起,直到现在我才看到你的评论。