什么可能导致C,MPI程序使用在Gentoo Linux集群上运行的名为SUNDIALS/CVODE(一个数字ODE求解器)的库来重复Signal 15 received.
?
该代码是由MPI,Sundials,Linux,C还是谁发布的?
请注意,我几乎是初学者,拥有以下技术:C,MPI,SUNDIALS/CVODE和Linux.
通过Google搜索消息,我找不到任何与之相关的内容.我甚至不知道从哪里开始看.(这是其中一个问题,其中"任何有用的"都是字面意思.)
(作为抛开/事后的想法,为什么Chrome的字典不能识别"google搜索"这个词?).
我为这个问题的愚蠢提前道歉,但我很困惑 h@&!甚至不知道该问什么了。
对于我的数学论文 - 即,我不是程序员 - 我必须编写使用CVODE 库的C 代码,它是 SUNDIALS 的一部分(你需要所有这些细节吗?)。但是我不能直接在程序最终运行的 Gentoo Linux 集群上工作。
根据 SUNDIALS 的网站,CVODE 很少在本机 Windows 环境中编译和使用,但已使用 Cygwin 使用。所以我想在我的 Windows PC 上使用 Cygwin 设置一个 C 编程环境,包括一个 IDE(尤其是调试器)。
我已经在我的 64 位 Windows PC 上安装并执行了基本的 Cygwin(加上一个用于 nano 编辑器的包)。我想使用 Eclipse IDE,它适用于 Linux 和 Windows,并且实际上只能用于图形界面(我认为)。我想我接下来应该设置 Eclipse(然后是 CVODE)。这就是我现在正在努力做的。
我的基本问题是如何设置 Eclipse 以使用 Cygwin?运行 Eclipse 需要哪些 Cygwin 包?
从文档中,我看到 Cygwin 有一个服务器(Cygserver),但没有图形界面。或者,它可能有一个称为 Cygwin/X 的图形界面。我是否在 Windows 中设置 Eclipse 以与 Cygserver 通信,然后在 Windows 中完成我的工作,但编译等会在 Cygserver 中进行?或者,我是否安装 Cygwin/X 并使用 Linux 版本的 …
我正在寻找帮助让我的Makefile做我想做的事情.
我已经想出如何将预处理代码添加到我的C源代码中,只有在我编译调试时才会编译:
#if DEBUG
printf("main()\n");
{
/* Pauses execution so gdb can attach. */
int i=9;
pid_t PID;
char hostname[256];
gethostname(hostname, sizeof(hostname));
printf("PID %d on %s ready for attach.\n", PID=getpid(), hostname);
fflush(stdout);
while (i>0) {
sleep(5);
i--;
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
而且我已经想出如果我添加-DDEBUG=1
到我的编译语句中,上面的代码将被编译(否则它不会被编译).
接下来,我想将一个标志传递给我的Makefile,它将包含或不包含该-D
选项.目前,我有两个单独的编译行,我在适当时评论和取消注释.这是我的Makefile(我从某人那里继承并且很难理解).看看说的那些CFLAGS
?:
SHELL = /bin/sh
prefix = /home/schwarz/sundials/instdir
exec_prefix = ${prefix}
includedir = ${prefix}/include
libdir = ${exec_prefix}/lib
CPP = cc -E
CPPFLAGS =
CC = cc
# CFLAGS = -Wall -g
CFLAGS = -Wall …
Run Code Online (Sandbox Code Playgroud) 如果你打印的浮点数比存储在存储器中的精度更高,那么它们不应该是额外的零点吗?我有这样的代码:
double z[2*N]="0";
...
for( n=1; n<=2*N; n++) {
fprintf( u1, "%.25g", z[n-1]);
fputc( n<2*N ? ',' : '\n', u1);
}
Run Code Online (Sandbox Code Playgroud)
这是创建这样的输出:
0,0.7071067811865474617150085,....
一个浮点数应该只有17个小数位(右边?不是53位到17个小数位).如果是这样的话,那么第18,19 ...... 25位应该有零.请注意,在上面的输出中,它们的数字不是0.
我误会了什么吗?如果是这样,什么?