首页 > 解决方案 > 使用 -fopenmp 编译并同时链接到 UMFPACK?

问题描述

我希望每个人都做得很好。

我在集群上使用 OpenMP 来并行化计算。我还想链接到 UMFPACK 来求解稀疏方程组。OMP 块中不使用 UMFPACK。

但是我发现当我运行代码时,并行化并不能很好地工作。我使用 htop 来监控 CPU。它确实说有 20 个 CPU 正在运行,但条形图暗示这不是真的:

在此处输入图像描述

而且我的代码确实比没有通过 -lumfpack 链接的代码运行得慢得多。实际上,如果不使用 -lumfpack 链接到库,htop 应该显示如下内容:

在此处输入图像描述

我使用以下代码来编译和运行代码:

module load suitesparse/5.6.0

gfortran main.f90 -lumfpack -o main.out -O3 -fopenmp -ffree-line-length-none -Wno-unused -fimplicit-none -Wall -fcheck=bound,do -ffpe-trap=invalid,zero,overflow

./main.out

由于 OMP 块中没有使用 UMFPACK,为什么会-lumfpack-fopenmp? 我想知道如何让它们一起工作。任何建议表示赞赏。谢谢!

标签: openmpgfortranumfpack

解决方案


推荐阅读