从 MAT 文件(或类似的其他选项)读取到 CUDA/C

问题描述 投票:0回答:1

对于一个项目,我需要从该网站检索稀疏矩阵:https://www.cise.ufl.edu/research/sparse/matrices/list_by_id.html 其中矩阵采用 .MAT 和其他我不太熟悉的格式。我需要将这些矩阵放入 cuda/c 代码中以将这些矩阵相乘。我无法从文件中获取数据,感谢任何帮助或想法。

我从很多网站上看,都说使用 或使用 matlab 将 .mat 文件转换为文本文件。在这些试验中,稀疏性消失了,我剩下的只是非零矩阵数据。我很想知道是否有可行的方法。

c matlab file cuda sparse-matrix
1个回答
0
投票

使用

scipy.io.loadmat
,我可以从您的目录加载
.mat
文件之一。

loadmat
可以加载
*.mat
文件(“旧式”)。如果 MATLAB 中存在稀疏数据,它还可以根据该数据创建一个
scipy.sparse
矩阵。为此,必须加载 3 个存储底层稀疏坐标和数据的数据数组,然后运行
sparse.csc_matrix(...)

要在其他一些包中执行相同的操作,它需要能够加载

.mat
,并创建一个稀疏矩阵

In [23]: from scipy.io import loadmat
In [24]: data = loadmat('Downloads/494_bus.mat')

In [25]: data
Out[25]: 
{'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Sat Sep  6 04:04:21 2008',
 '__version__': '1.0',
 '__globals__': [],
 'Problem': array([[(array(['S ADMITTANCE MATRIX  494 BUS POWER SYSTEM, D.J.TYLAVSKY, JULY 1985.'],
               dtype='<U67'), <494x494 sparse matrix of type '<class 'numpy.float64'>'
            with 1666 stored elements in Compressed Sparse Column format>, array(['HB/494_bus'], dtype='<U10'), array([[2]], dtype=uint8), array(['1985'], dtype='<U4'), array(['D. Tylavsky'], dtype='<U11'), array(['I. Duff, R. Grimes, J. Lewis'], dtype='<U28'), array(['power network problem'], dtype='<U21'))]],
       dtype=[('title', 'O'), ('A', 'O'), ('name', 'O'), ('id', 'O'), ('date', 'O'), ('author', 'O'), ('ed', 'O'), ('kind', 'O')])}

指定变量“Problem”、结构化数组字段“A”以及 (1,1) 形数组的元素。

In [26]: data['Problem']['A'].item()
Out[26]: 
<494x494 sparse matrix of type '<class 'numpy.float64'>'
    with 1666 stored elements in Compressed Sparse Column format>

In [27]: data['Problem']['A'].item().A
Out[27]: 
array([[2220.874  ,    0.     ,    0.     , ...,    0.     ,    0.     ,
           0.     ],
       [   0.     ,    5.41067,    0.     , ...,    0.     ,    0.     ,
           0.     ],
       [   0.     ,    0.     ,   13.57086, ...,    0.     ,    0.     ,
           0.     ],
       ...,
       [   0.     ,    0.     ,    0.     , ...,   54.05405,    0.     ,
           0.     ],
       [   0.     ,    0.     ,    0.     , ...,    0.     ,  111.6384 ,
           0.     ],
       [   0.     ,    0.     ,    0.     , ...,    0.     ,    0.     ,
         110.9479 ]])
© www.soinside.com 2019 - 2024. All rights reserved.