关于CUDA4.2和5.0的问题

今天写了一个cuda程序,大致实现的功能就是用两块不同型号的显卡做计算(多流实现的),但却出现了这样一个问题:
用4.2编译运行时没有任何问题,两块卡都能进行计算,但当换成5.0时,程序依然可以编译通过,但运行时只有一块显卡在计算。
然后我修改了程序,让程序每次只使用一块显卡计算,4.2没有问题,但使用5.0时,其中一块没有问题(之前两块一起计算时能计算的那一块),而另一块却还是无法计算,纠结了好长时间也没找出个原因。

看到楼主的问题描述了。但楼主没有给出具体操作情况。

那么根据描述,楼主可能采取了一种较为典型的“单host线程,通过反复cudaSetDevice“切换工作于的显卡设备。

这种操作情况,应该说是没问题的。除非楼主使用了一些其中一块卡不支持的特性,而这个特性在5.0里才能暴露出来。

以上是对楼主的描述的猜测,为了弥补信息不足,建议楼主给出如下信息:

(1)您的2块卡的型号。
(2)您的大致操作流程。
(3)您的编译参数。

这3信息对楼主大有帮助。

楼主还在吗?这不是对你的刁难。您的单纯的问“为何我的程序在5.0下不能工作”这种,谁也无法回答。

还望补充为好!

在。一块是tesla c2050,另一块是gtx 650,计算能力选的是2.0。程序中用到了常数内存,mapped memory,其他都是很普通的内容。650没有问题,2050有问题。
顺便问一下,两块显卡装驱动的时候,装第二块的驱动会覆盖了第一块的驱动吗?后来装cuda的时候又会有另一个驱动,感觉这之间会相互覆盖啊。

telsa应该有不同于geforce驱动模式的专用驱动。
建议telsa c2050和gtx650的驱动分别升级到最新版本,然后再试。

试的时候,也可以写点简单的调试代码测试,看看还有问题没。

祝您编码愉快~

看到楼主的回复了。这些常见操作应该没事。所以问题可能出在驱动上。

(1)如果都是WDDM的驱动,那么应该只能有一个,请安装最新驱动。
然后楼主安装最新的驱动后,可以先简单的用例子里面的DeviceQuery看下2个卡是否都能成功识别。然后再运行成品的简单的多GPU例子程序,看看能否成功。
如果成品的也不能,那么就是你的环境问题,而不是你的代码。

(2)如果一个是TCC驱动,一个是WDDM(GTX650的), 那么应该不会相互覆盖。但我没有购买过支持TCC驱动的卡,这个不是很确定,建议买过tesla卡的其他版主/会员继续帮助您处理这第二种情况。

一般的,既然楼主曾经简单的对一开始好好的代码使用cudaSetDevice(新卡); 然后又都是常规使用。那么几乎可以判定是驱动的问题。建议更新到最新。

祝楼主好运。

额外插一句,既然你能用4.2编译通过并运行,何必非要装5.0呢?你的卡没有一个支持5.0特性的,即便是KEPLER架构的GTX650,也不会支持最新的CUDA技术,所以说用4.2版本完全够用了!