0

たとえばnvcc -arch=sm_11、またはnvcc -arch=sm_20コードのコンパイルに使用されたかどうかに応じて、異なるカーネルを呼び出す可能性はありますか? もう少し明確にするには:

if (FANCY_FLAG == CU_TARGET_COMPUTE_11)
    // Do some conversions here..
    krnl1<<<GRID_DIM1, BLOCK_DIM1>>>(converted_value1);
else if (FANCY_FLAG == CU_TARGET_COMPUTE_20)
    krnl2<<<GRID_DIM2, BLOCK_DIM2>>>(value1);

ご覧のとおり、CUjit_target_enuminを見つけましたcuda.hが、nvcc が enums 値の 1 つに等しいフラグを定義しているかどうかを確認できませんでした。

これに対する私の意図は、私のデバイスが倍精度浮動小数点数をサポートしているかどうかわからないということです。つまり、データを から に変換する必要がdoubleあるfloatため、別のカーネルを実行する必要があります (はい、可能であれば、単精度よりも倍精度でカーネルを実行することをお勧めします)。

また、それがうまくいく限り、まったく異なるアプローチをいただければ幸いです。

4

1 に答える 1

1
  1. デバイス コードでCUDA_ARCHマクロ値を確認します
  2. ホスト コードで -デバイス プロパティのフィールドを確認majorします。minor
于 2012-08-02T15:44:44.943 に答える