大家好,好久没有来论坛了,因为是跨专业的学科,前一段时间课题的重心放在了别的方向。现在又想继续用GPU来写一些小的程序。我目前有两个疑问:
1.刚刚看了CUDA 6.0的优势,说是增加了Unified Memory的能力,但是需要在KEPLER构架下运行(我们实验室打算购买一台Titan),我现在电脑上装的是Fermi构建的GTX 580,安装的CUDA 5.0,那么我是否能在CUDA 6.0下编程?我不用6.0的新性能是不是就行了?
2.假设我在GTX 580上生成了一个GPU的并行软件,那么有些人的电脑上装的是GTX280或者是更老的显卡,能否能运行我写的.exe软件呢?也就是说是不是我写的小程序只能在比GTX580好的显卡上跑,老一代的显卡就跑不了了呢?
LZ您好:
欢迎您回归CUDA ZONE~
1:CUDA 6目前尚未正式发布,一切情况以CUDA 6正式发布后的信息为准,目前无评价,无猜测。唯一比较肯定的是,按照惯例,CUDA 6应该依然支持之前的所有支持CUDA的GPU,但是CUDA 6的新特性情况,请以发布后的官方文档为准。
2:您的程序如果要能够在老卡上运行,您需要保证一些条件:
a:这些卡有合适版本的驱动程序。
b:您的程序中无法使用超出这些卡计算能力的特性,比如48KB的大容量shared memory,比如kernel内printf,比如部分原子操作函数等。或者您可以使用一些宏来对不同的计算能力版本使用不同的代码实现。
c:您需要合适地设定编译参数,合适的二进制代码或者合适的PTX代码至少要在您的exe中保留一个。关于设定编译参数,请参阅以下讨论帖:
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=7685#lastpost
大致如此,祝您编码顺利~
好的,O(∩_∩)O谢谢~:P