1

CUDAプロジェクトのビルド中に、次のエラーが発生します。

cutil_inline_runtime.h(328): error: identifier "CURAND_STATUS_DOUBLE_PRECISION_REQUIRED" is undefined

それで私はグーグルを始めました。解決策が見つからなかったため(実際の問​​題も見つかりませんでした)、nVIDIA CURANDガイドpdfからダウンロードして、読み始めました。そのPDFには次のように書かれています。

Enumerator:
...
**CURAND_STATUS_DOUBLE_PRECISION_REQUIRED** GPU does not have double precision required by MRG32k3a
...

これは、doubleデータ型で操作を実行できないことを意味します...そうですか?確かに、数日前にdoubleデータ型を使用してプロジェクトを作成しましたが、問題なく機能したため、これは間違っているように思われます。誰か提案がありますか?ありがとうございました!

編集問題の「実際の」解決策を見つけることができなかったため、最終的に、cutil_inline_runtime.hの「CURAND_STATUS_DOUBLE_PRECISION_REQUIRED」の行をコメントアウトしました。これで機能します。私はそれが「醜い」ことを知っていますが、それが助けになった唯一のものでした...

4

2 に答える 2

2

私もこの問題を抱えていました。問題は、異なるバージョンのcudaSDKとcudaツールキットを使用していたことでした。CURAND_STATUS_DOUBLE_PRECISION_REQUIREDの定義を参照する新しいバージョンのSDKを使用していましたが、インストールした古いバージョンのcudaツールキットのcurand.hではその定義が定義されていませんでした。

cudaSDKのバージョンと一致するバージョンのツールキットをインストールしてみてください。

于 2012-08-29T17:00:49.323 に答える
1

グーグルの「計算機能」を試してみてください。これは、nvidiaがさまざまなCUDA機能を定義する方法です。CUDA Cプログラミングガイドでは、計算能力1.2以下のデバイスが倍精度FP数学をサポートしていないことが何度か言及されています:CUDA Cプログラミング、140ページ、および表F-1、つまりdpfpサポートに関する行も確認してください。 。

Gefore 8800 GTは、コンピューティング機能1.0であるG80アーキテクチャチップです。このカードで二重計算を行うことはできません。多くのサンプルコードはエミュレーションモードなどを利用しているため、機能していると思わせる可能性があることに注意してください。

于 2012-07-02T09:15:12.707 に答える