Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 稀疏BLAS矩阵行向量积覆盖循环索引_Matrix_Fortran_Sparse Matrix_Blas - Fatal编程技术网

Matrix 稀疏BLAS矩阵行向量积覆盖循环索引

Matrix 稀疏BLAS矩阵行向量积覆盖循环索引,matrix,fortran,sparse-matrix,blas,Matrix,Fortran,Sparse Matrix,Blas,我正在使用NIST稀疏BLAS v0.5矩阵乘法例程(从下载),将一个矩阵一次乘以一个列向量。在特定点调用例程(根据矩阵的不同而变化)后,它所包含的do循环索引将被覆盖。我认为这可能与我将其作为一个上三角矩阵报告给例程有关,但不明白为什么它会对单行向量产生影响。我使用这个例程将整个(相同)矩阵相乘,没有任何问题。复制问题的伪代码(使其到达第四个[外部]循环的末尾): 和输出: At line 81 of file csr_row_mult_test.f Fortran runtime error

我正在使用NIST稀疏BLAS v0.5矩阵乘法例程(从下载),将一个矩阵一次乘以一个列向量。在特定点调用例程(根据矩阵的不同而变化)后,它所包含的do循环索引将被覆盖。我认为这可能与我将其作为一个上三角矩阵报告给例程有关,但不明白为什么它会对单行向量产生影响。我使用这个例程将整个(相同)矩阵相乘,没有任何问题。复制问题的伪代码(使其到达第四个[外部]循环的末尾):

和输出:

At line 81 of file csr_row_mult_test.f
Fortran runtime error: Array reference out of bounds for array 'out', upper bound of dimension 1 exceeded (1074790400 > 10)

Backtrace for this error:
+ in the main program
+ /lib64/libc.so.6(__libc_start_main+0xfd) [0x3c5cc1ed1d]
在RHEL6、gfortran 4.4.7上编译,带有
-fimplicit none-Wall-Wtabs-fbounds check-fbacktrace-O5


注:虽然与我之前的问题相似,但实际上它们是不同的程序,而该问题的任何解决方案都不能解决这个问题。

问题是我对对称矩形矩阵的说明。我没有试图改变它来指定一个非对称矩阵,尽管这可能已经奏效了。在我的问题中提到的稀疏BLAS实现中,有一个向量向量乘法例程
ddoti
,因此修改矩阵行以表示单个向量,并使用它有效地消除了该问题


顺便说一句,在库的后续实现中,包含了更详细的错误报告,这就是我确定错误来源的方式。

您从哪里获得的NIST sparse BLAS,什么版本?如果是您自己构建的,还应该使用这些边界检查标志来编译库。将信息添加到原始文章中。然而,在检查版本时,我四处查看了一下,发现了一个我将尝试使用的较新版本。
At line 81 of file csr_row_mult_test.f
Fortran runtime error: Array reference out of bounds for array 'out', upper bound of dimension 1 exceeded (1074790400 > 10)

Backtrace for this error:
+ in the main program
+ /lib64/libc.so.6(__libc_start_main+0xfd) [0x3c5cc1ed1d]