0

MPIを使用してC++で記述された他のプロジェクト用のcudaプラグインを作成したいと思います。次のような状況になりました。

  • startpoint.cppは、cudaintegrator.hを含むc ++ファイルであり、datastructure.hを含みます。
  • cudaintegrator.hは、datastructure.hを含むcudaファイルのヘッダーファイルです。
  • cudaintegrator.cppは、cudaintegrator.hの実装です。
  • datastructure.hは、いくつかのデータ構造を指定するヘッダーファイルです。

ファイルは次のように編成されています。

/trunk/
   /src
      /folder1
         /folder2
            /startingpoint.cpp
         /folder3 
            /cudaintegrator.h
            /cudaintegrator.cpp
      /folder4
         /folder5
            /datastructure.h

nvcc次のコマンドを使用してトランクディレクトリから実行する場合:

/usr/local/cuda/bin/nvcc   -c -o src/folder1/folder3/cudaintegrator.o src/folder1/folder3/cudaintegrator.cu

インクルードされたファイル`#include"folder4 / folder5 /datastructure.h"が見つかりません:

src/folder1/folder2/cudaintegrator.h:12:33: fatal error: folder4/folder5/datastructure.h: No such file or directory

同じインクルードを使用するmpic++のコンパイルを実行すると、が見つかります。startingpoint.cppdatastructure.h

nvccとmpic++の作業ディレクトリは、どちらもトランクディレクトリから実行されていても、どういうわけか違う(?)のではないかと思います。インクルードをファイル自体に変更する../../folder4/folder5/datastructure.hと見つかりますが、同じ理由で後続のインクルードが失敗します。この場合、で見つけることができないため、後続のすべてのファイルのインクルードを変​​更することはできませんmpic++nvccこの状況でファイルを正しく含める方法、または含まれているファイルを見つけるように指示する方法について誰かが提案していますか?

4

1 に答える 1

3

nvcc呼び出しにインクルードパス(-I)を提供するだけで十分です(そうでない場合は、相対インクルードパスのみを使用する../..ため、単一のインクルードに対して追加が機能します)。

于 2012-08-22T11:24:18.023 に答える