問題タブ [vectorization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - GCC によるバージョン管理のループ
GCC を使用した自動ベクトル化に取り組んでいます。顧客の要求により、組み込み関数または属性を使用する立場にありません。(ベクトル化をサポートするためのユーザー入力を取得できません)
ベクトル化できる配列のアラインメント情報が不明な場合、GCC は「ループ バージョン管理」のパスを呼び出します。ツリーでループのベクトル化が行われると、ループのバージョン管理が実行されます。ループがベクトル化可能であると識別され、データの位置合わせまたはデータの依存性に関する制約がそれを妨げている場合 (コンパイル時に決定できないため)、ループの 2 つのバージョンが生成されます。これらは、ループのベクトル化されたバージョンとベクトル化されていないバージョンであり、どのバージョンを実行するかを制御するためのアライメントまたは依存関係のランタイム チェックが含まれています。
私の質問は、どのようにアライメントを強制する必要があるのですか? ベクトル化可能なループが見つかった場合、アライメント情報が欠落しているため、ループの 2 つのバージョンを生成すべきではありません。
例えば。以下のコードを検討してください
ツリー ダンプ (オプション: -fdump-tree-optimized -ftree-vectorize)
「bb 3」では、ベクトル化されたコードのバージョンが生成されます。'bb 4' で、ベクトル化なしのコードが生成されます。これらは、アラインメント (ステートメント 'A') をチェックすることによって行われます。組み込み関数やその他の属性を使用せずに、ベクトル化されたコードのみを取得するにはどうすればよいですか (このランタイム アライメント チェックなし)。
matlab - 3D 行列と 2D 行列の乗算
AxBxCマトリックスX
とBxDマトリックスがあるとしY
ます。
C AxB行列のそれぞれを で乗算できるループ以外の方法はありY
ますか?
matlab - ループを使用せずに 2 つの変数の関数を生成する方法は?
関数 y(t,x) = exp(-t)*sin(x) があるとします
Matlabでは、定義します
では、各要素 y(i,j) に必要な関数 y の値が含まれるように、loop を使用せずに行列 y を定義するにはどうすればよい(t(i), x(j))
でしょうか? 以下は、forループを使用して行った方法です。
arrays - 配列要素のコピーの繰り返し: MATLAB でのランレングスのデコード
「値」配列と「カウンター」配列を使用して、配列に複数の値を挿入しようとしています。たとえば、次の場合:
いくつかの関数の出力が欲しい
することが
a(1) は b(1) 回繰り返され、a(2) は b(2) 回繰り返されます...
これを行う MATLAB の組み込み関数はありますか? できれば for ループの使用は避けたいと思います。「repmat()」と「kron()」のバリエーションを試しましたが、役に立ちませんでした。
これは基本的にRun-length encoding
です。
c++ - C++ STL データ構造のアライメント、アルゴリズムのベクトル化
おそらく属性((aligned))を使用して、STL コンテナーの配置を特定のバイトに強制する方法はありますか? ターゲット コンパイラは Microsoft Visual C++ ではありません。
特定の明示的なベクトル化 (SSE など) を持つ STL アルゴリズムの特殊なテンプレートを提供するライブラリ (ある場合)。私が興味を持っているコンパイラは、g++、Intel、および IBM XL です。
matlab - ベクトルをセル配列に変換するにはどうすればよいですか?
次のようなセル配列に変換したい列ベクトルがあります。
明示的な for ループなしでこれを行うにはどうすればよいですか? 私は試した:
と
運悪く…
また、可能であれば、マトリックスに対して同じことを行うにはどうすればよいですか。つまり、セル内の各要素を単独で使用できますか?
performance - 2つのベクトルのマッピング-ベクトル化に役立ちます
Matlabでの作業では、長さが異なるx座標の2つのベクトルがあります。例えば:
xmをxnにマップする必要があります。つまり、xnのどの座標がxmに最も近いかを見つける必要があります。したがって、これらの座標に関連付けられた値がある場合は、このマップをインデックスとして使用し、それらの値を相互に関連付けることができます。
両方のベクトルがソートされ、各ベクトルに重複はありません。
forループを使用して単純な関数を作成しました。
上記の例では、
正常に動作しますが、長いベクトル(100,000ポイント以上)では時間がかかります。
このコードをベクトル化する方法はありますか?
matlab - 2 つの配列のすべての要素を比較するにはどうすればよいですか?
約 1000 行と 1000 列の 2 つの大きな配列があります。これらの配列の各要素を比較し、対応する要素が等しい場合は別の配列に 1 を格納する必要があります。
forループでこれを行うことができますが、それには長い時間がかかります。どうすればこれをより速く行うことができますか?
matlab - MATLAB:2つの配列のすべての要素を比較する
私はMATLABに2つの行列がarr1
ありarr2
、それぞれサイズが1000*1000です。それらの要素を比較し、その比較を結果マトリックスに保存します。resarr
これも1000 * 1000であり、各要素について次のようになります。
- の要素がの要素
arr1
よりも大きい場合はarr2
、結果に値1を配置します - の要素
arr2
が大きい場合は、値2を格納します
しかし、forループでは速度が遅いため、これを実行したくありません。これどうやってするの?
編集:arr1
また、と
の比較に応じて、1000 * 1000 * 3の結果マトリックスに異なるRGB値を保存したい場合、それはarr2
遅いループなしで行うことができますか?
たとえば、大きい場合は(255,0,0)を格納し、大きい場合はarr1
(0,255,0)を格納します。arr2
matlab - MATLABでのforループのベクトル化
これが可能かどうかはわかりませんが、MATLABについての私の理解は確かに良くなる可能性があります。
プログラムにかなりのボトルネックが発生しているため、ベクトル化したいコードがいくつかあります。これは最適化ルーチンの一部であり、実行する短期平均(STA)、長期平均(LTA)、および感度(OnSense)の多くの可能な構成があります。
時間はベクトル形式で、FL2onSSはメインデータ(Nx1 double)、FL2onSSSTAはそのSTA(NxSTA double)、FL2onSSThreshはそのしきい値(NxLTAxOnSense double)です。
アイデアは、4Dになる赤いアラームマトリックスを計算することです-プログラムの残りの部分全体で使用されるalarmStatexSTAxLTAxOnSense。
私は現在、もう少し速度を上げるためにこの繰り返し関数を持っていますが、全体をベクトル化できれば明らかに良いでしょう。言い換えれば、より良い解決策があれば、機能を維持する必要はありません。
コードは十分に単純なので、これ以上説明しません。特定の行が何をしているのかを解明する必要がある場合は、私に知らせてください。