mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   GPU Computing (https://www.mersenneforum.org/forumdisplay.php?f=92)
-   -   Compute Capability Version. (https://www.mersenneforum.org/showthread.php?t=16671)

jFKEe3xV9p 2012-03-30 00:58

Compute Capability Version.
 
Is it possible to change the version number reported from the GPU. For example my current card states that it's using version 1.3 however I need it to report it's version as 2.0.

Any help would be appreciated. I would hate to have to buy a new card.

Dubslow 2012-03-30 03:09

What do you mean? Compute Compatibility refers to what the hardware is capable of doing.

What card do you have? You can check what it [i]should[/i] be reporting at [url]http://developer.nvidia.com/cuda-gpus[/url] . If you have a card that appears as 2.0 on that list, but appears in a CUDA program to be 1.3, then that means either the program is old and was compiled before CUDA 2 became available, or it means you have old drivers. The current drivers are 295.xx +.

(If you have Windows, you can use [url=http://www.nvidia.com/Download/Scansg.aspx?lang=en-us]this[/url] to find your current driver and get new ones, or on Linux you can run "nvidia-smi -q" to find out your driver version.)

Edit: If your card appears on that list as 1.3, then the hardware is just straight up too old/obsolete and will not run with 2.0+ software, so you'll need to get a new one.

jFKEe3xV9p 2012-03-30 05:01

The card is a GeForce GTX 295 with version 1.3. I don't need it to run 2.0+ software however I need the software to load. It requires 2.0 to load.

I found a similar problem here with no solutions.

[url]http://www.mathworks.com/matlabcentral/newsreader/view_thread/291689[/url]


Basically I just want the card to report back to the software that it's running 2.0 even though it really running 1.3. I am fully aware that I wont be able to take advantage of all the features in 2.0.

Dubslow 2012-03-30 05:10

How could you possibly load 2.0 software without running it?

If software is compiled for version 2.0, then that means that the software issues instructions to your card that the card is literally physically not capable of executing. Even if you could fake the program into running, it wouldn't give any correct answers.

jFKEe3xV9p 2012-03-30 05:16

That is the thing. It does not need 2.0 to run it however for what ever reason it has been restricted to only run on 2.0.


If the card is able to report back that it's running 2.0 problem solved.

Karl M Johnson 2012-03-30 06:46

I dont think it's possible (or easy to implement), since the program gets that info using some kind of GetDeviceInfo_CC() function and the GPU itself reports that CC.

Dubslow 2012-03-30 08:07

[QUOTE=jFKEe3xV9p;294773]That is the thing. It does not need 2.0 to run it however for what ever reason it has been restricted to only run on 2.0.[/QUOTE]

I kinda find that hard to believe. What program? When was it designed? Under which SDK was it compiled? Even if it was written and compiled before 2.0 but then recompiled under 2.0 without any changes, it still won't be capable of running, even if you spoofed it. However, if you re-recompiled it again under 1.3, then it will work fine. (In fact even if the program was written after 2.0, recompiling it with the 1.3 SDK might make it work.)

For the record, I don't know how to spoof what compatibility a card reports. However, I do encourage you to post what the software is and when it was written, etc. There might be another workaround.

ldesnogu 2012-03-30 09:21

This type of thing can be done for programs that use shared libraries: you create a fake library that implements the function you want to override. This is probably applicable in this case, but not trivial.

[URL="http://www.technovelty.org/code/c/override.html"]Here is an example.[/URL]

Dubslow 2012-03-30 09:32

[QUOTE=ldesnogu;294796]This type of thing can be done for programs that use shared libraries: you create a fake library that implements the function you want to override. This is probably applicable in this case, but not trivial.

[URL="http://www.technovelty.org/code/c/override.html"]Here is an example.[/URL][/QUOTE]

I think I see what you mean, create a new "library" with a function of the same name as above that returns 2.0?

Either way, you'd still have to recompile it, right? And if so, then there's probably a safer workaround anyways.

ldesnogu 2012-03-30 09:39

[QUOTE=Dubslow;294797]I think I see what you mean, create a new "library" with a function of the same name as above that returns 2.0?

Either way, you'd still have to recompile it, right? And if so, then there's probably a safer workaround anyways.[/QUOTE]
I took as hypothesis that the original program checks for 2.0 even though it only uses 1.3 capabilities (note that I don't know anything about CUDA, so this might make no sense :smile:). In that case no recompilation of the original program is needed.

Dubslow 2012-03-30 10:01

But in order to get the faked library into the software, you would need to recompile? Because you have new source?


All times are UTC. The time now is 03:13.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.