問題タブ [sse2]
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++ - GNUC++用のSSESSE2およびSSE3
GNU C ++のSSE、SSE2、SSE3を理解するための簡単なチュートリアルはありますか?SSEでコードの最適化をどのように行うことができますか?
c++ - スクリプトの上位の関数からスクリプトの下位の関数を呼び出す
私はコンピューターに私のためにいくつかの仕事をさせる方法を考え出そうとしています。SIMD(SSE2&SSE3)を使用して外積を計算していますが、もっと速くなるかどうか疑問に思いました。現在、私は次のものを持っています:
ご覧のとおり、そこには4つのがあり、それらをとの組み合わせに置き換える_mm_shuffle_ps
ことができるかどうか疑問に思いました。_mm_unpackhi_ps
_mm_unpacklo_ps
a2 a3 b2 b3
a0 a1 b0 b1
紙ではわかりませんでしたが、解決策を考えました。コンピューターに必要な手順を総当たり攻撃させたらどうなるでしょうか。さまざまなオプションを再帰的にステップスルーして、正しい答えが得られるものを確認してください。
私はそれを乗算で動作させました、それは私がそれを返したいときにこれを返します(3、12、27、0):
私がそう言うなら、とてもいいです。
しかし、除算を実装したいときに、問題に遭遇しました。Multiplyは、multiplyを呼び出すだけでなく、divideも呼び出す必要があります。さて、乗算の上に除算を置きます。ただし、divideは、divideを呼び出すだけでなく、スクリプトの下位にあるmultiplyも呼び出す必要があるため、まだ存在していません。
Visual C ++の空のコンソールアプリケーションから始めて、すべてをQuadTests.cppに配置しました。
これらの2つの関数が相互に呼び出すことができることを確認するにはどうすればよいですか?
前もって感謝します。
c++ - クラスのインスタンスに構造体へのポインタを与える
ベクトルクラスでSSE機能を取得しようとしています(これまでに3回書き直しました。:\)。次のようにしています。
できます!やあ!しかし、それは私の以前の試みよりも遅いです。ブー。
ボトルネックは、構造体へのポインターを取得するために使用しているmallocであると判断しました。
クラスでSSEを使用する際の主な問題の1つは、SSEを機能させるためにメモリ内で整列させる必要があることです。つまり、new演算子とdelete演算子がオーバーロードされ、次のようなコードになります。
デフォルトのコンストラクターを使用できなくなりnew
、疫病のように回避する必要があります。
私の新しいアプローチは、基本的に、クラスの外部にデータを配置して、クラスを整列させる必要がないようにすることです。
私の質問は、構造体の(メモリに整列された)インスタンスへのポインタを取得するためのより良い方法がありますか、それとも私のアプローチは本当にばかげていて、はるかにクリーンな方法がありますか?
c++ - SSE2 コンパイラ エラー
SSE2 に侵入しようとしていて、次のサンプル プログラムを試しました。
次の警告とエラーが表示されます。
警告 C4405: 'xmm0': 識別子は予約語です
エラー C2400: 'opcode' のインライン アセンブラー構文エラー。「xmm0」が見つかりました
考えられる原因を探してみましたが、問題を共有しているほとんどの人は Visual C++ 6.0 を使用していましたが、私は Visual C++ 8.0 を使用していました。
助言がありますか?
c++ - SSE2-16バイトにアラインされたメモリの動的割り当て
編集:
これは私が以前に経験した本当のバグであり、 MichaelBurrが提案したように_mm_malloc
ステートメントを変更することによって以下に再現しました。
SO.exeの0x00415116で未処理の例外:0xC0000005:アクセス違反の読み取り場所0xffffffff。
ラインでlabel: movdqa xmm0, xmmword ptr [t1+eax]
私は動的に割り当てようとしていますt1
、t2
そしてこのチュートリアルによれば、私は以下を使用しました_mm_malloc
:
c++ - 128 ビット xmm レジスターの上位 64 ビットと下位 64 ビットを加算します。
パックされたクワッドワード整数が 2 つxmm0
あり、それらを加算して結果をメモリ ロケーションに格納する必要があります。各整数の値が2^15未満であることを保証できます。現在、私は次のことを行っています。
これを行うより良い方法はありますか?
c++ - SSE2 - 「システムは指定されたプログラムを実行できません」
最近、インライン SSE2 命令を使用する Visual C++ コンソール アプリケーションを開発しました。私のコンピューターでは問題なく動作しますが、別のコンピューターで試してみると、次のエラーが返されます。
システムは指定されたプログラムを実行できません
プログラムは、SSE2 コードを導入する前に他のコンピューターで動作していたことに注意してください。
助言がありますか?
PS: 他のコンピューターでコードをコンパイルして実行すると機能します。私がネットから探し出したものからのマニフェストと関係があると思います。
c++ - SSE2 のプロセッサ サポートを確認しますか?
ソフトウェアをインストールする前に、SSE2 のプロセッサ サポートを確認する必要があります。私が理解していることから、私はこれを思いつきました:
これは機能しますか?私のCPUはそれをサポートしているので、テスト方法がよくわからないので、関数呼び出しから false になりません。
SSE2 のプロセッサ サポートを確認するにはどうすればよいですか?