問題タブ [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.
delphi - 16バイト境界でのsse2データアライメントの手動修正の代替手段
次の手動修正に代わるものはありますか?
このコードは、プロシージャまたは関数のいずれかに埋め込まれていることに注意してください。
assembly - さまざまなCPUのアライメントされていないMOVSDはどうなりますか?
基本的に、質問の内容は、さまざまなCPUで8バイト(または4バイト)にアラインされていないMOVSDを実行すると、どうなりますか?パフォーマンスに影響はありますか、セグメンテーション違反などはありますか?
openmp - コード sse 組み込み関数 c を openmp で並列化する
私は組み込み関数を含むコードを持っていますsse2
。このコードを並列化しようとしています。このコードには再帰型の文があります。
型演算子 +、-、* ... でのみ使用でき、ポインターなしで使用できると思うため、句の削減は使用できません。
私は何をすべきか?
どうもありがとうございました。
c - この c コードを openmp で並列化する際の問題
このコードを OpenMP で並列化するにはどうすればよいですか? 私が得た結果は正しくありません。
一時変数p1aux
、p2aux
、およびを使用しようとしましpsumaux
た。Reduction 句はポインターまたは組み込み関数では使用できないためです。しかし、私が言ったように、結果は正しくありません。
「結果が正しくありません」と言うときは、次のように言います。 の計算はarray1 + array2
、マトリックスに格納されsumsse
ます。計算はsumsse[50] [50] [50]
、多かれ少なかれコンポーネント まで正しいですが、行列の他のコンポーネントは常に0
です。
何が起こるか分かりますか?
誰かが私を助けることができれば、どうもありがとう。
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コード
delphi - この Delphi 関数を SSE2 で最適化するにはどうすればよいですか?
SSE2 アセンブリ (32 ビット) を使用してこの Delphi 関数を実装する方法のヒントが必要です。他の最適化も大歓迎です。たぶん、どのような種類の命令を使用できるかを教えてくれるので、さらに読むための出発点があります.
実際:
期待される:
sum - _m128ベクトルの4つの32ビット要素の合計
私は組み込み関数を使用して私のプログラムを最適化しています。しかし、結果を浮動小数点値と比較するために、__m128ベクトルにある4つの要素を合計したいと思います。たとえば、次の128ビットベクトルがあるとします:{a、bc、d}。a + b + c + dをeと比較するにはどうすればよいですか?eはfloatタイプです。
SSE2またはSSE3はそれを簡単に行う方法を提供しますか、それとも私を助けることができるコードスニペットがありますか?ありがとう !
c - SIMD配列は任意の配列長に追加します
ベクトル組み込み関数を使用して個人の画像処理ライブラリを書き直すことにより、SIMD機能の使用方法を学んでいます。基本的な機能の1つは、単純な「配列+=
」です。
任意の配列長の場合、明らかなSIMDコード(16で整列されていると仮定)は次のようになります。
しかし、SIMD命令ですべての追加を行うことは可能ですか?私はこれを試してみようと思いました:
余分な要素のために、しかしそれは未定義の振る舞いをもたらすでしょうか?配列のmask
境界を超えて実際にアクセスが行われないことを保証する必要があります(私は思います)。別の方法は、最初に追加の要素を実行することですが、次に配列をで整列させる必要がありますがn-n16
、これは正しくないようです。
ベクトル化されたループのような別のより最適なパターンはありますか?
sse2 - Accelerateフレームワークを介して2つの__m128タイプを追加する
__m128
Accelerateフレームワークを使用して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_ps
AccelerateフレームワークAPIを使用します。
x86 - 次のアセンブリ命令はadded-8(%rbp)、%xmm0を何をしますか?
アセンブリ命令が実際に何をするのかを理解しようとしています
これは、SSE2を搭載したx86-64マシンでの浮動小数点の追加であることを私は知っています。また、%xmm0がレジスターであることも知っています。ただし、私にはわからないのは、-8(%rbp)の意味です。マニュアルはそれについて少し混乱しています。
基本的に、問題は、-8(%rbp)は、レジスタから値を取得していることを意味しますか(おそらく、rbpの最後の8バイト)、メモリから値を取得していることを意味します(-8のオフセットでの浮動小数点値rbpに含まれるアドレス)。