問題タブ [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 組み込みまで。しかし、どういうわけか、ステンシル ベースのアプリケーションで高速化を実現できません。
以下は、SSE 組み込み関数を使用してベクトル化した現在のコードのスニペットです。-vec-report3 を使用してコンパイル (Intel icc) すると、常に次のメッセージが表示されます: remark
: loop was not vectorized: statement cannot be vectorized.
私は何か重要なものを見逃していますか?ベクトル化できない理由がメッセージで詳しく説明されていないため、ボトルネックを特定するのが難しいと感じています。
更新: 提案を慎重に検討した後、次のようにコードを微調整しました。ベクトル依存の実際の原因となっているステートメントを特定するには、さらに分解するのが最善だと考えました。
上記のコードをコンパイル (icc) すると#pragma ivdep
、次のメッセージが表示されます。
を使用してコンパイル (icc) すると#pragma ivdep
、次のメッセージが表示されます。
ライン 196 に依存性が示唆されているのはなぜですか? 提案されたベクトル依存をどのように排除できますか?
gcc - ICC ライブラリ検索オプション
GNU コンパイラは-llib
オプションを使用してライブラリとリンクしますが、似たようなものはありicpc
ますか?
(検索パスにライブラリを追加するために -L オプションを既に指定しています)。
c - DLLのプロファイルガイド付き最適化(インテル®コンパイラー)
C#から実行しているC.dllファイルがあります。最近IntelCコンパイラでコンパイルしましたが、Visual Studioコンパイラよりも25%高速化されています(MinGWよりもほぼ50%高速化されています)。
次に、プロファイルガイド付き最適化を試してみたいと思います。/ prof-genでコンパイルしてから実行可能ファイルを実行すると、動的プロファイル情報を含むファイルが作成されることを理解しています。
問題は、Cプログラムでテストの準備ができていないことです(そして、それらを書くのは面倒です)。
私の質問は次のとおり
です。.dllにコンパイルしてc#レベルから実行し、/ prof-useを使用してPGOに使用することで、.dynファイルを作成することはどういうわけか可能ですか?
dllでのPGOの使用に関するその他の情報は大歓迎です:)
c - PGO は静的最適化より遅い (Intel コンパイラ)
I-32A アーキテクチャー用のインテル C コンパイラーを使用しています。次のオプションを使用して C プログラムをコンパイルすると、次のようになります。
テスト実行には 3.3 秒かかります。今、私は PGO を使用しようとしたので、次のようにコンパイルしました:
次に、サンプル入力を使用して実行可能ファイルを 2 ~ 3 回実行し、次のコマンドで再度コンパイルします。
収集された情報が考慮されることを願っています。実際、.dyn ファイルを使用していることがわかりますが、結果の実行可能ファイルは Qprof を使用しない場合よりも遅くなり (3.85 秒)、これは実行が実行されたのとまったく同じデータ上にあります (PGO に最適なはずです)。.dyn 出力を混乱させる可能性があると考えて、openmp スレッドを 1 に設定しようとしましたが、結果は同じです。単純なコンパイルよりも遅いです。
私の質問は次のとおりです。それは理論的にも可能ですか、それともコンパイラオプションで PGO プロセスを台無しにしていますか?
exception - cudaGetExportTable (CUDA ランタイム ライブラリ) で例外 'cudaError_enum' がスローされましたか?
DDT を使用して MPI ベースの CUDA プログラムをデバッグしています。CUDA ランタイム ライブラリ( libcudart) が (ドキュメント化されていない) function で例外をスローすると、私のコードは中止されcudaGetExportTable
ます。cudaMalloc
cudaThreadSynchronize
cudaDeviceSynchronize
libcudart が例外をスローするのはなぜですか (私は C++ API ではなく C API を使用しています)、コード内でcudaError_t
戻り値または を使用して例外を検出できますCHECKCUDAERROR
か?
(私は CUDA 4.2 SDK for Linux を使用しています。)
出力:
私のコード:
その他のコード フラグメント:
部分的なバックトレース:
メモリ デバッグ エラー:
この行は、上記の cudaMalloc コード フラグメントです。また:
また、ノードあたり 4 gpus ではなく、ノードあたり 3 コア/gpus で実行している場合、dmalloc は同様のメモリ エラーを検出しますが、デバッグ モードでない場合、コードはノードあたり 3 gpus で完全に正常に実行されます (私が知る限り)。
c++ - Intel C++ コンパイラは深いテンプレートを処理できませんか?
marrayライブラリを使用した C++ のプロジェクトがあります。今のところ、Windows 7 x64 上の MinGW g++ 4.7 および msvc2010 で、また Linux Mint x64 上の g++ 4.7 で、非常にうまくコンパイルおよび実行されます。Linux 用の Intel C++ コンパイラ v. 12.1.4 を試してみることにしました。コードをコンパイルすることはできましたが、式テンプレート (3 つの項すべてが行列である c = a + b など) に悩まされている行を実行しようとすると、セグメンテーション違反で失敗します。この問題は、アプリのデバッグ バージョンとリリース バージョンの両方に影響します。
また、marray ライブラリーの単体テストとチュートリアル・コードをコンパイルしようとしましたが、インテル C++ はコードをコンパイルしますが、式テンプレートがある場合は実行に失敗します。インテル® C++ は深いテンプレートで本当に悪いのでしょうか? それとも何か足りないのでしょうか? テンプレート式を機能させるには、特別なコンパイラ フラグを設定する必要がありますか? それとも、一般的な式テンプレートの手法ではなく、使用している特定のライブラリに何か問題があるのでしょうか?
また、 -ftemplate-depth- nフラグをnにさまざまな値を使用して10^10 という途方もなく大きな値まで設定しようとしましたが、セグメンテーション違反なしでアプリも marray ユニット テスト/チュートリアルも実行できませんでした。
Upd .:これは、デバッグ モードで icpc を使用してコンパイルされた前述のライブラリからの tutorial-marray の gdb ログです。
問題は一般に式テンプレートの手法に起因するものではないようです。数値を使用した配列演算は正常に機能します。ある配列を別の配列に追加しようとすると、問題が発生します。
更新。2:実際には、全体がここで言及されている問題と非常によく似ています。解決策は、演算子 E&() { return static_cast(*this); を書き直すことです。} E& get_ref() { return static_cast(*this); のようなものに const参照についても同じです。もちろん、コード内でのこれらの使用方法も変更してください。早速試して結果を報告します。
r - ICC出力からデータフレームを正しく作成する方法
ICC 計算からの出力を取得して、データ フレームを作成しようとしています (以下のサンプル データとコードを参照してください)。新しいデータ フレームを表示すると、すべてが完全に機能しているように見えますが、str() を使用すると、すべての変数が因子であり、結果が実際には各因子水準の実際のデータ カウントを含む因子水準であることがわかります。新しいデータ フレームを操作したいので、これは特に問題です。
私はRに比較的慣れていないため、コードを変更してこの問題を修正する方法がわかりません。
データセット:
コード:
c - icc 使用時の出力が不安定
私が持っている興味深いバグを報告したいと思います。以下のコードは、「1.0」を 20 回出力することになっています。代わりに、私の Mac (snow leopard 10.6.8) で icc (11.1) を使用してコンパイルすると、不安定な値 (「0.0」の 16 倍、次に「1.0」の 4 倍) が得られます。コードでいくつかの機能を使用していますが、構文が悪いものはないようです (コンパイル中にエラーは発生せず、valgrind は実行中にエラーを報告しません)。ただし、何かを変更すると(使用されていない関数であっても、非常に奇妙に感じるのはそのためです)、正しい出力が得られます。gcc でコンパイルすると、正しい出力も得られます。
しかし、最も奇妙なことは、関数「function1」を削除すると、関数がコードで使用されていないにもかかわらず、バグが消えることです。
これは本当に奇妙で、コード (それよりもはるかに大きい) が不安定になるのではないかと心配しています。私はあなたの助けが必要です、私はこれに本当に困惑しています. 構文に何か問題がありますか?
main.c:
main.h:
c++ - フレンド関数のデフォルト テンプレート: Intel ICPC 警告
私は次のテストコードを持っています:
g++ (4.6.1) では、次のようにコンパイルします。
Intel ICPC (12.1.0 20111011) の場合:
g++ ではエラーも警告も表示されませんでしたが、Intel C++ では次の警告が表示されます。
誰かがそれを避けるための解決策を持っていますか?
さらに、フレンド関数の構文は完全に問題ない/安全だと思いますか?それとも、いくつかの奇妙なケースでエラーが発生する可能性があると思いますか?
c++ - Intelコンパイラスイートを使用してOpenMPIアプリをコンパイルする
インテル®コンパイラー・スイートでコンパイルした最新のOpenMPIをLinux上に持っています。OpenMPIアプリケーションをコンパイルしようとしています。私の特定のアプリケーションは、RInsideとRcppEigenを使用しています。コードのopenMPI部分をコメントアウトすると、コンパイル文字列は次のようになります。
したがって、私は以下を使用してmpic++でコンパイルしようとしました。
mpic ++ -I / usr / share / R / include -I / usr / lib / R / site-library / Rcpp / include -I / usr / local / lib / R / site-library / RInside / include -O3 -pipe- g -Wall -I / usr / local / lib / R / site-library / RcppEigen / include sjb_simple_smle_with_Rinside.cpp -L / usr / lib / R / lib -lR -lblas -llapack -L / usr / lib / R / site -library / Rcpp / lib -lRcpp -Wl、-rpath、/ usr / lib / R / site-library / Rcpp / lib -L / usr / local / lib / R / site-library / RInside / lib -lRInside -Wl 、-rpath、/ usr / local / lib / R / site-library / RInside / lib -o sjb_simple_smle_with_Rinside
コメントを外すと
コンパイルしようとすると、以下のエラーが発生します。OpenMPIアプリケーションをIntelコンパイラでコンパイルするためのトリックはありますか?完全なソースは以下のとおりです。
完全なソースコード: