【问题标题】:Automated sparse matricies in FortranFortran 中的自动稀疏矩阵
【发布时间】:2013-05-05 19:35:48
【问题描述】:

我知道英特尔 Fortran 具有用于处理稀疏矩阵的函数和子例程的库,但我想知道是否还有某种数据类型或自动化方法可以首先创建稀疏矩阵。

背景:我有一个程序使用一些 3 维和 4 维数组,这些数组在前 2 维中可能非常大(每个维中大约 10k 到 100k 个元素,可能更多)。在前 2 个维度中,每个数组大多(95% 左右)填充了零。为了使程序对具有“正常”可用 RAM 量的机器友好,我想转换为稀疏矩阵。在整个代码中处理和更新当前常规数组的方式非常依赖于代码应用程序,因此我正在寻找一种无需对代码进行重大修改即可转换为稀疏矩阵存储的方法。基本上,我很懒惰,我不想修改整个内存管理实现或编写一个全新的模块来存放和管理我的数组。 Fortran 是否有一个库或其他东西可以实现数据类型或其他东西,这样我就可以使用稀疏矩阵存储而无需重新设计每个数组以及如何处理它?谢谢您的帮助。干杯。

【问题讨论】:

    标签: arrays memory-management fortran sparse-matrix sparse-array


    【解决方案1】:

    在 Fortran 中有许多不同的稀疏格式和许多不同的库用于处理稀疏矩阵(例如 sparskitpetsc、...)但是,它们都不能提供紧凑的数组处理形式,可在Fortran 用于固有密集数组(尤其是子数组表示法)。因此,当您想将代码更改为使用稀疏矩阵时,您必须在多个地方修改代码。

    【讨论】:

    • 我很害怕这个,但我并不感到惊讶。看起来这将是一个更大的项目和学习经验!感谢您的意见。
    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 2012-01-10
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多