Код CUDA, скомпилированный с более высокой вычислительной способностью, будет отлично работать в течение длительного времени на устройстве с более низкой вычислительной способностью, до того, как в один ядро произойдет некорректный отказ в один день. Я потратил полдня на погоню за неуловимой ошибкой, только чтобы понять, что у правила сборки было sm_21
, в то время как устройство (Tesla C2050) было 2.0
.
Есть ли какой-нибудь код API CUDA, который я могу добавить, который может самоконтролироваться, если он работает на устройстве с совместимой вычислительной способностью? Мне нужно скомпилировать и работать с устройствами многих вычислительных возможностей. Есть ли какие-либо другие действия, которые я могу предпринять, чтобы такие ошибки не возникали?