問題タブ [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.

0 投票する
2 に答える
417 参照

delphi - 16バイト境界でのsse2データアライメントの手動修正の代替手段

次の手動修正に代わるものはありますか?

このコードは、プロシージャまたは関数のいずれかに埋め込まれていることに注意してください。

0 投票する
1 に答える
708 参照

assembly - さまざまなCPUのアライメントされていないMOVSDはどうなりますか?

基本的に、質問の内容は、さまざまなCPUで8バイト(または4バイト)にアラインされていないMOVSDを実行すると、どうなりますか?パフォーマンスに影響はありますか、セグメンテーション違反などはありますか?

0 投票する
1 に答える
409 参照

openmp - コード sse 組み込み関数 c を openmp で並列化する

私は組み込み関数を含むコードを持っていますsse2。このコードを並列化しようとしています。このコードには再帰型の文があります。

型演算子 +、-、* ... でのみ使用でき、ポインターなしで使用できると思うため、句の削減は使用できません。

私は何をすべきか?

どうもありがとうございました。

0 投票する
1 に答える
197 参照

c - この c コードを openmp で並列化する際の問題

このコードを OpenMP で並列化するにはどうすればよいですか? 私が得た結果は正しくありません。

一時変数p1auxp2aux、およびを使用しようとしましpsumauxた。Reduction 句はポインターまたは組み込み関数では使用できないためです。しかし、私が言ったように、結果は正しくありません。

「結果が正しくありません」と言うときは、次のように言います。 の計算はarray1 + array2、マトリックスに格納されsumsseます。計算はsumsse[50] [50] [50]、多かれ少なかれコンポーネント まで正しいですが、行列の他のコンポーネントは常に0です。

何が起こるか分かりますか?

誰かが私を助けることができれば、どうもありがとう。

0 投票する
1 に答える
2180 参照

c - sse2フロート乗算

FANN Lib(Cで書かれたニューロンネットワーク)からSSE2にコードを移植しようとしました。しかし、SSE2のパフォーマンスは通常のコードよりも悪くなりました。私のSSE2実装の実行では、1回の実行に5.20分なしで5.50分かかります。

SSE2は通常の実行よりもどのように遅くなる可能性がありますか?それは?のせい_mm_set_psでしょうか?Apple LLVMコンパイラ(XCode 4)を使用してコードをコンパイルします(すべてのSSE拡張フラグがオンで、最適化レベルはです-Os)。

SSE2なしのコード

SSE2コード

0 投票する
1 に答える
1636 参照

delphi - この Delphi 関数を SSE2 で最適化するにはどうすればよいですか?

SSE2 アセンブリ (32 ビット) を使用してこの Delphi 関数を実装する方法のヒントが必要です。他の最適化も大歓迎です。たぶん、どのような種類の命令を使用できるかを教えてくれるので、さらに読むための出発点があります.

実際:

期待される:

0 投票する
1 に答える
1125 参照

sum - _m128ベクトルの4つの32ビット要素の合計

私は組み込み関数を使用して私のプログラムを最適化しています。しかし、結果を浮動小数点値と比較するために、__m128ベクトルにある4つの要素を合計したいと思います。たとえば、次の128ビットベクトルがあるとします:{a、bc、d}。a + b + c + dをeと比較するにはどうすればよいですか?eはfloatタイプです。

SSE2またはSSE3はそれを簡単に行う方法を提供しますか、それとも私を助けることができるコードスニペットがありますか?ありがとう !

0 投票する
1 に答える
1863 参照

c - SIMD配列は任意の配列長に追加します

ベクトル組み込み関数を使用して個人の画像処理ライブラリを書き直すことにより、SIMD機能の使用方法を学んでいます。基本的な機能の1つは、単純な「配列+=」です。

任意の配列長の場合、明らかなSIMDコード(16で整列されていると仮定)は次のようになります。

しかし、SIMD命令ですべての追加を行うことは可能ですか?私はこれを試してみようと思いました:

余分な要素のために、しかしそれは未定義の振る舞いをもたらすでしょうか?配列のmask境界を超えて実際にアクセスが行われないことを保証する必要があります(私は思います)。別の方法は、最初に追加の要素を実行することですが、次に配列をで整列させる必要がありますがn-n16、これは正しくないようです。

ベクトル化されたループのような別のより最適なパターンはありますか?

0 投票する
2 に答える
517 参照

sse2 - Accelerateフレームワークを介して2つの__m128タイプを追加する


__m128Accelerateフレームワークを使用して2つの(float)変数を add / mul/subする必要があります。しかし、それを行うための機能が見つかりません。すべてのAccelerateフレームワーク関数は、型ではint__vector__なくfloat__vector__型を取ります。除算する関数を見つけまし'vdivf'たが、add / mul/subも必要です。Accelerateフレームワークを使用して

2つの(フロート)変数を追加/マルチ/サブする方法を教えてもらえますか?__m128このようなもの:、、_mm_add_psただし_mm_sub_ps_mm_mul_psAccelerateフレームワークAPIを使用します。

0 投票する
1 に答える
6925 参照

x86 - 次のアセンブリ命令はadded-8(%rbp)、%xmm0を何をしますか?

アセンブリ命令が実際に何をするのかを理解しようとしています

これは、SSE2を搭載したx86-64マシンでの浮動小数点の追加であることを私は知っています。また、%xmm0がレジスターであることも知っています。ただし、私にはわからないのは、-8(%rbp)の意味です。マニュアルはそれについて少し混乱しています。

基本的に、問題は、-8(%rbp)は、レジスタから値を取得していることを意味しますか(おそらく、rbpの最後の8バイト)、メモリから値を取得していることを意味します(-8のオフセットでの浮動小数点値rbpに含まれるアドレス)。