loop-unrolling

    20

    1答えて

    ++ 4.9.2と5.3.1を生成++グラム上の集約初期の配列は、このコードはコンパイルに数秒かかり、52776バイトの実行ファイルを生成します。 #include <array> #include <iostream> int main() { constexpr std::size_t size = 4096; struct S { floa

    2

    1答えて

    Apple LLVM 8.0 - Code GenerationセクションのUnroll Loops最適化設定は、Release構成の場合でも、最新のXCode、8.2.1ではデフォルトでオフになっているようです。それにはどんな理由がありますか?私はループアンローリングが最も基本的な最適化の1つだと思った。

    0

    1答えて

    私は行列の乗算のための典型的なアルゴリズムを持っています。私は適用し、ループ展開を理解しようとしていますが、kが行列の倍数でないときにk回アンロールしようとするときにアルゴリズムを実装する際に問題が発生しています。 (私は結果として非常に大きな数字を得ます)。つまり、アンロール後に残りの要素を処理する方法が得られないということです。ここで私が持っているものです。 void Mult_Matx(un

    1

    1答えて

    私はy86コードでループをアンロールしようとしていますが、テストプログラムを実行しようとすると2つの異なる値を取得しています。登録簿 xorq %rax,%rax # count = 0; andq %rdx,%rdx # len <= 0? jle Done # if so, goto Done: Loop: mrmovq (%rdi), %r10 # r

    3

    1答えて

    カーネルコンピューティング関数でループをアンロールするように強制する必要があります。これまで私はforループの前に#pragma unroll(num_times)を入れようとしましたが、コンパイラはそのステートメントを無視します。 コンパイラが自動的にループを展開していないようです - 実行時間を1)forループのコードと比較しました2)同じコードですが手で展開されたループがあります。手に展開さ

    9

    1答えて

    この質問は、部分的にはGCC 5.1 Loop unrollingへの質問です。 GCC documentationによれば 、上記の質問に私の答えで述べたように、そのようなフラグに-funroll-loopsターン「は、完全なループピーリング(反復の小さい一定数のループの即ち完全な除去)」として。したがって、このようなフラグが有効になっている場合、コンパイラは、指定されたコードの実行を最適化する

    1

    2答えて

    は、 私はこのループを書いてしまった:私はGCCがS = Sをアンロールというものであった観察何 // Heckman recursive doubling #ifdef STRENGTHREDUCTION // Haswell/gcc does not like the multiply for(s=1; s<BITSINWORD; s=s*2) { #else // STRENG

    0

    1答えて

    私はループアンローリングの概念を理解しようとしており、Wikipediaによれば、ブランチペナルティを制限/最小化していますか? 今、私はループアンローリングが何であるかを理解しています。基本的には、ループインクリメントステップを増やし、ループ内のステートメントを繰り返すことです。 しかし、私はブランチペナルティでどのように役立つでしょうか分かりません。

    0

    2答えて

    私はブールのVecを持っているとしましょう。私は元のVecでこのインデックスまで見た真の値の数に等しい値で同じサイズの新しいVecを塗りたい。私はそれを組み合わせてしたい。 私のHLSの背景で、私の頭に定住コーディングスタイル、私はこのような何かを書きたい: def foo (in : Vec[UInt]) = { val out = Vec.fill(in.size) {UInt(i