2017-12-30 20 views
0

私はAppleのMetal 2フレームワークで作業しています。公式Metal Shading Language Documentation、セクション2.3。メタルシェーディング言語での行列乗算

メタルは、システムの数学ライブラリによって実装行列データ型のサブセットをサポートしていますと述べて行列データタイプ。サポートされている行列タイプ名は、 halfnxmとfloatnxmです。ここで、nとmは列と行の数です。 nとmは2、3、または4でなければなりません。

したがって、私がシェーダ関数で定義できる最大の行列は4x4行列ですか?

大きな行列はどうですか?私は自分でそれを実装する必要がありますか?

答えて

1

これらの小さなマトリックスは、主に2Dおよび3Dグラフィックス作業を行うためのものです。

大規模な行列を掛けたい場合は、Metal Performance Shadersフレームワークのクラスと行列とベクトルセクションを参照してください。

大きな乗算カーネルの一部として行列乗算を行いたい場合は、それを自分で実装する必要があります。 (これにはいくつかのメタルサンプルコードがあります)

+0

ありがとう!行列の乗算は実際には、より大きな計算カーネルの一部になるでしょう。上記のサンプルコードを教えてください。 – 1awuesterose

+0

[ここに1つのサンプルがあります](https://developer.apple.com/library/content/samplecode/MPSMatrixMultiplicationSample/Introduction/Intro.html)。 – warrenm

+0

私が気にしていたサンプルコードは、@warrenmがリンクしているMPSの例に置き換えられているようです。恐らく古くなったかもしれませんが、残念です。 –