1
bl数学ライブラリは、i32lp64モード(つまり整数* 4の整数)またはilp64モード(整数* 8または8バイトの整数)で配布されます。BLASのILPモードの検出
短いFortranルーチンでこれらの2つのBLASモード(i32lp64とilp64)を区別し、segfaultクラッシュを与えないでください。
bl数学ライブラリは、i32lp64モード(つまり整数* 4の整数)またはilp64モード(整数* 8または8バイトの整数)で配布されます。BLASのILPモードの検出
短いFortranルーチンでこれらの2つのBLASモード(i32lp64とilp64)を区別し、segfaultクラッシュを与えないでください。
まあ、
あなたはILP64のBLASライブラリに対してこのプログラムをリンクする際に、我々はプログラムのクラッシュを取得します。 i32lp64の場合、クラッシュは発生しません。
これは、ilp64とi32lp64の違いです。それほどエレガントではありませんが、実行可能です。
program test
integer*8, parameter :: inc = +1_8 + 2_8**33_8
real*8 :: a(3),d
integer :: ii
a(1)=1.0d0; a(2)=1.0d0;a(3)=1.0d0
d=ddot(3,a,inc,a,inc)
print *,"inc=",inc
print *,"d=",d
end program
あなたはbigendian CPUで試しましたか? –
質問を具体的にする必要があります。どのように区別する必要がありますか? – ztik
実行時にテストするのは遅すぎるようです。デフォルトの整数サイズは、異なるコンパイラでは多すぎるものや異なるものに影響を与える可能性があります。 int32とint64のどちらを渡すべきかだけではありません。例の配列記述子は、内部で整数またはC intを使用していますか? –