問題タブ [ispc]
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.
programming-languages - SIMDプログラミング言語
ここ数年、私は多くのSIMDプログラミングを行っており、ほとんどの場合、コンパイラの組み込み関数(SSEプログラミング用の関数など)またはプログラミングアセンブリに依存して、本当に気の利いたものに到達しています。もの。しかし、これまで、SIMDのサポートが組み込まれているプログラミング言語を見つけることはほとんどできませんでした。
明らかに、HLSL、Cg、GLSLなど、この種のものをネイティブでサポートするシェーダー言語がありますが、少なくとも自動ベクトル化なしでSSEにコンパイルできるが、ベクトル操作のサポートが組み込まれているものを探しています。 。そのような言語は存在しますか?
これは、スポットライトを実行するCgシェーダー(の一部)の例であり、構文の観点から、これはおそらく私が探しているものに最も近いものです。
この言語で本当に必要なものは次のとおりです。
- 組み込みのスウィズル演算子
- ベクトル演算(ドット、クロス、正規化、飽和、反映など)
- カスタムデータ型(構造体)のサポート
- 動的分岐が便利です(forループ、ifステートメント)
performance - スレッドを 2 から 3 に増やしても、マンデルブロの速度アップの量は増加しません
4 コアと 4 スレッドの Intel i5 プロセッサを使用しています。現在、pthreads と ISPC (Intel SPMD Program Compiler) を使用してマンデルブロ セットのシミュレーションに取り組んでいます。タスク分割、つまりイメージの空間分解に基づいて、マンデルブロ集合イメージの計算に 2 つのスレッドを使用すると、1.9 倍の速度が見られ、3 つのスレッドを使用すると 1.65 倍の速度が見られ、4 つのスレッドを使用すると 2.4 倍の速度に飽和します。i5 は 4 スレッドなので、プログラムの並列処理を十分に行うと (pthread を使用)、4 倍の速度アップが期待できます。3 スレッドを使用すると速度が低下するのはなぜですか? 期待通りの高速化が見られない理由は?
注: gcc を使用して pthreads を API としてコンパイルしています。分割は、画像の空間分解に基づいています。ロックやセマフォは使用していません。
mandelbrot の wiki リンク http://en.wikipedia.org/wiki/Mandelbrot_set
ISPC ドキュメントの github リンク http://ispc.github.io/
質問が無関係であることがわかった場合は、適切な情報源にリダイレクトしてください。お時間をいただきありがとうございます。
c++ - ISPC - CPU スレッドの数を 1 に制限できますか?
Windows で ISPC ベースのプログラムを使用していますが、いくつかの実験を実行する必要があるため、CPU スレッドの数を 1 に制限する方法があるかどうか疑問に思っています。
ubuntu - UBUNTU 32 ビットで ISPC を実行する
32 個の Ubuntu 14.0 をインストールしていますが、ISPC (Intel SPDM プログラム コンパイラ) をインストールして使用できますか? はいの場合、どのように?そうでない場合は、なぜですか?何度も試しましたが、適切な答えが見つかりませんでした..よろしくお願いします
visual-c++ - ispc-exported 関数から構造体を値で返しますか?
エクスポートされた ispc 関数 (ispc v1.12 および msvc 2017 が使用されます) から値によって構造体を C++ 側で取得できません。プログラムはスムーズにコンパイルおよび実行されます (32 ビット、デバッグ モード)。32 ビット リリース モードでは、値がわずかに異なります。64 ビットでは、C++ 側に常にゼロがあります。そのようなスニペットの直接的な言及や例は見つかりませんでした。バンドルされたサンプルには、エクスポートされた関数を返す void またはプリミティブ型のみが含まれています。私のコード:
カーネル.ispc:
kernel.h (ispc で生成、関連部分):
main.cpp:
ispc ファイルをコンパイルするためのコマンド ライン パラメーター (32 ビット デバッグ モードの場合):
出力 (32 ビット デバッグ モードまたは 64 ビット両方のモード):
出力 (32 ビット リリース モード):
実行するたびに同じ値が得られました。私は何が欠けているか、間違っていますか?
前もって感謝します