Octave 八度音阶+BLAS+ACML和很多混乱
我试着编译八度音阶,得到了关于gfortran与BLAS不兼容的流行信息。我检查了config.log文件并提取了失败的测试程序,以单独测试它。事实上,测试失败了。现在,这让我感到困惑——至少对我来说: 底部添加的测试程序不是在configure with The compiler选项中编译的,该选项会强制gfortran进入64位默认模式,并且内部使用的整数声明为简单整数而不是*8。因此,如果必须使用64位整数模式,那么如果我将gfortran的版本设为默认64位整数,我会读到所有fortrans都默认使用整数*4 我用64位整数测试了gfortran,声明了一个整数*8,并打印了该整数的巨大部分——它确实打印了64位的巨大数字,所以,至少“手动”地”,gfortran看起来还可以 尝试使用-enable-64-使用blas=acml\u mp-使用lapack=acml\u mp编译倍频程,并获得: BLAS似乎不支持64位整数 libgfortran似乎与ldd检查的blas无关。他们为什么要打架?我必须重新编译libgfortran吗 我更想知道为什么会发生这种情况,而不仅仅是一个简单的食谱,尽管这也很受欢迎,所以指向一些适用文档的指针会很有帮助 这是测试程序-我无法让gfortran同意libblas指向libacml的观点:Octave 八度音阶+BLAS+ACML和很多混乱,octave,gfortran,blas,Octave,Gfortran,Blas,我试着编译八度音阶,得到了关于gfortran与BLAS不兼容的流行信息。我检查了config.log文件并提取了失败的测试程序,以单独测试它。事实上,测试失败了。现在,这让我感到困惑——至少对我来说: 底部添加的测试程序不是在configure with The compiler选项中编译的,该选项会强制gfortran进入64位默认模式,并且内部使用的整数声明为简单整数而不是*8。因此,如果必须使用64位整数模式,那么如果我将gfortran的版本设为默认64位整数,我会读到所有fortra
program main
c Compile with:
c fortran -o testblas -ff2c -ff2c testblas.f -lblas -lm -ffixed-line-length-none
integer n,nn(3)
real s,a(1),b(1),sdot
b(1) = 1.0
a(1) = 1.0
print *, "Generate -2**32 + 1, if possible, to check if gfortran is 32/64 bit"
print *, "If N >= 0, we are on 32 bits"
n = 2
n = -4 ** (n ** 30)
n = n + 1
print*, "N=", n
if (n >= 0) goto 1
print *, "This means we are on 64-bit integers. Check whether the BLAS is, too."
s = sdot(n,a,1,b,1)
print *, "S should be <> 0: "
if (s .ne. 0.0) stop 1
1 continue
print*, "We may be on 32-bit integers, and the BLAS on 64 bits. This is almost bound"
print*, "to have already failed, but just in case, we'll check."
nn(1) = -1
nn(2) = 1
nn(3) = -1
s = sdot(nn(2),a,1,b,1)
print*, "BLAS, if 32-bit, will make s 1, and all is ok: s=", s
if (s .ne. 1.0) stop 1
end
Generate -2**32 + 1, if possible, to check if gfortran is 32/64 bit
If N >= 0, we are on 32 bits
N= 1
We may be on 32-bit integers, and the BLAS on 64 bits. This is almost bound
to have already failed, but just in case, we'll check.
BLAS, if 32-bit, will make s 1, and all is ok: s= 0.00000000
STOP 1