问题标签 [petsc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

c - PETSc 挂在 MatView() 上

我正在尝试在 PETSc 中创建和打印MATDENSE矩阵。我的 MWE 看起来像这样:

问题是,当在多个进程上运行时,程序突然挂在MatView()函数上,而不是写入out.txt文件。我在这里做错了什么?

0 投票
0 回答
98 浏览

c - 仅在 Valgrind 中使用 Petsc 运行问题时出现 Seg Fault/Error

我做了一个不幸的决定,卸载了我为 petsc/gcc/macports/brew/ 等工作的东西,因为 Valgrind 不适合我。我让 Valgrind 为我工作,重新安装了 Petsc 和 slepc 等,但是在我成功创建可执行文件 ./hello 之后,我遇到了这个问题:

我的程序是一个简单的程序:

当我通过 Valgrind 执行我的程序时,我遇到了分段错误,但是当我在没有 Valgrind 的情况下运行它时,我没有遇到任何问题或分段错误。瓦尔格林问题?添加时出现段错误 11

我该如何解决这个问题?

0 投票
1 回答
200 浏览

c++ - 我可以写入关闭的套接字并强制纠正损坏的管道错误吗?

我有一个在大量处理器上运行的应用程序。在处理器 0 上,我有一个函数可以在套接字打开时将数据写入套接字。此函数在处理器 0 上的单独线程中循环运行,即处理器 0 负责自己的工作负载,并有一个额外的线程在套接字上运行通信。

当客户端套接字关闭时,程序应该忽略错误,据我所知,这是标准行为。

但是,我正在使用一个外部库 (PETSc),它以某种方式检测管道损坏错误并关闭整个并行 (MPI) 环境:

如果可能的话,我想完全不改变这个库的配置。对任何可能的强大解决方法持开放态度。

0 投票
0 回答
106 浏览

c - 并行计算在 C 中使用 Petsc

我学习如何在 C 中使用 Petsc,我想在 Petsc 中用 KSP 求解线性系统(在 Ax=b 中找到 x,A 是矩阵(nxn),b 是向量(n))。该库提供了一些在 C 中计算并行的工具。但是,我遇到了麻烦并找到了答案,希望得到您的解释。

如果我使用大小为 5000x5000 的 A(A 是对角占优矩阵),当我在没有并行的情况下解决问题时,需要更长的时间来解决。我不明白这个问题。你能给我解释一下,以及如何做一些事情来跑得更快吗?

我在 test.c 中的代码如上所示:

我用命令运行程序:

0 投票
1 回答
981 浏览

python - 使用 pip 在 Anaconda 中安装 petsc4py 以指示外部 PETSc 目录

一)问题

我无法petsc4py在我的 Anaconda 环境中使用pip.

安装conda不起作用,因为它不会在安装过程中检查我预定义的 PETSC_DIR 和 PETSC_ARCH 环境变量。numpycython安装。

错误输出pip install显示在下面的第IV节中。

二)版本

我有 Ananconda 2020.02,安装了 Python 3.7。我的操作系统是 Ubuntu 18.04。

III) 重现问题

1) 用户安装OpenMPI 4.0.3

配置使用

然后makemake install

.openmpi/bin文件添加到 PATH 并添加.openmpi/lib到 LD_LIBRARY_PATH:

2) 安装PETSc 3.13

配置指示mpicc和下载 blas/ mpifortlapack /home/$USER/.openmpi/bin、scalapack、MUMPS、METIS、PARMETIS 和 PTSCOTCH,使用 -O2 编译器优化(注意:我将 MKL 用于 blas/lapack 和 scalapack)。还要在 中指明PETSC_DIR文件夹位置和PETSC_ARCH名称./configure。我选择了没有 C++ 编译器的选项。

然后make allmake check。我也做了一个make test,花了很长时间。没有失败,只有成功,跳过和去做。

export PETSC_DIRPETSC_ARCH(对 很重要pets4py)。

3)mpi4py使用安装pip

根据 Iliev在 Stack Overflow 的此链接中提供的对我的问题的回答,我使用 安装了这个pip,因为在指示自定义 mpicc 路径时mpi4py无法安装使用。conda

4)尝试petsc4py使用安装pip

我使用 --no-cache-dir 编写:

构建失败。终端中显示的信息将在下一节中显示。

四)错误

错误如下所示。

额外的元问题:有没有办法在 Stack Overflow 的代码围栏中设置自动换行符?)

0 投票
1 回答
766 浏览

linux - 安装petcs时出现错误。如何解决?

电脑配置:我的电脑是maosx系统,在虚拟机安装ubuntu,原系统安装天梯(VPN),Linux没有安装成功天梯(VPN)。

环境配置:在虚拟机中安装petsc,下载petsc软件包解压,安装GCC,gfortran,之前分别下载MPI和BLAS/LAPACK,但是安装MPI的时候出现错误。.

命令行执行,结果显示无法从网站下载MPI(我试过下载url,安装梯子(VPN)后可以下载。下面是输入命令和结果:

按照提示:提前下载mpich包。我了解存放mpich包的位置,但结果显示我的下载位置无效。是不是我选的位置不对?下面是我的第二条输入命令和结果,请大家帮我看看哪里有问题。


相反,我直接进入配置命令行。/configure 阶段完成。现在构建 PETSc 库

我尝试将 GCC 升级到最新版本,但没有任何改变

0 投票
1 回答
783 浏览

python - 在 Windows 上安装 Petsc

我用 python、make 和 diffutils 安装了 cygwin。

当我使用命令时:

我收到错误“检测到 Windows Python。请使用 cygwin-python 重新运行 ./configure ”。

如果我在 cygwin 命令行中使用该命令

我收到以下运行时错误:

欢迎任何帮助。

0 投票
1 回答
95 浏览

openmdao - 使用带有 OpenMDAO 的 pyoptsparse 驱动程序访问 NSGA2 种群大小

我正在尝试通过 OpenMDAO 的 pyoptsparse 驱动程序使用 NSGA2 优化器来修改 GA 人口大小。

我尝试使用字典进行访问PopSize,如下所示:pyNSGA2.pyopt_settings

但是,这会导致分段错误,消息如下:

是否有不同的方法来访问应该使用而不是opt_settings字典的 NSGA2 优化器的选项?我对 Python 比较陌生,所以我也怀疑我的语法也可能不正确。

更新: 对于更多的上下文,我尝试在没有 PETSC 的情况下运行。优化在没有尝试更改的情况下成功PopSize,但是Segmentation fault在尝试更改时它崩溃了PopSize。跟踪错误,我相信分段错误的根源在pyoptsparse/pyNSGA2/source/crossover.c,根据下面的消息

我还尝试在新机器上全新安装 PETSC,但这让我又回到了同样的错误。

0 投票
1 回答
216 浏览

macos - 尝试通过 MacOS 终端编译:“没有这样的文件或目录”

我正在尝试从 DTU 编译这个项目。该项目需要安装PETSc

我已将 PETSc 安装到/Users/hornymoose/petsc-3.13.3/

我已经从 GitHub 中提取了 zip 到/Users/hornymoose/dtu

DTU 项目makefile有以下几行:

在这些行中,{PETSC_DIR}被替换为用户的 PETSc 安装目录。因此,我将这些行更改为:

为了编译代码,我make topopt在终端中编写。这样做会产生:

我已经回去手动检查了Users/hornymoose/petsc-3.13.3/lib/petsc/conf/variables, ...rules, 并且...test肯定存在并且没有错误。

为什么我会收到此错误?我是否在我的 中错误地指示了目录makefile?中的语法makefile不正确吗?

我确信有一个简单的解决方案,我对在 MacOS 中使用终端非常陌生。先感谢您!

0 投票
1 回答
62 浏览

c - 如何将 PETSc Vec 数组传递给函数

我正在尝试将PETSc 中的 Vec数组传递给一个函数,在内部对其进行修改并检索结果。伪代码如下:

我确实收到了来自编译器的一条消息,指出variable "y" is used before its value is set,但我看不到如何通过引用传递这些人。VecDuplicateVecs必须在main中初始化吗?