我在哪里可以找到BLAS示例代码(在Fortran中)?

时间:2011-01-09 05:47:29

标签: vector matrix fortran linear-algebra blas

我一直在寻找关于blas的体面文档,我发现了大约315页的密集素材,ctrl-f无效。它提供了有关例程所采用的输入参数的所有信息,但是有很多输入参数,我可以使用一些示例代码。我无法找到任何。我知道必须有一些或没有人能够使用这些库!

具体来说,我在mac osx 10.5.8上使用通过macports安装的ATLAS,我使用gcc 4.4中的gfortran(也通过macports安装)。我在Fortran 90中编码。我对Fortran还很陌生,但我在mathematica,matlab,perl和shell脚本方面有相当多的经验。

我希望能够通过密集对称(但不是埃尔米特)复杂矩阵来初始化和乘以密集复数向量。矩阵的元素是通过索引的数学函数定义的 - 称之为f(i,j)。

有人可以提供一些代码或某些代码的链接吗?

1 个答案:

答案 0 :(得分:4)

http://www.netlib.org/blas/开始,您会看到您正在寻找的例程是zgemv,这里是http://www.netlib.org/blas/zgemv.f ---它是一个复杂的('z')矩阵('m')向量(' v')相乘。

如果你的向量只是普通数组,即它们在内存中是连续的,那么INCX和INCY参数只是1.就LDA参数而言,只要保持它等于矩阵大小。其他参数很简单。例如:

  implicit none

  integer, parameter :: N=2

  complex*16, parameter :: imag1 = cmplx(0.d0, 1.d0)
  complex*16 :: a(N,N), x(N), y(N)

  complex*16 :: alpha, beta

  a(:,:)=imag1;
  x(:)=1.d0
  y(:)=0.d0

  alpha=1.d0; beta=0.d0

  call zgemv('N',N,N,alpha,a,N,x,1,beta,y,1)


  print*, y


  end      

通常,每次我需要BLAS或LAPACK例程时,我都会在netlib上查找参数。

编辑:上面的代码没有使用矩阵是对称的这一事实。如果您需要,请查找zsymv例程。 (感谢@MRocklin。)