EDLを使用してMicroblaze Cプログラミングでループをアンロールすることはできますか?ループアンロール - Microblaze Cプログラミング
パフォーマンスがさらに必要なので、これが必要です。伝統的に私のCコードは連続して実行されるので、いくつかのコンパイラ指令を使用してループをアンロールすると、アプリケーションが高速化されます。
(例:openMPを使用しています)。
#pragma Unroll
for (i = 0; i < 100; i++) {
a[i] = fetch_data(i);
}
これはMicroblazeでも可能ですか?はいの場合は、同じにすべての例ですか?
ありがとうございました。だから、この方法(手動ループのアンローリング)は、forループ内の条件文で発生する計算を節約できますか?それはいいです。しかし、問題はMBは私のアプリケーションではマルチポートメモリコントローラにアクセスするので、それぞれが1つのポートにアクセスする複数のスレッドが必要です。これを解決するにはどうしたらいいですか? – gpuguy
nvuonoさんの返信(スレッディングについては言及していませんが)は、 "Duff's Device"(http://en.wikipedia.org/wiki/Duff's_device)を紹介する絶好の機会です。反復の総数がループを手作業でアンロールした回数にきれいに分割しない場合でも、反復の正しい数を取得するのは賢明な(濫用の場合)方法です。 – Graeme