0

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

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

4

1 回答 1

0

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

于 2013-05-12T08:42:36.190 回答