CUDAとの混在について

フォーラム iSUS ディスカッション 入門者フォーラム CUDAとの混在について

9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • 投稿者
    投稿
  • #42864 返信
      
      tetu
    参加者

    初めて投稿します。
    CUDAで書かれたコード含むソースを、Intel2013コンパイラでビルドしたところ、以下の様なエラーが発生し、
    ビルドできませんでした。VS+CUDAの環境ではビルド&実行できます。

    nvcc : fatal error : Compiler ‘cl’ in PATH different than the one specified with -ccbin

    CUDAコンパイラとIntelコンパイラ間のやりとりの問題かと思いますが、解決の手段はあるでしょうか?
    私の環境では、Intelコンパイラは、VS2010と統合させており、さらにCUDA6.0を導入しています。

    ・問題の確認解決手段を教えてください。
    ・組み合わせが未対応の場合は、どの組み合わせが対応可能なのかを教えて下さい。
     CUDAとIntelコンパイラの関係となります。CUDA+VSは、VS2012までが組み合わせ可能と認識しています。
    ・組み合わせが未対応の場合、もし対応計画など、公開できるものがありましたら、情報をお願いします。

    以上、よろしくお願いします。

    #43090 返信
      
      iSUS編集部 – 菅原
    キーマスター

    こんにちは、tetu さん

    このコンパイラーメッセージは、NVCC がバックエンド・コンパイラーとして Visual C++ を起動しようとして、失敗しているようですね。メッセージにあるように、インテル・コンパイラーを教えてあげればよろしいのではないでしょうか?

    「-compiler-bindir=icl」オプションを追加して、インテル・コンパイラー icl に変えて試してみてはいかがでしょう?

    #43091 返信
      
      tetu
    参加者

    回答有難うございました。

    上記内容を、単に追加指定すると「再定義されました」とエラーが発生します。
    これは、Windows環境下ではCUDAが、VSのコンパイラをデフォルトとしているためです。

    デフォルトを変更するため、CUDA用のカスタムビルドファイル(具体的には、[CUDA 6.0.props])を確認すると、「-ccbin」パラメータが確かにVSのコンパイラを指定しているので、書き換え、再ビルドすると上記エラーは消えました。
    が!、次は「iclvars.batが見つかりません」というエラーが発生しました。

    と、ここまでが実施内容の報告です。
    更に追うことも可能だと思うのですが、ビルドが出来てもそれが正しい結果なのか(抜けている設定があったり等)、自信がありません。メーカー側で推奨の手順があれば、教えていただきたいと思います。メーカー側でCUDAとの混在は非推奨or動作未保証ということであれば、ここで一旦クローズしておきたいと考えております。

    高速化の観点から、”Intel+CUDA”を、できれば使いたいです。

    #43092 返信
      
      iSUS編集部 – 菅原
    キーマスター

    tetu 様

    インテル・コンパイラーはオフィシャルには CUDA SDK との統合はサポートしていませんが、多くのエンジニアの方が利用されています。Windows環境では、Visual Studio へインテル・コンパイラーを統合する際に、NVCCが必要とする環境変数が自動的に書き換えられないので、今回 tetu 様が遭遇している問題が発生しているものと思われます。

    インテル・コンパイラーのフォーラムでも同様の質問があるようです。
    https://software.intel.com/en-us/forums/topic/392230

    まず、コマンドラインで試してみてください、ということのようです。
    逆に、NVCCのマニュアルにコンパイラーをVC以外にする場合、何を変更すればよいかという記述はないでしょうか?

    明確に解決できずもうしわけないです。

    #43093 返信
      
      tetu
    参加者

    回答ありがとうございます。

    コマンドラインと、NVCCのマニュアルを確認してみます。うまくビルドできた時には、このフォーラムに、情報共有のためにも、書き込みをさせていただきます。

    >明確に解決できずもうしわけないです。
    こちらこそ、大変無理を言ってしまい恐縮です。
    今後とも宜しくお願いします。

    #43094 返信
      
      iSUS編集部 – 菅原
    キーマスター

    追記です。

    すでにコマンドラインでご利用されているのであれば、インテル・コンパイラーのコマンド窓を開いて、そちらでCUDA_PATHを設定して実行するか、

    VCのコマンドラインを利用されているのであれば、以下のバッチファイルを起動してみていただけますか。

    C:WindowsSysWOW64cmd.exe /E:ON /V:ON /K “”C:Program Files (x86)IntelComposer XE 2013 SP1binipsxe-comp-vars.bat” intel64 vs2010″

    パスは、インストール環境で違うかもしれません。

    #43095 返信
      
      tetu
    参加者

    菅原様

    なんとかビルド&実行が出来たので報告します。
    対象の*.cuファイルは、「c:testa.cu」とします。適当に読み替えてください。

    ①コマンドプロンプトを起動して、対象プロジェクトの作業ディレクトリに移動します。
    ②前コメント菅原様のバッチを実行します。
    ③a.cuをコンパイルするために、*1を実行します。
     →実使用時には、パスやファイル名、オプションを必要に応じて変更して下さい。
    ④すると、-oオプションで指定したディレクトリに指定したファイル名でオブジェクトファイルが出来ます。
     →ここでは、”x64Releasea.obj”
    ⑤VS2010にて、「a.cu」をビルド対象から除外します。
     →ファイル名を右クリックして、プロパティから。
    ⑥作成したオブジェクトファイルを参照するように設定します。
     →プロジェクトのプロパティから、「リンカー-入力-追加の依存ファイル」に追加する。
    ⑦ビルドします。

    一応、実行も問題なかったので、正しくビルドはできていると思います。
    ただ、もう少し楽に出来ないかなと、研究中です。

    *1
    “C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.0binnvcc.exe” -gencode=arch=compute_20,code=”sm_20,compute_20″ –use-local-env –cl-version 2010 –compiler-bindir=icl -I”C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.0include” –keep-dir x64Release -maxrregcount=0 –machine 64 –compile -cudart static -D__INTEL_COMPILER=1400 -DWIN32 -DNDEBUG -D_WINDOWS -D_USRDLL -DREC_CUDA_DLL_EXPORTS -D_WINDLL -D_UNICODE -Xcompiler “/EHsc /W3 /nologo /O2 /Zi /MD” -o “x64Releasea.obj” “c:testa.cu”

    #43096 返信
      
      iSUS編集部 – 菅原
    キーマスター

    tetu 様

    レポートありがとうございます。
    うまくいって何よりです。

    理想的には、VS 上で完結できるといいですが、それまでは makefile を作って nmake を使うほうがいいかもしれませんね。

    #129591 返信

    ArjunRampfub

    hi to all! give me plkase funny cats videons on yourtube

9件の投稿を表示中 - 1 - 9件目 (全9件中)
返信先: CUDAとの混在について
あなたの情報: