对于BLAS 2,C vs Fortran

0 fortran linear-algebra supercomputers lapack

我有一个应用程序,我需要执行很多规范,点积,最重要的是矩阵向量乘法.

矩阵和向量是巨大的.矩阵维度趋于100000x100000

循环结构是:

while(condition)
/* usually iterations=dimension of matrix, so around 1 million iterations are *at least* required (if not more) */
matrix-vector multiplication
3 dot prods
2 norms
Run Code Online (Sandbox Code Playgroud)

我目前正在使用Intel Fortran和Intel MKL.用英特尔MKL重写英特尔C中的代码会有帮助吗?有没有人进行过任何形式的基准测试(尤其是DGEMV)?重写代码是一个很大的痛苦,但如果我有理由,我不会介意重写.

编辑:我错过了:矩阵尺寸是100000而不是一百万.相当严重的错误:|

是的,矩阵密集的,它需要密集.而且,它不是对称的,甚至不是正定的.我的算法是QMR的修改版本.

Ste*_*non 9

C或Fortran中的性能完全相同,因为支持库调用的实际实现是相同的,并且代码中的所有时间基本上都花在这些库调用中.

  • 然后,您应该提供分析信息并征求相关建议.原来的问题只是荒谬的; 如何从C调用库例程比从FORTRAN调用相同的库例程更快,特别是因为例程可能(至少在某些时候)主要用FORTRAN编写?C"如何提供捷径"呢? (9认同)