是否有可能调用不同的内核,具体取决于是否已使用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_enum
中找到了cuda.h
,但我无法确定nvcc是否定义了任何与其中一个枚举值相等的标志。< / p>
我的意图是我不知道我的设备是否支持双精度浮动。这意味着我必须将我的数据从double
转换为float
,因此,运行一个不同的内核(是的,我希望尽可能以单精度运行双精度内核) 。
我也很欣赏一种完全不同的方法,只要它有效。
答案 0 :(得分:1)
major
和minor
字段。