用語集
再生性
同じ確率分布を持つ2つの独立な確率変数の和は同じ確率分布を持つこと。再生性を持つ確率分布として、二項分布、ポアソン分布、正規分布などがある。(これ以上の深入りはしない)
GMP(GNU MP)
(GMP) ライブラリは、整数、有理数、浮動小数点数に関する任意精度の演算を行うための、C で書かれた高移植性ライブラリ
MPFR
(GNU Multiple Precision Floating-Point Reliably:高精度浮動小数点) は、GMP に基いた、任意精度浮動小数点(多倍長浮動小数点)演算ライブラリ。
C99 に含まれるすべての数学関数を多倍長でサポートしている。
QD
D型 52bitの有効精度を保持(Double型)
DD型 106bitの有効精度を保持
QD型 212bitの有効精度を保持
AVX2 256bitベクトル
AVX-512F 512bitベクトル
SIMD命令
有益な記事
https://www.isus.jp/products/c-compilers/compiler_part1/
コンパイラによる計算時間の違い
エリアシングの問題
インラインアセンブラ
主にC言語やC++などで書かれたプログラムの中にアセンブリ言語によるプログラムを埋め込むことができるようにする、コンパイラの機能である
pythonでもできる?
LAPACK/BLAS
ANSI C
標準Cともいう。C言語の標準の総称。
シリアル計算
並列しない計算。並列計算の逆
AMXはSIMD命令セットの総称。
AMXのSIMD命令セットを用いる為に、各レジスタを2Dタイルとして捉えている?
命令によってどこまでをひとくくりのレジスタにするか決めている?
”””重要文”””
XMM と呼ばれる 128 ビットレジスターには、複数のデータを格納できます。単精度浮動小数点データであれば、4 つのデータを格納することができます。データ要素を複数パックして一回の演算で処理することをベクトル演算、128 ビットレジスターの1つのデータ要素しか利用しない場合をスカラー演算と呼びます。当然ベクトル演算を行ったほうが効率良いわけです。
命令をして次の命令が行われるまではクロックサイクル時間で決まっている。
つまり、命令数は少ない方がいい。
ベクトル演算は一度の命令で、スカラー演算より多くの演算を行える。
ベクトル演算を増やした方が得。
コンパイラ(高級プログラミング言語からアゼンブリ言語への変換)
intel for pytorchの関数はコンパイラがAMXの命令セットに変換してくれる。
そのようにコンパイラを設計した?
tensolfrow、pytorchからしかAMXを使えないのは、コンパイラを設計する際にtensolfrow,pytorchの関数のみを
C言語+AMXの命令セットで記述
最適化とは、プログラムをアゼンブリ言語に変換した際に、アゼンブリ言語の命令数を小さくしていく事
最適化の方法としては、
・AMX命令を多く使う。
・データを2Dタイルの大きさに事前に加工しておく。
・インラインアゼンブラを書く
・組み込み関数を使う。
組み込み関数
・・組み込み関数とは、コンパイラーが提供する SIMD 命令に対応した関数形式の命令群