- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以用一个函数来包装MPI_Init
和MPI_Init_thread
?这样做的目的是拥有更清晰的 API,同时保持向后兼容性。当 MPI 运行时不支持对 MPI_Init_thread
的调用时,会发生什么情况?当不支持 MPI_Init_thread
时,如何保持我的包装函数适用于 MPI 实现?
最佳答案
MPI_INIT_THREAD
是 15 年前发布的 MPI-2.0 规范的一部分。事实上,除了一些非常古老的实现之外,所有现有的 MPI 实现都符合 MPI-2。您可能无法获得所需级别的线程支持,但该函数应该存在,并且您仍然应该能够调用它而不是MPI_INIT
。
最好、最便携的选择是在 MPI 库中为 MPI_Init_thread
提供一个类似于 configure
的机制探针,例如通过尝试编译一个非常简单的 MPI 程序并查看它是否因未解析的符号引用而失败,或者您可以使用 nm
(用于存档)或 objdump 直接检查 MPI 库的导出表
(对于共享 ELF 对象)。一旦确定 MPI 库具有 MPI_Init_thread
,您就可以定义一个预处理器符号,例如CONFIG_HAS_INITTHREAD
。然后将你的包装与此类似:
int init_mpi(int *pargc, char ***pargv, int desired, int *provided)
{
#if defined(CONFIG_HAS_INITTHREAD)
return MPI_Init_thread(pargc, pargv, desired, provided);
#else
*provided = MPI_THREAD_SINGLE;
return MPI_Init(pargc, pargv);
#endif
}
当然,如果 MPI 库缺少 MPI_INIT_THREAD
,则 MPI_THREAD_SINGLE
和其他线程支持级别常量也不会在 mpi.h< 中定义
,因此您可能需要在某处定义它们。
关于MPI - MPI_Init 和 MPI_Init_thread 的一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226646/
ref MPI_Init 的声明: This routine must be called by one thread only. That thread is called the main thr
我有一个最小的问题示例,我只是启动 4 个进程(在具有 8 个线程的四核 Intel Core i7 cpu 上),并且出于某种原因 MPI_Init 似乎需要非常,很长一段时间。 这是我的代码:
我遇到了关于使用MPI_Init() 的问题。 我只想使用下面上下文中的代码在根处理器上初始化随机数“randv”。为了查看我的目标是否实现,我让程序打印出数组“randv”,方法是在“call RA
假设我有一些如下所示的代码: #include "mpi.h" int main( int argc, char** argv ) { int my_array[10]; //fill
MPICH 和 OpenMPI 的文档都提到,在 MPI_Init 之前或 MPI_Finilize 之后应该完成最少的工作: The MPI standard does not say what a
我遇到了关于使用MPI_Init() 的问题。 我只想使用下面上下文中的代码在根处理器上初始化随机数“randv”。为了查看我的目标是否实现,我让程序打印出数组“randv”,方法是在“call RA
从 std::thread 调用 MPI_Init 是否安全? int main(int argc, char** argv) { std::thread mpi_thread([...]()
有什么区别,应该实际使用哪一个?我找到了这个 IBM链接和这个问题 MPI - one function for MPI_Init and MPI_Init_thread .如果重要的话,我只对 C
是否可以用一个函数来包装MPI_Init和MPI_Init_thread?这样做的目的是拥有更清晰的 API,同时保持向后兼容性。当 MPI 运行时不支持对 MPI_Init_thread 的调用时,
在全新的 Raspberry Pi 4 Ubuntu 上运行干净的 Ubuntu, ubuntu@ubuntu:~/mpi-hello-world/mpitutorial/tutorials/mpi-
我需要在我的项目中使用 MUMPS。我想用求解方程的简单示例(如下)来测试安装。问题是,这段代码在我的个人电脑上可以正常工作,但每次我尝试在我的工作计算机上运行它时都会出现此错误: *** The M
我一直在用下面的代码测试 mpi 究竟是如何工作的 #include #include using namespace std; int main(int argc
这就是我们如何使用 MPI_Init 函数 int main(int argc, char **argv) { MPI_Init(&argc, &argv); … } 为什么 MPI_Init
这就是我们如何使用 MPI_Init 函数 int main(int argc, char **argv) { MPI_Init(&argc, &argv); … } 为什么 MPI_Init
我正在尝试通过 python 使用 OpenMPI 访问共享库,但由于某种原因,我收到以下错误消息: [Geo00433:01196] mca: base: component_find: unabl
我正在尝试在 Windows 中首次使用 Visual Studio 2010 和 Intel Composer XE 2011 SP1 的试用版、ifort visual fortran 编译器编译
我是一名优秀的程序员,十分优秀!