4

device_vector現在のプロジェクトで Thrust を使用しているため、自分で抽象化を記述したり (セグメント化された) カーネルをスキャンしたりする必要はありません。

これまでのところ、スラスト抽象化を使用してすべての作業を行ってきましたが、単純なカーネルまたは for_each または変換抽象化に簡単に変換できないカーネルについては、ある時点で代わりに独自のカーネルを作成することを好みます。

私の質問は、Thrust (またはおそらく CUDA) を介して、現在使用されているデバイスとそのプロパティ (最大ブロック サイズ、最大共有メモリなど) を確認できますか?

現在のデバイスを取得できない場合、カーネル レジスタと共有メモリの要件を提供すれば、カーネルのサイズを計算する推力を得る方法はありますか?

4

1 に答える 1

3

CUDA を使用して現在のデバイスを照会できます。デバイス管理に関する CUDA ドキュメントを参照してください。cudaGetDevice()、、、などcudaSetDevice()を探します。cudaGetDeviceProperties()

現在、Thrust にはデバイス管理の概念がありません。「カーネルの次元を計算するために推力を得る」とはどういう意味かわかりませんが、カスタム カーネルを起動するためのグリッドの次元を決定しようとしている場合は、自分でそれを行う必要があります。cudaFuncGetAttributes()Thrust が使用する を使用して、カーネルのプロパティをクエリすると役立ちます。

于 2012-07-11T02:53:30.207 に答える