6
Fortranコンパイラは実際にどれほど優れていますか?
この質問は、「C ++ vs Fortran for HPC」への回答で最近出された2つの議論の延長です。そして、それは質問よりも少し挑戦です... Fortranを支持する最もよく耳にする引数の1つは、コンパイラーが優れていることです。ほとんどのC / Fortranコンパイラは同じバックエンドを共有するため、両方の言語で意味的に同等のプログラム用に生成されたコードは同一である必要があります。ただし、コンパイラが最適化するのはC / Fortranの方が多かれ少なかれ簡単だと主張することができます。 そこで、簡単なテストを試すことにしました。daxpy.fとdaxpy.cのコピーを入手し、gfortran / gccでコンパイルしました。 daxpy.cはdaxpy.fのf2c変換(自動生成コード、見苦しい)なので、そのコードを取り、それを少しクリーンアップしました(daxpy_cに会います)。 for ( i = 0 ; i < n ; i++ ) dy[i] += da * dx[i]; 最後に、gccのベクトル構文を使用して書き直しました(daxpy_cvecと入力します)。 #define vector(elcount, type) __attribute__((vector_size((elcount)*sizeof(type)))) type vector(2,double) va = { da , da }, *vx, *vy; vx = …
74
fortran
c
blas
benchmarking