問題タブ [simd]
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.
c - SIMDを使用した最適化の限界は何ですか?
Cell ProcessorのSPEでSIMD拡張命令を使用して、多くの物理計算を行うCコードを最適化する必要があります。各ベクトル演算子は、4つのフロートを同時に処理できます。したがって、理想的には、最も楽観的なケースでは4倍のスピードアップが期待できます。
ベクトル演算子を使用すると、より高速化できると思いますか?
ありがとう
programming-languages - Rationale for no primitive SIMD data types
(Sorry if this sounds like a rant, but it's a real question and I'd appreciate real answers)
I understand that since C is so old, it might have not made sense to add it back then(MMX didn't even exist back then). But since then there was C99, and still there are no standard for SIMD variables(as far as I know).
By "SIMD variables", I mean something like:
I also understand that this can be done with structs and (in theory) the compiler should optimize it to use SIMD when appropriate anyway.
But I recently saw a post from Qt Labs which includes an example with types like "__m128i"(which look clearly non-standard), instead of relying on optimizations. Considering Qt is advertising this as greatly improving Qt's speed, I'm guessing compiler optimizations are being insufficient, at least for some programmers.
If it was just C, I'd think C was being stupid. But, as far as I know, newer languages such as C++, Java and C# don't include these either. C# has Mono.SIMD but it's not a primitive type(and since C# has a "decimal" keyword, I don't think they were trying to save types).
So here's what I'm noticing: Languages with vector primitive types seem to be the exception and not the rule. Because vector primitive types look so obvious, I'm guessing there's got to be some decent reasons NOT to include these types.
Does anyone here know why these types are so frequently excluded? Some links to rationales against adding them?
sse - SIMDプログラミング
Core2Duoプロセッサー(コンパイラーgcc 4.4.1)で利用可能なSSE拡張命令を使用しています。それぞれ128ビット長の16個のレジスタが使用可能であることがわかります。これで、4つの整数値を1つのレジスタに、4つを別のレジスタに収容でき、組み込み関数を使用してそれらを1つの命令に追加できます。明らかな利点は、この方法では4つではなく1つの命令しか必要としないことです。
私の質問は「SIMDはこれで全部ですか?」です。a1、a2、a3、a4、a5、a6、a7、a8とb1、b2、b3、b4、b5、b6、b7、b8があるとします。A1、A2をベクトルレジスタとします。ここで、A1 <<<(a1、a2、a3、a4)およびB1 <<<(b1、b2、b3、b4)、およびadd(A1、B1)がベクトル加算を実行します。
A2 <<<(a5、a6、a7、a8)、B2 <<<(b5、b6、b7、b8)とします。add(A1、B1)とadd(A2、B2)を同時に実行できるadd命令はありますか。
core2duoで使用できるベクトル関数単位の数と、これらの情報はどこで入手できますか?
これらに関連するその他の情報源は高く評価されています。
arm - NEON 比較 (以上) 命令の使用方法
一般的な NEON 比較命令の使用方法
これは、私が使用したい、より大きいまたは等しい命令ですか?
現在、私は、
NEON では、x を同じように使用したいと思いますが、今回の x はベクトルです。
c - GCC での除算の SIMD (SSE) 命令
可能であれば、SSE 命令を使用して次のスニペットを最適化したい:
これはまったく可能ですか?
ipad - iPad A4プロセッサで整数SIMD操作を実行するにはどうすればよいですか?
スピードの必要性を感じます。ダブルforループは、iPadアプリのパフォーマンスを低下させています。SIMDが必要です。iPad A4プロセッサで整数SIMD操作を実行するにはどうすればよいですか?
ありがとう、
ダグ
c - 累乗の SIMD コード
SIMD を使用して高速累乗結果を計算しています。タイミングを非simdコードと比較します。累乗は、二乗および乗算アルゴリズムを使用して実装されます。
コードの通常の (非 simd) バージョン:
SIMD バージョン:
問題は、正しく計算されているにもかかわらず、simd バージョンが非 simd バージョンよりも時間がかかっていることです。
理由のデバッグを手伝ってください。SIMD コーディングに関する提案も大歓迎です。
よろしくお願いします、Anup。
c - SIMD バージョンチェック
Intel Core2Duo E4500 プロセッサを使用しています。SSE3、SSSE3 機能を備えているはずです。しかし、プログラムでそれらを使用しようとすると、「SSE3 instruction set not enabled」というエラーが表示されます
何か案は?
c++ - c++ コンパイラーが SIMD 用に簡単に最適化できるコードを作成する方法は?
私は Visual Studio 2008 で作業しており、プロジェクト設定に、None、SSE、または SSE2 に設定できる「拡張命令セットをアクティブにする」オプションが表示されます。
では、コンパイラは SIMD 命令を利用するために命令をまとめてバッチ処理しようとしますか?
コンパイラがこれらの拡張機能を使用して効率的なアセンブラを作成できるように、コードを最適化する方法について従うことができる規則はありますか?
たとえば、現在私はレイトレーサーに取り組んでいます。シェーダーは入力を受け取り、次のように入力から出力カラーを計算します。
たとえば、1 回の命令呼び出しで 4 つの異なるピクセルをシェーディングするようにシェーダーコードを記述すると有益でしょうか? このようなもの:
一度に複数のデータユニットを処理します。これは、コンパイラに SSE 命令を使用させるのに役立ちますか?
ありがとう!
algorithm - SIMD 最適化パズル
SIMD(SSE2など)を使用して次の関数を最適化したい:
これは、必要な命令がそこにないことを除いて、非常にベクトル化可能なタスクのように思えます...
N は非常に大きく (10^12 から 10^18)、size~sqrt(N) であると仮定できます。また、p は -1、0、および 1 の値しかとれないと仮定することもできます。したがって、実際の乗算は必要ありません。(N/i)*p[i] は、何らかの方法で N/i を計算できれば、4 つの命令 (pcmpgt、pxor、psub、pand) で実行できます。