繁体   English   中英

特定GPU支持的CUDA中的原子操作

[英]Atomic operations in CUDA supported by specific GPU

我已经在CUDA中编写了一个程序,该程序将在GPU(nvidia geforce 310m)上执行。 在内核中,我使用了atomicMin函数。 编译并运行后,出现错误:“内核执行失败:<8>无效的设备功能”。 我认为这可能是由于我的卡不支持原子操作。 我是对的还是要考虑其他事情? 通过运行原子操作的方式,我已经了解到需要在Visual Studio中进行更改:项目属性-> CUDA C / C ++->设备->代码生成-> compute_13,sm_13。 谢谢。

您的GPU可能与您要为其编译的计算架构( sm_13 )不匹配。

driver_types.h的错误代码8的描述如下:

/**
 * The requested device function does not exist or is not compiled for the
 * proper device architecture.
 */
cudaErrorInvalidDeviceFunction        =      8,

一个典型的原因是编译的二进制体系结构与设备体系结构不匹配。 您没有提到要使用哪个GPU,但我猜它不是sm_13设备。

您可以通过运行cuda deviceQuery示例代码来确定拥有的GPU设备及其计算架构和功能。

有关各种原子操作所需的计算体系结构的更多详细信息,可以在文档中找到。 请注意,某些原子函数早在sm_11 (计算1.1)体系结构中sm_11可用,包括atomicMin函数的某些版本。

编辑:基于您现在指示您的GPU是GeForce 310m设备的事实,这不是支持1.3版本的设备。 因此,指定sm_13将不起作用。 GeForce 310m是计算1.2设备 ,因此,如果指定该体系结构(sm_12),则应该能够运行已经成功编译的代码。

关于原子,compute 1.2设备确实支持某些原子操作,包括atomicMin某些版本。 由于您尚未显示代码,因此我无话可说。

具有计算功能1.3的CUDA设备支持原子操作。 尝试使用以下标志编译代码

 -arch sm_13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM