Fortran BLAS daxpy没有添加任何内容,y保持不变
我遇到以下问题: 我正在尝试使用BLAS子例程,但是当使用它们时,它们似乎不起作用/覆盖解决方案,例如,如果我尝试添加两个向量Fortran BLAS daxpy没有添加任何内容,y保持不变,fortran,blas,Fortran,Blas,我遇到以下问题: 我正在尝试使用BLAS子例程,但是当使用它们时,它们似乎不起作用/覆盖解决方案,例如,如果我尝试添加两个向量a和b,并使用 program test real(kind=8), dimension(:), allocatable :: a,b integer ::n print*, "input n, a, b" read*, n allocate(a(n), b(n)) read*, a, b print*, a print*, b call daxpy(n,1,a,1,b,
a
和b
,并使用
program test
real(kind=8), dimension(:), allocatable :: a,b
integer ::n
print*, "input n, a, b"
read*, n
allocate(a(n), b(n))
read*, a, b
print*, a
print*, b
call daxpy(n,1,a,1,b,1)
print*, a
print*, b
deallocate(a, b)
end program test
然后b
对于非零,两次的结果相同
我假设子程序计算a+b
,然后将其覆盖到b
我尝试过只使用
a+b
而不调用BLAS,效果很好。我认为您需要将双精度文字(或变量)传递到“alpha”(for):
如果我们包含BLAS的一些接口文件(例如,从包含目录获得的mkl_BLAS.fi)
案例(1)给出了一个带有(稍微多一些)明确消息的错误:
test.f90:13:38:
call daxpy( n, 1, a, 1, b, 1 )
1
Error: Type mismatch in argument 'da' at (1); passed INTEGER(4) to REAL(8)
请给我们看完整的代码。见和。查看变量声明及其初始值很重要。抱歉,我认为这是不必要的,现在已更新。当您阅读输入时,是否可以显示该输入的外观?例如,我将输入单例向量为1 5 10,然后输出将重复5和10次!这似乎正在发挥作用,非常感谢
program test
implicit none
include 'mkl_blas.fi'
...
test.f90:13:38:
call daxpy( n, 1, a, 1, b, 1 )
1
Error: Type mismatch in argument 'da' at (1); passed INTEGER(4) to REAL(8)