2016-05-01 10 views
2

CUDA GPUが32ビットまたは64ビットのアドレッシングをサポートするかどうかを実行時に確認したいと思います。コンテキストの場合、私は実行時にPTXを生成するためにLLVMを使用しており、ターゲットのトリプルをnvptxまたはnvptx64に設定するかどうかを知る必要があります。CUDAデバイスが32ビットまたは64ビットのアドレッシングをサポートするかどうかの問い合わせ

cuDeviceGetAttribute経由で直接のクエリが表示されませんが、この情報を私に与えることができる他のクエリやヒューリスティックはありますか?

+3

現在のCUDAツールキット(7.x以降)でサポートされているすべてのCUDA GPUは、32ビットまたは64ビットのアドレス指定をサポートしています。アプリケーションのロード時には、コンパイルされたアプリケーション/プロセスの種類(ホストとデバイスは一致している必要があります)によって決定されます。 64ビットプロセスからcudaコンテキストの初期化を実行する場合は、64ビットのコンテキストを作成する必要があります。 cudaコンテキストの初期化が32ビットプロセスから実行される場合は、32ビットのコンテキストを作成する必要があります。したがって、私はそれを試していませんが、私は単純な 'sizeof(void *)'が区別するのに十分なはずだと思います。 –

答えて

2

64ビットアドレッシングは、統一アドレッシングが機能するには厳しい要件です。また、64ビットアドレッシング可能なすべてのNVidia GPUは統一アドレッシングをサポートしています。したがって、特定のデバイスコンテキストでユニファイドアドレッシングがサポートされているかどうかをテストすることで、64ビットアドレッシングがサポートされているかどうかがわかります。

cudaGetDevicePropertiesで照会された構造体cudaDeviceのフィールドunifiedAddressingはその情報を提供します。

関連する問題