Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.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
OpenMP超额订阅是否会导致内存错误? 在MPI/OpenMP混合程序中,OpenMP线程的数量超额导致C++中的并行代码不正确执行?我所说的不正确是指它不能像预期的那样在并行测试用例中产生输出_C++_Multithreading_Mpi_Openmp_Shared Memory - Fatal编程技术网

OpenMP超额订阅是否会导致内存错误? 在MPI/OpenMP混合程序中,OpenMP线程的数量超额导致C++中的并行代码不正确执行?我所说的不正确是指它不能像预期的那样在并行测试用例中产生输出

OpenMP超额订阅是否会导致内存错误? 在MPI/OpenMP混合程序中,OpenMP线程的数量超额导致C++中的并行代码不正确执行?我所说的不正确是指它不能像预期的那样在并行测试用例中产生输出,c++,multithreading,mpi,openmp,shared-memory,C++,Multithreading,Mpi,Openmp,Shared Memory,我试图给出一个例子,说明超额订阅本身会导致代码执行失败。通过研究,我能想到并找到的唯一原因是OpenMP中使用的线程太多,导致堆栈溢出 我提出这个问题的动机是,我正在使用混合OpenMP/MPI进行一个大型项目,其中失败测试的数量似乎取决于使用的内核数量。我想这可能是由于一些问题超出了问题的范围,但我很想知道是否单纯的超额认购会导致正确性测试失败 否。在正常运行的硬件上,一个格式正确的并行程序不会因为过度订阅而变得不正确 超额认购根本不违反正确性假设。想象一个非固定程序——处理器可以将它的一个线

我试图给出一个例子,说明超额订阅本身会导致代码执行失败。通过研究,我能想到并找到的唯一原因是OpenMP中使用的线程太多,导致堆栈溢出


我提出这个问题的动机是,我正在使用混合OpenMP/MPI进行一个大型项目,其中失败测试的数量似乎取决于使用的内核数量。我想这可能是由于一些问题超出了问题的范围,但我很想知道是否单纯的超额认购会导致正确性测试失败

否。在正常运行的硬件上,一个格式正确的并行程序不会因为过度订阅而变得不正确

超额认购根本不违反正确性假设。想象一个非固定程序——处理器可以将它的一个线程迁移到已经在执行另一个线程的核心。就本地而言,这类似于超额认购,且不得有任何错误

由于缺乏资源,您可能会遇到严重的性能下降或程序终止。当然,一个不正确的项目,如果在超额认购的情况下运行,可能会暴露出它的缺陷。超额认购可能会暴露出现有硬件问题。

的确如此。困难在于,当部件仅在极端荷载下明显时,难以找到不正确或成形不良的部件。