- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在我的项目中使用 MUMPS。我想用求解方程的简单示例(如下)来测试安装。问题是,这段代码在我的个人电脑上可以正常工作,但每次我尝试在我的工作计算机上运行它时都会出现此错误:
*** The MPI_Comm_f2c() function was called before MPI_INIT was invoked.
*** This is disallowed by the MPI standard.
*** Your MPI job will now abort.
[espreso-ws:3263] Local abort before MPI_INIT completed successfully; not able to aggregate error messages, and not able to guarantee that all other processes were killed!
我尝试寻找可能的解决方案,但只发现了以下问题:
error: The MPI_Send() function was called before MPI_INIT was invoked
http://www.open-mpi.org/community/lists/users/2012/05/19262.php
他们都没有提供任何解决方案。
所以现在,我对此感到非常困惑,我真的不知道我应该做什么。当然,在 MPI_Comm_f2c()
之前调用了 MPI_Init()
。
你知道如何解决这个问题吗?
<小时/>/*
* file c_example.c
* This file is part of MUMPS 4.10.0
* To run: aprun -n 2 ./dsimpletest < input_simpletest_real
*/
/* Example program using the C interface to the
* double real arithmetic version of MUMPS, dmumps_c.
* We solve the system A x = RHS
*/
#include <stdio.h>
#include <string.h>
#include <mpi.h>
#include <dmumps_c.h>
#define JOB_INIT -1
#define JOB_END -2
#define USE_COMM_WORLD -987654
int main(int argc, char ** argv)
{
DMUMPS_STRUC_C id;
int n = 2;
int nz = 4;
int irn[] = {1,1,2,2};
int jcn[] = {1,2,1,2};
double a[4];
double rhs[2];
int myid, ierr;
ierr = MPI_Init(&argc, &argv);
ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
/* Define A and rhs */
rhs[0]=5.0;rhs[1]=2.0;
a[0]=3.0;a[1]=2.0;a[2]=1.0;a[3]=4.0;
/* Initialize a MUMPS instance. Use MPI_COMM_WORLD */
id.job=JOB_INIT;id.par=1; id.sym=0;id.comm_fortran=USE_COMM_WORLD;
dmumps_c(&id); // here the program crashes
/* Define the problem on the host */
if (myid == 0) {
id.n = n; id.nz =nz; id.irn=irn; id.jcn=jcn;
id.a = a; id.rhs = rhs;
}
#define ICNTL(I) icntl[(I)-1] /* macro s.t. indices match documentation */
/* No outputs */
id.ICNTL(1)=-1; id.ICNTL(2)=-1; id.ICNTL(3)=-1; id.ICNTL(4)=0;
/* Call the MUMPS package. */
id.job=6;
dmumps_c(&id);
id.job=JOB_END; dmumps_c(&id); /* Terminate instance */
if (myid == 0) {
printf("Solution is : (%8.2f %8.2f)\n", rhs[0],rhs[1]);
}
ierr = MPI_Finalize();
return 0;
}
<小时/>
.DEFAULT_GOAL=all
BINARIES=mumps_solve
.PHONY=all
all: mumps_solve
mumps_solve: mumps_solve.o
mpicc mumps_solve.o -o mumps_solve -ldmumps
mumps_solve.o: mumps_solve.c
mpicc -c mumps_solve.c -o mumps_solve.o
.PHONY=clean
clean:
rm -f ${BINARIES} *.o
最佳答案
问题可能隐藏在链接中。我发现引发错误的实际调用位于您要链接的库中。
简而言之:您可能链接到 MPI 的多个副本。一种已初始化,一种未初始化。后者由您的库调用并引发错误。
简而言之,解决方案:再次编译外部库和您自己的代码,验证所有编译都是由 mpicc
的完全相同的物理副本完成的。
可以针对与链接主库的副本不同的 MPI 发行版副本来编译和链接该库。如果是这种情况,则存在跟踪 MPI 初始化状态的全局变量的多个副本。对 MPI_Init()
的调用将转到您通过调用 Makefile 中的 mpicc
链接到的 MPI 副本(位于 which mpicc
)。如果您在 MPI_Init()
之后调用 MPI_Initialized(int*)
,您应该会发现它返回 true。
如果您有机会修改外部库 (mumps) 的源代码,并在崩溃的行之前调用 MPI_Initialized(int*)
,您应该会发现它返回 false,甚至尽管您调用了MPI_Init()
。这暗示库和您的二进制文件链接到 MPI 发行版的不同副本。
就我而言(在将头撞到墙上两天之后),这甚至是 MPI 的不同动态链接版本的问题。我很幸运能够控制该库的编译,因此可以修改它链接的 MPI 版本。
关于c - MUMPS - 在调用 MPI_INIT 之前调用 MPI_Comm_f2c() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687583/
我正在开发一个需要 MUMPS 示例代码的分析工具。谁能为我提供 MUMPS 实时代码或示例代码?还建议一些相同的链接。 最佳答案 这是我为了好玩而写的一些 MUMPS。我想如果你能分析这一点,你的工
我正在寻找 Mumps 全局实现的详细定义/讨论。有一份名为“MUMPS Globals and Their Implementation”的文件,但我找不到任何方式订购它,更不用说访问数字副本了。
我在使用 GT.M 时遇到了这个错误: %GTM-E-GDINVALID, Unrecognized Global Directory file format: /home/blah/gt.m/exa
我在使用 GT.M 时遇到了这个错误: %GTM-E-GDINVALID, Unrecognized Global Directory file format: /home/blah/gt.m/exa
我试图在 MUMPS 中将大数转换为字符串,但我不能。 让我解释一下我想做什么: s A="TEST_STRING#12168013110012340000000001" s B=$P(A,"#",2
如果我为K =“ ABC”:1:3定义“ ABC”的值是什么,如何循环执行“ ABC”,或者如果我使用任何“字符串”,那么该循环如何代替该ABC,如何增加字符串“ ABC”。 巴斯 最佳答案 MUMP
此语句是什么意思:S A=$P(P,,2) I S? 最佳答案 基于MUMPS的实现,这可能不是有效的语法。例如,“系统间高速缓存”将生成语法错误,因为传递给piece函数的第二个参数为空。 $P或$
我在最近的项目中致力于 MUMPS。我有一个关于裸指标的问题。我对例程和裸全局引用感到困惑。 任何人都可以帮助我理解例程和裸指标之间的区别吗?例程的语法看起来与裸指标的语法非常相似。 最佳答案 我不确
我正在连接一个基于 fis-gtm 的腮腺炎系统,我需要一些关于我本地 Linux 安装的测试数据(CENTOS 7 上的 fis-gtm V6.2)。 所以我阅读了手册并想出了:-- set nwo
我想知道如何使用 C# .NET 与 MUMPS 通信?有一个要求,我必须使用任何 .NET 技术(如 ASP.NET、WPF 或 Silverlight 等)在 .NET 中开发 UI。但后端将是旧
我需要在我的项目中使用 MUMPS。我想用求解方程的简单示例(如下)来测试安装。问题是,这段代码在我的个人电脑上可以正常工作,但每次我尝试在我的工作计算机上运行它时都会出现此错误: *** The M
有谁知道如何在不使用 KBSQL -ODBC 的情况下使用 C# 从 MUMPS 数据库中查询? 我们需要从 MUMPS 数据库(Mckesson STAR Patient care)查询,当我们使用
我正在尝试将 MKL 与 IPOPT 关联起来以提高性能。我已经通读了以下线程,它帮助我解决了很多问题。 Linking Ipopt with Intel MKL 但是,当我使用以下命令配置 Ipop
我正在尝试修改 this page 中的说明编译Elmer在 macOS(High Sierra 10.13.5)上。 我安装了gcc , cmake , open-mpi和 hypre来自 Home
我是一名优秀的程序员,十分优秀!