问题标签 [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.
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
但没有成功。
c - F2C结构和记录
我正在使用F2C(FORTRAN 77 TO C)将一个巨大的 FORTRAN 代码转换为 C。我的一个源 FORTRAN 文件有一个包含文件,F2C 由于某些原因不喜欢它。这是扩展名为 .INS 的包含文件(TAGLINE.INS)(我怀疑扩展名是否重要):
尝试使用 F2C 将源代码转换为 C 时,出现以下错误:
显然,F2C 抱怨包含文件 (STRUCTURE /STAGRICL/) 内部的结构。Fortran 77 注释行以字符 c 开头。
我的源代码包括 .INS 文件,如下所示:
感谢您的帮助
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 更快,但只有相同数量的非空元素。
我对这个结果有两个想法:
MKL中默认不激活0优化
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
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 如何声明: