BLAS(基本線形代数サブプログラム)はMatlabのような他の多くのプログラミング言語を提供していますが、行列乗算などの高速ルーチンがあります。BLASは行列連鎖最適化を組み込んでいます
ただし、複数の行列を掛け合わせると、行列を「かっこ」する最適な順序があります。 wikipedia articleから採取された:例えば
、Aは、10×30行列であるとし、Bは、30×5の行列であり、 Cは、5×60行列です。次いで、
(AB)C =(10×30×5)+(10×5×60)= 1500 + 3000 = 4500の動作
A(BC)=(30×5×60)+ (10×30×60)= 9000 + 18000 = 27000回の操作である。
この記事では、この乗算の最適な順序を解く方法について説明します。私の質問は、これらの最適化手順のどれかがBLASで利用されているということですか?そうでなければ、ブラケットを適切に使用してMatlabのようなプログラムで行列乗算の順序を明示的に定義すれば、より良い速度を得ることができますか?