カーネルコンピューティング関数でループをアンロールするように強制する必要があります。これまで私はfor
ループの前に#pragma unroll(num_times)
を入れようとしましたが、コンパイラはそのステートメントを無視します。メタルカーネルでのループアンロール
コンパイラが自動的にループを展開していないようです - 実行時間を1)for
ループのコードと比較しました2)同じコードですが手で展開されたループがあります。手に展開されたバージョンは3倍速かった。
例えば:私はこれから行きたい:これまで
for (int i=0; i<3; i++) {
do_stuff();
}
:
do_stuff();
do_stuff();
do_stuff();
も、メタルC++言語でループアンローリングのようなものはありますか?はいの場合、ループをアンロールする方法をコンパイラに知らせるにはどうすればよいですか?