用于稀疏矩阵的 Fortran 90/95 库?

2024-06-21

我正在寻找一个用于处理 Fortran 90/95 中稀疏矩阵的库。我只需要非常基本的运算,例如矩阵向量乘法。你建议我用什么?

我搜索了一下,找到了 BLAS 的一个扩展(?),称为“稀疏 blas”,记录在blast技术论坛规范的第 3 章中:

http://www.netlib.org/blas/blast-forum/ http://www.netlib.org/blas/blast-forum/,

看起来很理想。根据该文档,该库应该有一个 Fortran 95 接口。但是,我无法在任何可以下载的地方找到该规范的实际实现。我的印象是 fortran 95 稀疏 blas 规范并没有真正在任何地方实现?反正不是开源的。

我还发现了一个名为sparsekit的库:

http://people.sc.fsu.edu/~jburkardt/f_src/sparsekit/sparsekit.html http://people.sc.fsu.edu/~jburkardt/f_src/sparsekit/sparsekit.html

有人对这两个库之一或 fortran 90/95 的任何其他稀疏矩阵库有任何经验吗?我想了解使用哪一个以及从哪里获取它的建议(对于sparsekit,可以通过上面的链接获取源代码)。稀疏矩阵是否有类似“标准”的东西,就像稠密矩阵的 BLAS 一样?

Cheers,

Arne


好的,我将部分回答我自己的问题:

上面的 @alexurba 提供了在哪里可以找到 Sparse BLAS 的完整 f95 实现:

http://www.netlib.org/toms/818 http://www.netlib.org/toms/818

就是这样!该脚本在您运行它的文件夹中创建所有源代码(我以前从未见过以这种方式提供的软件)。

为了使安装脚本工作,我需要做一些更改:安装说明告诉您编辑安装脚本并选择适当的“arch”。您的选择有:AIX、ALPHA、CRAY、HP、NAG、SGI 和 SUN。这些似乎都不适合我,因为我使用的是 Linux,而我在这台计算机上唯一的 Fortran 编译器是 gfortran。我不太明白这个选项的目的,但我所做的有效操作如下:

1) 在 INSTALL 中,通过设置变量 SB_ARCH='GNU' 来组成一个新的“arch”,我称之为 GNU。 2) 在 SOFTWARE/Makefile 中将 FC = f90 更改为 FC = gfortran, 3) 在 TESTER/ 中将文件 Makefile.NAG 复制到 Makefile.GNU,将 FC = f90 更改为 FC = gfortran,并更改单词“NAG”的所有实例”到“GNU”。 (您可能还想更改 Makefile 中的 FFLAGS 选项。)

之后,我运行 INSTALL,然后运行 ​​TESTER/test_all,测试吐出“0.000...”作为错误,我认为这意味着一切正常。

我必须说我发现找到这个源代码异常困难。幸运的是,当现在搜索“fortran 90 稀疏矩阵库”时,这个线程在谷歌上出现得相当高。

我的最终解决方案:具有讽刺意味的是,在最终找到稀疏 BLAS 的完整实现之后,我决定对于我的问题最好使用更直接的方法,因为我可能需要的是矩阵向量乘法:找出稀疏矩阵要使用的表示形式(压缩稀疏行(CSR)似乎适合我的问题),从稀疏BLAS源代码中挖掘出相应的矩阵向量乘法例程,看看它想要如何输入,然后直接在我的代码中使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于稀疏矩阵的 Fortran 90/95 库? 的相关文章

  • 稀疏向量模板类:如何清理它?

    我不确定这是否是一个好问题 如果不是 请关闭它 我开始写 使用boost coordinate vector作为起点 sparse vector有效实现类似向量接口的模板类 但很稀疏 它实现了所有常见的向量运算和一个迭代集合元素的快速稀疏迭
  • GO TO 语句 - Fortran 到 Matlab

    我一直在努力将此网格搜索代码从 Fortran 转换为 Matlab 但是我无法正确合并 GO TO 语句 我正在尝试使用 while 循环 但我认为我需要其他东西来结束搜索 任何帮助将不胜感激 vmax 1 0E 15 amax G 1
  • 指针的 Fortran 副本

    我有一个包含指针 p 的 var 类型 我需要将 var 复制到与 var 类型相同的另一个变量 var1 上 通过执行 var1 var 在引号中 因为我不知道这是否是正确的方法 请参见下文 在我的实现中 var 和 var1 被传递给一
  • MPI_Type_Create_Hindexed_Block 生成派生数据类型的错误范围

    使用Fortran 我尝试为动态分配的结构构建派生数据类型 但它得到了新类型的错误范围 代码如下 PROGRAM MAIN IMPLICIT NONE INCLUDE mpif h INTEGER I INTEGER MYID NUMPRO
  • Fortran 递归分段错误

    我必须设计并实现一个 Fortran 例程来确定方格上簇的大小 并且递归地编写子例程似乎非常方便 然而 每当我的晶格大小超过某个值 大约 200 边 时 子例程就会始终出现段错误 这是我的集群检测例程 RECURSIVE SUBROUTIN
  • Scipy 稀疏 CSR 矩阵到 TensorFlow SparseTensor - 小批量梯度下降

    我有一个 Scipy 稀疏 CSR 矩阵 它是根据 SVM Light 格式的稀疏 TF IDF 特征矩阵创建的 特征数量巨大且稀疏 所以我必须使用 SparseTensor 否则速度太慢 例如 特征数量为 5 示例文件如下所示 0 4 1
  • 在 fortran 子例程中包含 c/c++ 头文件

    我有一个用 C C 编写的库 其开发人员声明该库具有 Fortran 接口 该接口将被启用 包括头文件 h 并调用经典子例程 我想编译我的 Fortran 程序并链接该库 该库已经过测试并且可以工作 这是主程序 Main program I
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • 在 Windows 上将 NumPy 与 BLAS 链接

    我正在尝试在 Windows 系统上安装 Theano 并且需要安装 BLAS 和 LAPACK 我的 System32 文件夹中有这些的 dll 文件 当我运行 numpy config来自 Anaconda 的 show 库的路径正确显
  • 乔斯基与 ScaLAPACK

    我正在尝试通过进行 Cholesky 分解pdpotrf https software intel com en us node 521465MKL Intel 的库 它使用 ScaLAPACK 我正在读取主节点中的整个矩阵 然后像这样分配
  • 带有数字/标签的 Fortran IF 语句而不是另一个语句

    这段 Fortran 代码的含义是什么 IF J1 3 20 20 21 21 J1 J1 3 20 IF J2 3 22 22 23 23 J2 J2 3 22 CONTINUE 我在旧项目中看到过 我不知道这个带有数字 标签 的 IF
  • 将结构化数据类型从 Fortran 传递到 C++ [重复]

    这个问题在这里已经有答案了 我在 Fortran 中有一个结构化类型 其中包含大量数据 包括指针 real 8 指针数据类型 我正在为某些 Fortran 例程开发 C API 我需要在对 Fortran 例程的调用之间保留该结构的内容 我
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 如何在R中得到一个大的稀疏矩阵? (> 2^31-1)

    我使用一些 C 代码从数据库中获取文本文件 并从该文件创建 dgcMatrix 类型稀疏矩阵Matrix包裹 我第一次尝试构建一个具有超过 2 31 1 个非稀疏成员的矩阵 这意味着稀疏矩阵对象中的索引向量也必须比该限制长 不幸的是 向量似
  • 另一个生命游戏问题(无限网格)?

    我一直在玩 Conway 的生命游戏 最近发现了一些令人惊讶的快速实现 例如 Hashlife 和 Golly 在这里下载Golly http golly sourceforge net http golly sourceforge net
  • HDF5 中的稀疏数组支持

    我需要以某种方式在磁盘上存储 512 3 阵列 并且我目前正在使用 HDF5 由于阵列稀疏 大量磁盘空间被浪费 HDF5 是否提供对稀疏数组的支持 一种解决方法是使用以下内容创建数据集compression option http docs
  • openmpi 忽略错误:无法识别 mca 接口

    今天早上 我升级了 gfortran 从 4 7 到 6 1 0 和 OpenMPI 从 1 10 到 2 0 1 编译器 我写了这个简单的程序 program main use mpi f08 implicit none
  • 错误:(1) 处的分配中的等级 0 和 1 不兼容

    我正在不规则网格上使用有限差分方法 这是代码的重要部分 IMPLICIT DOUBLE PRECISION A Z REAL 16 IPSI ICORR POT 20000 VA 20000 delta1 20000 delta2 2000
  • 接口不匹配 - 高阶函数

    我正在尝试在 Fortran 中 重现 高阶函数 module rk4 contains pure function f t x result fx real dimension 1 intent in x real intent in t

随机推荐

  • Angular 2 验证状态

    我使用 Angular 2 实现了一个登录页面 登录后 我从服务器获取 jsonwebtoken userId userRole userName 我将此信息存储在本地存储中 以便我可以随时访问它并在用户刷新页面时保持登录状态 AuthSe
  • FireFox:使用画布对象的图像 base64 数据不起作用

    这是我编写的用于调整图像宽高比大小的代码 它可以在 chrome 上运行 但不能在 firefox 上显示 有人知道出了什么问题吗 var image new Image image src data image load function
  • SimpleCursorAdapter 的替代品?

    我正在查看 Android 开发者网站上的记事本教程 并注意到SimpleCursorAdaptor已弃用 新的构造函数 public SimpleCursorAdapter Context context int layout Curso
  • 如何在 Google App Engine 中验证传入电子邮件地址的发件人?

    我正在尝试在 Google App Engine 的 Python SDK 中编写一个基于电子邮件的应用程序 我注意到谷歌允许您通过其 API 接收电子邮件 http code google com appengine docs pytho
  • 如何修改秤包生成的标签?

    所以我正在制作金字塔可视化 我在用着scale y continuous labels scales label number si accuracy 0 1 来生产标签 但是 我想去掉图表女性部分的负号 我认为保留 SI 后缀但删除负号的
  • 如何使用 Laravel Eloquent 创建多个Where子句查询?

    我正在使用 Laravel Eloquent 查询构建器 并且我有一个查询 我想要一个WHERE多个条件的子句 它可以工作 但并不优雅 Example results User where this 1 gt where that 1 gt
  • 在 matplotlib 中向颜色条添加标记或线条

    我有以下几行代码来生成热图 pcolormesh import matplotlib pyplot as plt import numpy as np vals np linspace np pi 2 np pi 2 101 x y np
  • ArrayBuffer 到 String、String 到 ArrayBuffer 方法

    这个问题过去已经得到了答案 但我肯定地说它仍然没有答案 一般而言 几乎都有关于 ArrayBuffers 的文档 更不用说特定应用程序了 我已经研究了好几天了 没有任何结果 本质上 我需要尝试转换从文件读取器获得的 ArrayBuffer
  • 如何用 clang 替换 llvm-ld ?

    Summary llvm ld已从LLVM 3 2 版本 http llvm org releases 3 2 docs ReleaseNotes html 我试图弄清楚如何在我的构建系统中使用 clang 请注意 我在编写时找到了自己问题
  • 无法从 gi.repository 导入 Webkit

    当我尝试导入时Webkit from gi repository 它给出了ImportError from gi repository import Webkit ERROR root Could not find any typelib
  • 如何在没有 Composer 的情况下安装 mpdf 7?

    我目前正在使用 mpdf 6 1 我想切换到 7 但我找不到安装它的方法without作曲家 是否有完整的软件包可供我在本地主机上下载 解压和测试 嗯 我花了几天时间寻找方法 终于找到了 你可以在这里下载完整的mpdf包site https
  • Xcode 中的搜索结果图标?

    我正在寻找有关 Xcode 搜索结果中显示的图标的信息 我认为有些图标的含义是显而易见的 M 方法 C 类 S 结构 Pr 协议等 但其他的则不那么明显 您在 Xcode 帮助列表中如何称呼这些图标 有描述这些图标的 传说 吗 我尝试过搜索
  • 像袋子一样压平元组

    我的数据集如下所示 A 1 2 B 2 9 我想 展平 Pig 中的元组 基本上为内部元组中找到的每个值重复每个记录 这样预期的输出是 A 1 A 2 B 2 B 9 我知道当元组 1 2 和 2 9 是袋时这是可能的 你的洞察力很好 可以
  • 如何使用apache poi检查Excel文件中的列是否隐藏

    我正在尝试使用 apache poi 解析 xls 文件 是否可以检查列是否隐藏 如何获取特定列的宽度 示例 根据帖子here https stackoverflow com questions 10529909 detecting hid
  • Android - WebView 中的 AdSense(适用于 BlackBerry Playbook - Android 运行时)

    我想在 Android 的 WebView 中显示 AdSense 广告 我知道我可以只使用 AdMob 广告 但我正在为 Playbook 进行开发 并且 Playbook 刚刚获得了 Android 虚拟运行时 因此大多数 AdMob
  • 忽略正则表达式匹配的空格

    我需要匹配 8 个或更多数字 其序列可以包含空格 例如 以下所有内容都是有效匹配 12345678 1 2345678 12 3 45678 1234 5678 12 34567 8 1 2 3 4 5 6 7 8 此刻我有 d 8 但这只
  • 同时读取多个 Emacs 信息文件

    对于阅读编程 和其他 文档来说 Emacs INFO 模式非常出色 如此出色 以至于我希望能够同时读取 Emacs Lisp 信息文件和 org mode 信息文件 而无需遍历回信息树的开头 要么我错过了一些明显的东西 要么我需要破解一些
  • 如何在 Clojure 中转换 Java 类?

    我想将 clojure Java 对象 用 let 分配 转换为另一个 Java 类类型 这可能吗 如果可以的话我该怎么做 更新 自从我发布这个问题以来 我意识到我不需要在 Clojure 中进行强制转换 因为它没有接口的概念 而且更像 R
  • 更改计划的开始日期以优化资源

    我有很多工作需要在特定的时间间隔执行 然而 我们每天完成这项工作的资源有限 因此 我正在尝试优化开始时间日期 开始时间日期只能向前移动 不能向后移动 以便每天使用的资源与我们的预算更加不相似 这些函数在下面的示例中使用 Function t
  • 用于稀疏矩阵的 Fortran 90/95 库?

    我正在寻找一个用于处理 Fortran 90 95 中稀疏矩阵的库 我只需要非常基本的运算 例如矩阵向量乘法 你建议我用什么 我搜索了一下 找到了 BLAS 的一个扩展 称为 稀疏 blas 记录在blast技术论坛规范的第 3 章中 ht