1

CUDA を介して、小さな C++ コードベースをグラフィックス カードの callable に移植しています。__host__ __device__CUDA では、CPU と GPU カーネル コードの両方で呼び出し可能にするために、すべての関数を先頭に追加する必要があります。例えば、

void foo() {} // callable on CPU, not on GPU
__host__ __device__ foo() {} // callable on CPU and on GPU

コードベースのすべての__host__ __device__関数に追加するのは面倒ですが簡単な作業ですが、C/C++ 関数の前に修飾子を追加する効率的な方法はありますか?

すべての関数宣言を検出するテキスト エディター手法、またはコンパイラー機能があれば幸いです。ただし、どちらかを含む解決策は知りません。

アイデア?

4

1 に答える 1

1

私はそのようなコンパイラ機能を認識していません。いずれにせよ、これらのディレクティブを広く適用することには注意が必要です。呼び出し規則とスタック管理は、必要のない通常のホスト規則とは大幅に異なる (たとえば遅い?) 可能性があるからです。#define HDFN __host__ __device__たとえば、追加/変更が簡単になるように、おそらく独自のマクロをまとめます。

それはさておき、メソッドを検出するための正規表現を掘り下げて、簡単なマクロを書くことができるかもしれません...

于 2013-02-11T20:09:51.390 に答える