2017-03-09 9 views
-1

私のC++コードの一部はGPUをベースにしていますので、私の同僚の私の同じプロジェクトで働く人はコンパイルする可能性がありません。あなたのライブラリサポートに基づいてコードをコンパイルしてください

例えば、一つのファイルに次の行があります:

#include "opencv2/xfeatures2d/cuda.hpp" 

それとも別のファイル内のコード行があります:

CUDAでのみコンパイルすることも可能です
cv::cuda::GpuMat imgGpu, descriptorsGpu, keypoints; 
    imgGpu.upload(img); 

は(とGPU)をサポートします。

どうすればこの問題を解決できますか?私の唯一の解決策は、このコードを含むすべてのソースファイルにマクロを導入し、セクションをマクロでラップし、ライブラリのサポートがあればその値を編集することでしたが、これは悪夢のようなものです。

もっと良い解決策はありますか?

PS:私たちのプロジェクトは、メイクファイルベースの

+0

@drescherjmありがとう! – justHelloWorld

+0

ハードウェアの50ドルをチームの障害とし、何時間も余分に仕事をしても何の意味もありません。あなたの上司に相談してください。 –

+0

@HansPassant GPU、特にCUDAは今後のユーザーのために私どものチームでは誰もサポートしていません。これはプロジェクトの必須の部分ではなく、追加機能であり、両者で作業する可能性を提供する必要があります。 – justHelloWorld

答えて

1

好ましいアプローチである別のライブラリにすべてのGPUに依存するコードを分離することです。同じAPIを公開するが、CUDAを必要としないモックまたはダミー代用ライブラリを構築する価値があるかもしれません。このような責任の分離は、ある日、バルカンや他のフレームワークの代わりにCUDAを使用する必要がある場合には非常に重要です。

+0

あなたの答えをありがとう。しかし、私はあなたが言っていることが可能であるとは思わない(あるいはおそらく、私はあなたのアプローチを理解していない):CUDAコードのこのオプション部分は、システム構成コードにも含まれていますそれを利用するようにシステムを構成することができます)。プロジェクト全体の2つのバージョンを作成するように指示していますか?CUDAコードを含むバージョンとそれを含まないバージョンの2つです。私はあなたの答えを理解していない場合は申し訳ありません、たぶん私に役立つ例を与える。 – justHelloWorld

関連する問題