問題タブ [icc]
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 - インテル SSE SIMD 組み込み関数の操作
Intel SSE 組み込み関数のさまざまな算術演算について質問があります。_mm_add_ps との違いは何ですか。_mm_add_epi8/16/32? データが常に整列されていることを確認したい。
これを行うときのサンプルコードでは:
セグメンテーション違反が発生します。しかし、私がこれを行うとき:
それは正常に動作します。
データを揃えたいので、次のように配列を宣言しました。
誰かがこれを説明するのを助けることができますか.
gcc - gcc で omp_get_num_threads が常に 1 を返すようになりました (icc で動作します)
この古い質問がありますが、オンラインからの回答はありません。コードは次のとおりです。
G++ 4.4.5、linux 2.6.32-5-amd64 では、以下が生成されます。
ICC 12.1.0 に移行すると、次のようになります。
何か案は?
c - 16 バイトのメモリ アライン データを割り当てる方法
1D 配列を 16 バイトのメモリに揃える必要があるコードに SSE ベクトル化を実装しようとしています。ただし、16 バイトのメモリ アライン データを割り当てる方法をいくつか試しましたが、最終的に 4 バイトのメモリ アラインになります。
Intel icc コンパイラを使用する必要があります。これは私がテストしているサンプルコードです:
これは私が得る出力です:
これは毎回 4 バイトにアラインされています。私は memalign と posix memalign の両方を使用しました。私は Linux で作業しているので、_mm_malloc も _aligned_malloc も使用できません。_aligned_attribute を使用しようとすると、メモリ破損エラーが発生します (gcc だけに適していると思います)。
Linuxプラットフォームでicc用の16バイトのメモリ整列データを正確に生成するのを手伝ってくれる人はいますか?
c - 誤ったメモリアライメントによるSSE組み込み関数の操作中のセグメンテーション違反
SSE組み込み関数を初めて使用していますが、16バイトのメモリアライメントを確認した後でも、セグメンテーション違反が発生しています。この投稿は私の以前の質問の拡張です:
これが私の配列を宣言した方法です:
私がこれをやろうとすると:
しかし、私がこれを行うとき:
しかし、私がそうするなら:
ただし、使用を排除し、使用のみ_mm_loadu_ps
で機能させたいと考えています。_mm_load_ps
私はインテル®ICCコンパイラーを使用しています。
この問題を解決するにはどうすればよいですか?
アップデート:
次のコードで両方の操作を使用します。
SSEバージョン:
のみを使用してこれを行うより効率的な方法はあり_mm_load_ps()
ますか?
gdb - GDBはセグメンテーション違反を返します(gdb ...私のプログラムではありません)
タイトルで言うと、segfault が発生するのはデバッグ中のプログラムではなく、gdb そのものです。
だから私はブレークポイントを作成しようとしています。gdbを押すと死にます。
これはバグではなく、背景に混乱があると信じたいです。このコンピューターでは Intel コンパイラー (icc) が更新されているためです。
このマシンは、2 x Intel Xeon X5650 @ 2.67GHz (それぞれ 6 コア、合計 12、マルチスレッドで 24)、48 Gb の DRAM (NUMA)、および 2 つの GPU ( Tesla C2070 および Tesla C2090 [これは正しく取り付けられていません])。これはCent OSを実行しています:
何か案は?
c++ - 関数のオーバーロードが見つからないというエラー メッセージを解読する
私は次のコードを持っています:-
icpc12 を使用してこれをコンパイルしようとすると、次のようになります:-
ここで、エラーの最初の行は、呼び出されている関数と使用可能な関数定義の間にある種の型の不一致があることを意味していることを理解しており、エラー メッセージの他の 2 行を使用して問題を絞り込もうとしています。
2行目と3行目はどういう意味ですか?
c++ - 別のファイルc++でのテンプレートの特殊化。どのバージョンが取得します
私はこれらのファイルを持っています:-
1.h:-
1.cpp:-
main.cpp:-
今、私はこれらをコンパイルして、このようにg ++で実行します:-
そして私は得る:-
一方、私はこのようにicpcでコンパイルします:-
そして私は得る:-
C ++標準はこれについて何と言っていますか?いずれかのコンパイラが「正しい」か、もう一方が「間違っている」か、またはこの問題に関する標準があいまいで、両方が「正しい」か。
c - SSE 組み込み関数を使用した 2D ステンシルのベクトル化
整列、ロード、ストアのみを使用して 2D ステンシルをベクトル化しようとしています。このために、私は本質的に目的のアドレスを使用_mm_load_ps
し_mm_shuffle_ps
て取得したいと考えています。
私のスカラーバージョンのコードは次のとおりです。
私のベクトルは、これまでのコードのバージョンを参照してください:
誰かが j-1,j+1 .....j-4,j+4 の位置を取得するのを手伝ってくれますか?
これは動作しません:
(j-1)*dx+i
、(j+1)*dx+1
.....(j-4)*dx+i
を取得する方法を決定するためだけに助けが必要(j+4)*dx+i
です。
潜在的な解決策として、3*dx
に格納されているアドレスに変位を追加しd
て取得することを考えました(j-1)*dx+i
。3*dx
に格納されているアドレスにの変位を減算しe
て を取得し(j+1)*dx+i
ます。同様に、取得2*dx
するアドレスに追加します。しかし、SSE 組み込み関数を使用してこの戦略を実装する方法を知りません。d
j-2
助けてください。Intel icc コンパイラを使用しています。
ubuntu - 共有オブジェクト(libimf.so)をロードできないiccコンパイル済みコード
私は(ubuntuの下で)iccでcppコードをコンパイルしています:
コンパイルされますが、実行可能ファイルを実行すると、次のようになります。
libimf.soは/opt/ intel / lib/intel64にあります。前回iccを使用したとき(1年前)に同じ問題が発生したことを覚えていますが、解決策が何であったか思い出せません。
c++ - 静的配列と動的配列の違い
友人 私はいくつかのポインター プログラムをいじっていて、GCC (およびおそらく C 標準) が静的配列と動的配列を区別していることに気付きました。
動的配列には配列内の要素のアドレスのプレースホルダーがありますが、静的配列の場合、コンパイラーが要素配列の開始アドレスを格納するメモリー位置はありません。
私の混乱を示すためのサンプルプログラムがあります。
上記のプログラムの場合、予想される行で同じアドレス_static
を返します。&_static[0]
ただし、&_static
も他の 2 つと同じアドレスを返します。
したがって、同じ番号 (または任意の名前のアドレス)_static
を&_static
参照してください。予想どおり、異なる場所_dynamic
を示します。&_dynamic
では、なぜ C 標準は同じ場所を参照する必要がある_static
と述べたのでしょうか。&_static
紛らわしいですね。私が感じる理由の1つは&_static
、あまり意味がないということです。しかし、その使用法は代わりにエラーとして報告されるべきではありませんか?
誰かがこの混乱を手伝ってくれませんか?