问题标签 [f2c]

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 投票
2 回答
527 浏览

linux - libf2c.so.2 - main 未定义

我会尽量做到非常具体和翔实。为了地理空间/地理科学社区的利益,我想创建一个包含地球科学中使用的所有包的 Dockerfile。Dockerfile 建立在scipy-notebook docker- stack 之上。

问题:

我正在尝试构建 HPGL(地统计学的 Python 包)。

对于依赖项:我使用下载的 .deb 包构建了一些包apt-get,对于那些我无法安装的包。apt下面的 Dockerfile 显示了构建所有 HPGL 依赖项的步骤:

这运行顺利,我可以运行 Docker 容器并启动笔记本,但是当我在 Python 中导入 HPGL 时,我收到这个错误,我不知道发生了什么或如何解决这个问题:

编辑1:

所以显然@Jean-François Fabre Here 指出了这个非常相似的问题!. 在那里,问题与文件有关,libf2c.so并按如下方式解决:

@p929 在同一线程中解释了此解决方案:

它所做的实际上是删除动态库并为静态库创建别名。

现在,我知道我有同样的问题,但文件不同(/usr/lib/libf2c.so.2)。解决方案是“删除动态库并创建静态库的别名”。我用相同的静态库尝试过,/usr/lib/libf2c.a但没有成功。

0 投票
1 回答
165 浏览

c - F2C结构和记录

我正在使用F2C(FORTRAN 77 TO C)将一个巨大的 FORTRAN 代码转换为 C。我的一个源 FORTRAN 文件有一个包含文件,F2C 由于某些原因不喜欢它。这是扩展名为 .INS 的包含文件(TAGLINE.INS)(我怀疑扩展名是否重要):

尝试使用 F2C 将源代码转换为 C 时,出现以下错误:

显然,F2C 抱怨包含文件 (STRUCTURE /STAGRICL/) 内部的结构。Fortran 77 注释行以字符 c 开头。

我的源代码包括 .INS 文件,如下所示:

感谢您的帮助

0 投票
0 回答
57 浏览

matrix - CLAPACK f2c vs MKL:矩阵乘法性能问题

我正在寻找一种解决方案,通过大量矩阵乘法来加速我的程序的性能。所以我用 MKL 替换了 CLAPACK f2c 库。不幸的是,演出的结果不是预期的。

经过调查,我遇到了一个块三角矩阵,当我尝试将它与其转置相乘时,它主要表现不佳。

为了简化问题,我用 5000 个元素的单位矩阵进行了测试(我发现了相同的结果)

姓名 矩阵 [尺寸,尺寸] CLAPACK f2c(第二) MKL_GNU_THREAD(第二个)
单位矩阵本身的乘法 5000 0.076536 1.090167
密集矩阵乘以其转置 5000*5000 93.71569 1.113872
  • 我们可以看到单位矩阵的 CLAPACK f2c 乘法比 MKL 更快 (x14)。
  • 我们可以注意到 MKL 和 CLAPACK f2c 密集矩阵乘法之间的加速度乘以 84。

此外,dense*denseT 和单位矩阵的乘法过程中的时间消耗差异非常小。

所以我试图在 CLAPACK f2c DGEMM 中找到解析矩阵乘法的优化,我发现了一个空值条件。

当我删除这个条件时,我得到了这样的结果:

姓名 矩阵 [尺寸,尺寸] CLAPACK f2c(第二) MKL_GNU_THREAD(第二个)
单位矩阵本身的乘法 5000 93.210873 1.090167
密集矩阵乘以其转置 5000*5000 93.71569 1.113872
  • 在这里,我们注意到稠密和恒等式的乘法在性能方面是非常子句,现在 MKL 表现出最好的性能。
  • MKL 乘法似乎比 CLAPACK f2c 更快,但只有相同数量的非空元素。

我对这个结果有两个想法:

  1. MKL中默认不激活0优化

  2. MKL 看不到我的稀疏矩阵中的 0 (double) 值。

你能告诉我为什么 MKL 显示性能问题吗?您有什么技巧可以绕过 dgemm 对空元素的乘法吗?

我在 CSR 中做了一个保护,它显示出更好的性能,但在这种情况下为什么 lapacke_dgemm 比 f2c_dgemmm 最差。

谢谢您的帮助 :)

MKL_VERBOSE Intel(R) MKL 2021.0 Update 1 Product build 20201104 for Intel(R) 64 架构 Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) 启用处理器,Lnx 3.50GHz lp64 gnu_thread

0 投票
2 回答
87 浏览

c - 相同的 f2c 生成的 C 代码,在 2 个平台上使用 gcc 构建会产生不同的结果

我们的代码有一个奇怪的问题,多年来我们在多个平台上使用相同的代码,但今年我们需要在 64 位 RHEL 8 系统上构建我们的软件。

在构建过程中,我们需要使用 f2c 工具将一些 F77 代码转换为 C 代码。

在此转换处理期间,内存中的一些变量在输出 C 文件中像这样定义。

在我们所有的系统(HP-UX、AIX、Ubuntu、openSUSE)上,当我们使用 GCC 构建 C 代码时,我们获得了良好的价值。

在 Opensuse 上:读取v_cncal值在dovit_1地址 + 5 x 短类型大小 (2) == > (10)

但在 RHEL 上,相同的 C 代码返回错误的地址值:

在 RHEL 8 上:读取v_cncal值位于dovit_1地址 + 5 x int 类型大小 (4) ==> (20) 但dovit_1它是一个short数组而不是int数组。

GCC 版本在这两种情况下 8.4 和相同的 f2c 编译器

有什么问题?

更新

在调试过程中,我们尝试像这样手动修改 C 代码:

但是这个 C 代码是由 f2c 生成的,我认为最好的方法是让 f2c 开发团队知道发生了什么。

更新 1

dovit_1 如何声明: