AR# 67010

|

Vivado HLS 2016.1 : 完璧なループ例が完璧でないループ例よりもパフォーマンスが悪い

説明

完璧なループ例とそうでない例が (UG902) に記載されていて、サンプル デザインで提供されています。  

この 2 つの例を合成すると、本体なら改善が見られるはずの完璧なループ例の QOR が完璧でないものよりも低くなっています。 

これはなぜですか。

ソリューション

完璧でないループ例には内側のループの外側に条件ループがあり、理論上はパフォーマンスを低下させるはずです。完璧なループ例の場合は、パフォーマンスを向上させるため、条件文を使用してこの条件ループが内側ループの中に移動させてあります。

一般的には、パフォーマンスを向上させるためには、この方法であっています。しかし、この例では、合成ツールでロジックの機能を判断する機能が改善されています。

次の例では、内側ループを 1 つの単純な構文式に抽象化できるので、ループは不要です。


LOOP_J: for(j=0; j < 20; j++){
acc += A[i] * j;
}

上記の文は次のようになります。

acc = A[i] * ( 0 + 1 + 2 + .. 19 )

これは、A[i] がこの後者のループでは不変条件だからです。


ところが、完璧なループ例には条件文が含まれているため、この単純化が行われず、パフォーマンスが悪くなってしまいます。


(UG902) は、完璧でないループを完璧なループに変換させる利点を示した例を掲載してアップデートされる予定です。
AR# 67010
日付 04/28/2016
ステータス アクティブ
種類 一般
ツール
People Also Viewed