问题标签 [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.
openmdao - OpenMDAO PetscTgtVecWrapper TypeError
我正在尝试运行一个并行工作流,我在其中评估ParallelGroup
. 如果我在少量内核上运行,它不会崩溃,但在某些时候增加节点数量会引发错误,这表明它与问题的分区方式有关。
据我所知,在设置通信表时,我从 OpenMDAO 和 PETSc 的深层地牢中得到一个与目标索引有关的错误。以下是错误回溯的打印:
这个答案:
引导我寻找你设置tgt_idxs
向量的位置,看看它是否用正确的 dtype 定义PETSc.IntType
。但是到目前为止,Petsc has generated inconsistent data
当我尝试设置我认为可能导致错误的数组的 dtype 时,我只会遇到错误。
我还没有尝试按照--with-64-bit-indices
我链接到的答案中的建议重新安装 PETSc。您是否运行以这种方式配置的 PETSc?
编辑:我现在已经设置了一个简化版本的问题,它复制了我得到的错误:
完成后,我还可以看到由于我们评估的许多案例,数据量最终变得巨大。我会看看我们是否可以以某种方式减少数据大小。我现在根本无法运行它,因为它要么因错误而崩溃:
或TypeError
.
python - 安装 petsc4py 以在 openmdao 中使用时如何修复版本错误
我正在尝试使用 Python网站上找到的方向安装 petsc4py,但出现错误。如何解决此找不到正确版本错误?我的总体目标是能够使用 openMDAO,但我需要先让 petsc4py 工作。
以下是命令的输入,然后是我收到的错误
c++ - Petsc 添加矩阵值
我对 PETSC 有疑问。我在 matlab 中编写了一个代码,我正在尝试使用 PETSC 库将此代码转换为 C++。我正在为多相流编写流体动力学模拟,并且我正在尝试以一种简单的方式进行与此 matlab 操作等效的操作:
有没有办法做到这一点而不必调用 MATGETVALUES 函数 7 次?
c++ - PETSC DMDA vec 值分配给 wrang 位置
我最近开始学习 PETSc,在尝试完成一些简单的任务时遇到了问题。这段代码有什么问题:
它用进程等级标记的数量填充小数组。成功编译并链接后,结果如下:
VecView 显示进程已写入属于其他进程的位置。哪里有错误?DMDAVecGetArray/DMDAVecRestoreArray 给出错误的数组或 VecView 不适合查看从 DM 对象获得的 Vec?
mpi - 具有共享内存的 PETSc
我有一个 MPI 并行代码,它使用 PETSc 用无矩阵 GMRES 方法求解线性方程组。它工作正常,但每个进程使用的内存量大致相同,与我使用的进程数量无关。因此,当使用许多进程时,内存使用量会过多。我想知道是否有办法解决这个问题,我认为使用共享内存方法可能是要走的路。
据我了解, PETSc 支持PETSc 网站共享内存(为简单起见,使用 MPI 共享内存),但我找不到有关如何启用或使用它的任何信息。将 PETSc 与共享内存一起使用是否可以解决我的问题,如果是,是否有任何文档说明如何执行此操作?或者如果可能的话,在 PETSc 中是否默认使用 MPI 共享内存而无需额外编码?
petsc - 如何构造petsc矩阵?
我正在使用 petsc4py,现在面临一些问题。我有许多小的 petsc 密集矩阵 mij,我想将它们构造成一个大矩阵 M,如下所示:
下面显示了一个 mcve 代码,我使用的是 PETSc 的 python 包装,但是它们的语法是相似的。
报告此类错误消息:
python - 在链接到 PETSc 的 Fortran 代码上使用 f2py
我的问题与这篇文章有关:
在用 f2py 包装的模块中包含一个已编译的模块(最小工作示例)?
海报试图用 f2py 编译 Fortran 代码(Test.f90)并将其链接到预编译库(或者在我的情况下,对象 myex44f.o)。答案使我能够编译 Fortran 代码并生成 python 模块。
我的问题与上述海报问题的不同之处在于我的对象与 PETSc 相关联。当我尝试将我的 f2py 生成的库导入 python 时,我收到错误,它无法找到 PETSc 子例程“VecDestroy”。我最近的尝试是:
f2py -c --fcompiler=gfortran -I. myex44f.o ../../../Codes/third_party/petsc/include/petsc/finclude/petscdef.h -m test Test.f90
这是代码Test.f90:
mainsub
从模块调用petsctest
:
我得到的错误是:
导入测试回溯(最近一次调用最后):文件“”,第 1 行,在 ImportError:./test.so:未定义符号:vecdestroy_
有没有人有什么建议?非常感谢您为我提供的任何帮助。
更新:myex44f.o
我使用 PETSc 示例提供的 makefile
生成了原始对象。查看链接行,我推断在使用 f2py 编译时可能需要链接 petsc 库。我目前的尝试是:
f2py -c --fcompiler=gfortran -m test Test.f90 -I. myex44f.o -I/home/costoich/Documents/AFPWork/Codes/third_party/petsc/include -I/home/costoich/Documents/AFPWork/Codes/third_party/petsc/arch-linux2-c-debug/include -L/home/costoich/Documents/AFPWork/Codes/third_party/petsc/arch-linux2-c-debug/lib -lpetsc
这似乎在编译步骤期间正确链接(如果我只是在-lpetsc
没有路径的情况下编写编译器失败)。但是,当我输入时ldd test.so
,我得到:
linux-vdso.so.1 => (0x00007ffe09886000)
libpetsc.so.3.7 => not found
libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fc315be5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc31581b000)
libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007fc3155dc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc3152d3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc3150bc000)
/lib64/ld-linux-x86-64.so.2 (0x000055a3fad27000)
我需要两个使用链接标志 Wl,rpath 吗?f2py 似乎不明白这些。感谢您的任何评论。
解决
了我发现了我的问题。我无法让 f2py 接受这些-Wl,rpath
选项,但如果我定义了环境变量,LD_LIBRARY_PATH=/home/costoich/Documents/AFPWork/Codes/third_party/petsc/arch-linux2-c-debug/lib
一切都会解决。谢谢您的帮助。
python - 如何在 MPI 模式下正确运行 petsc?
我正在使用 petsc 作为我的项目的求解器。但是,并行模式下的求解器创建的过程比我的预期要多得多。
代码使用python和petsc4py。该机器有4个核心。(一个)。如果我直接运行它,petsc 只使用 1 个进程来组装矩阵,并创建 4 个进程来求解方程 (b)。如果我使用注释'mpirun -n 4',petsc 使用 4 个进程来组装矩阵,但创建 16 个进程来求解方程,
我检查了我自己的python代码,与matrix create关联的主要组件如下:
与 petsc 求解器相关的主要组件如下:
有没有人可以给我一些建议?谢谢。
c++ - 逗号在以下语句中的作用是什么?
当我在 C/C++ 中想到这种语法时,目前正在阅读 PETSc:
我不明白这里逗号的含义。它与元组有关吗?还是有什么超载的?
c++ - 使用 MPI+CUDA 和 PETSc 分布式阵列求解大型线性方程组
我想在我自己的程序中使用 PETSc 库来解决大型分布式线性方程组。此外,我想为此目的使用可用的 GPU 资源。我正在使用结构化网格来离散表示 3D 计算域,因此最好使用 PETSc 分布式阵列来避免进程之间的额外数据传输。
我已经使用以下字符串配置了 PETSc:./configure --prefix=/usr/local/petsc --with-mpi=1 --with-cuda=1 --with-cusp=1 --with-cusp-include=/usr/local/cuda/include/cusp/ --with-cusp-lib=
然后将其安装到/usr/local/petsc
位置。
现在我正在尝试在简单的测试程序中创建 DMDA 对象:
但是当我运行它时,我得到一个错误:
这个简单的代码有什么问题?
更新:uname -a
命令的结果:
Linux PC 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
。
使用 MPI 规范的开放式 MPI 实现。