Is GTX 560 Ti no longer supported by Hashcat?
#1
Question 
Hi!

Forum rules say:
"Do not post issues about using a GPU that is no longer supported by the latest driver from its vendor."
https://hashcat.net/forum/announcement-2.html

So I would like to start off by establishing if GTX 560 Ti is supported or not by the current version of Hashcat.

By "vendor" you mean Nvidia, right?

I have this GPU:
https://www.asus.com/SupportOnly/ENGTX56..._Download/

Latest driver available there is version 306.23 from Oct 25, 2012.

I looked at the Nvida driver download page I find newer drivers:
https://www.nvidia.com/en-us/geforce/drivers/

They have version 391.35 from Mar 27, 2018.

That's still 3 years too old for Hashcat to support it?

I also wonder if it's possible that the same GPU is still supported on Linux based OSes if the vendor is not Nvidia and is still maintained? I am running Windows on it.

I also looked at the "Is your card supported" sticky thread:
https://hashcat.net/forum/thread-919.html

Following the link for Nvidia reveals a list where GTX 560 is listed as having "Compute Capability" of version "2.0". What does that tell me? It has CUDA cores?... I know it has CUDA cores, 384 of them, not many by today's measure but it still does have them.

"Is your card supported"... in what sense? This question is ill-defined. Yes, GTX 560 Ti does have CUDA support if that's what you're after, but the real question is if it's supported by Hashcat! None of those links lead to answers of such questions.

I didn't look closer at the GitHub link for AMD GPUs as it seems to be programming related rather than displaying what AMD GPUs are compatible with Hashcat, and in that sense, it's the same as the Nvidia link displaying what Nvidia GPUs are CUDA compatible. That sticky alone is as old as GTX 560 itself, I don't see how that's helpful at all (someone please fill me in), other than showing you if your GPU got CUDAs, in hope that Hashcat of the time had support for your model so you could leverage good hash(-ish) performance.

Do you have a list of your own that clearly indicates what GPU cards are supported by Hashcat? A compatibility chart with Hashcat version numbers would be very helpful.

I could go on and download an old version of Hashcat to see if that works better with my GPU. It's just that there are so many versions, it would be helpful to be able to narrow it down a little, and the issue may not be related to GPU drivers anyway (the rule is presuming that the issue is related to outdated driver). So for that reason I am reluctant to go down this rabbit hole, it's not that I am lazy. But thanks to this clearly defined rule, I have hit a road block before I had the chance to tell you what the problem is that I'm having with this GPU. So it seems I won't be able to ask for help with Hashcat on Hashcat forums, not until I upgrade my GPU to something more recent, in which case I may not need your help at all.

Playfully yours,
meow
🐈
Reply
#2
Just look what version of OpenCL the card supports & if it meets the requirement on the homepage. Can also check if it supports CUDA SDK by visiting the site below.

https://developer.nvidia.com/cuda-gpus

Otherwise, use an older version of hashcat which may not include the hashtype you may be using.
Reply
#3
According to Wikipedia, "All [GeForce 500 series] products support DirectX 12.0, OpenGL 4.6 and OpenCL 1.1."
https://en.wikipedia.org/wiki/GeForce_500_series

If it's listed as Compute Capability 2.1, does it support CUDA SDK?

I don't think there is any risk that an old version of Hashcat does not have MD5 support. These are just some basic things I'm playing with and I am new to hash cracking (a lot to learn). This donated GTX 560 Ti is one of the better GPUs that I currently have. I read that it has 384 of something called "CUDA cores" and that it's beneficial for hash cracking. So I am trying to put it to some good use. But it seems to be too old for latest version of Hashcat.

Full disclosure! I really don't know much about the topic of using GPUs for general purpose computing, parallel processing, so on, and so forth. Other than these big words and that these "cores" are highly specialized computing units in GPUs, also referred to as shading units, stream processors, and that they are somewhat comparable to cores found in a modern CPU (which I learned can offend the purists).

I seem to be able to run Hashcat 3.0 just fine on this. I'm getting 900 to 930 MH/s. I don't know if that's good or bad, I have no reference point. I can't run Hashcat 4.0 or 5.0, or 6.2.5 on it without running into warnings and errors. In fact, I am unable to run 3.0 even. The only reason I was able to run it recently is because I created a new user account and tried running it with that account and it worked. I read a post somewhere by Atom in response to another user that the warning message I was getting may be related to file system permissions or something like that. So I decided to try getting somewhat clean slate by creating a new user account and it worked. I don't think I have file system issues on my main user account, but I can't prove that.

To sum up my findings about GTX 560 Ti:

Launched 25 Jan, 2011
Open CL 1.1
Open GL 4.6
DirectX 12.0
Compute Capability 2.1
384 CUDA cores
1263.4 GFLOPS
Last Nvidia driver 391.35 from Mar 27, 2018

For version 6.2.5, Hashcat requirements state:
Quote:"NVIDIA GPUs require "NVIDIA Driver" (440.64 or later) and "CUDA Toolkit" (9.0 or later)"

I didn't read this fine print the first time I downloaded Hashcat. So am I to understand that I don't just need an Nvidia driver, I also need the full "CUDA Toolkit" experience? What do I get by downloading and installing this huge 2.4 GB CUDA Toolkit package? Hashcat won't work without it? Isn't it so that Hashcat will use Open CL instead if CUDA Toolkit (SDK) is not available?

Quote:"Intel CPUs require "OpenCL Runtime for Intel Core and Intel Xeon Processors" (16.1.1 or later)"

I mean if Open CL works for Intel CPUs it has to work for Nvidia GPUs, right? (The "16.1.1" is probably a reference to Open CL 1.1, another example of weird versioning scheme that reminds me of Java versioning.)

While I was going down the memory lane and exploring old archives, I came across some notes about Hashcat becoming open sourced (I thought it always has been) and about merging of different variants of it, as I recall some versions of "oclHashcat" were merged. I went too far back in history. But it left me with the impression that Hashcat once only worked with CPUs, and later variants worked only with GPUs, taking advantage of powerful new GPU technology like these CUDA cores. Current version of Hashcat works both with CPUs and GPUs by what I can tell, and APUs.

Anyway, to get back on topic, does Hashcat 6.2.5 support something as old as the 10 year old GTX 560 Ti? If it doesn't, that's fine. May I know what to look for in a GPU to ensure it is compatible with Hashcat?

Yes, I am interested in saving some money to buy a GPU for use with Hashcat. Can you blame me? This is addictive. But there are too many variables I have no clue about (a lot to learn). When I look at GPUs in stores, there is only marketing information (baits) for gamers on the boxes, like "DirectX 12" and innovative (fantasy) features like "Nvidia Ansel" that apparently allows you to take screenshots in games and turn them into art by some kind of Voodoo spell (pun intended). There is no information about "CUDA Cores" or about "CUDA Toolkit" version number support. I don't think Open CL is mentioned by name, but Open GL may be (sometimes). Pardon me for wishing that GPUs were sold with the label "Hashcat 6.x compatible" on them.
Reply
#4
Apparently CUDA 8 was the last version to have support for Fermi architecture (includes GTX 560 Ti included).
https://en.wikipedia.org/wiki/CUDA#GPUs_supported

So which Hashcat version was last to have CUDA 8 support? If there is one and it works with Windows 10, and CUDA 8 is available for Windows 10, then I should be in business. Maybe. I will install CUDA 8 rather than the latest and greatest 11.5.1 and try to pair it up with an older version of Hashcat. That should work, right?
Reply
#5
I have not swapped CUDA 11 for CUDA 8 yet, but I did use Hashcat 3.0 on the GTX 560 Ti for a MD5 job and it was consistently giving me 900 to 930 MH/s and without errors or warnings. Whereas running Hashcat 4.0 results in warnings and errors, but it does work in a limited capacity. Hashrate drops from 900 MH/s to 270 MH/s using 4.0.

Code:
hashcat (v4.0.0) starting...

* Device #1: This hardware has outdated CUDA compute capability (2.1).
            For modern OpenCL performance, upgrade to hardware that supports
            CUDA compute capability version 5.0 (Maxwell) or higher.
* Device #1: WARNING! Kernel exec timeout is not disabled.
            This may cause "CL_OUT_OF_RESOURCES" or related errors.
            To disable the timeout, see: https://hashcat.net/q/timeoutpatch
nvmlDeviceGetCurrPcieLinkWidth(): Not Supported

nvmlDeviceGetClockInfo(): Not Supported

nvmlDeviceGetClockInfo(): Not Supported

nvmlDeviceGetTemperatureThreshold(): Not Supported

nvmlDeviceGetTemperatureThreshold(): Not Supported

nvmlDeviceGetUtilizationRates(): Not Supported

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 560 Ti, 256/1024 MB allocatable, 8MCU

I have not tried Hashcat 5.0 or the current 6.2.5 again, I'm afraid they will not work at all. Although this seems to be related to file system access or user account setup. Because on my main account not even 3.0 worked last time I tried it. I did reinstall CUDA 11 since, making sure the installed doesn't overwrite my old Nvidia driver in the process, so maybe that fixed the thing. I will have to run it again under my main account to verify it works.

Does Hashcat require administrator privileges to take full advantage of the GPU?

Lastly, do I need to have the CUDA Toolkit installed at all? Aren't the CUDA libraries included with Hashcat anyway? I think I saw a message like "initializing cuda library... success" when running Hashcat 3.0. (That was in 6.2.5: "Successfully initialized NVIDIA CUDA library.")

Fun fact! I did the same MD5 job on another PC using only Intel iGPU, the UHD 630 found in Core i7-8700 from 2017 (1200 MHz boost variant, 192 shader units, 403.2 GFLOPS). I got 300 to 310 MH/s which is 2/3 less than what I'm getting with GTX 560 Ti. The same job was started 30 minutes after Intel UHD 630 on the on GTX 560 Ti, and it still finished before UHD 630. It's estimated that the UHD 630 will run for another 2 hours before it's finished. Meanwhile, the GTX 560 Ti has been idling and relaxing for the last 50 minutes.

So this "old" GTX 560 Ti from 2011 is still beating the Intel iGPU from 2017. This is a good indicator that using a dedicated GPU is much more preferable over integrated graphics, even if it's an older GPU model. It also shows the importance of using a software that can leverage the full potential of the hardware.

I have some more GPUs to test, before I decide what my next GPU will be, but Hashcat 3.0 will work well with GTX 560 Ti.
Reply
#6
CUDA 11 has been swapped with CUDA 8.

Same type of errors appear using Hashcat 5.0 as with 4.0.

Code:
* Device #1: This hardware has outdated CUDA compute capability (2.1).
            For modern OpenCL performance, upgrade to hardware that supports
            CUDA compute capability version 5.0 (Maxwell) or higher.
* Device #1: WARNING! Kernel exec timeout is not disabled.
            This may cause "CL_OUT_OF_RESOURCES" or related errors.
            To disable the timeout, see: https://hashcat.net/q/timeoutpatch

nvmlDeviceGetCurrPcieLinkWidth(): Not Supported

nvmlDeviceGetClockInfo(): Not Supported

nvmlDeviceGetClockInfo(): Not Supported

nvmlDeviceGetTemperatureThreshold(): Not Supported

nvmlDeviceGetTemperatureThreshold(): Not Supported

nvmlDeviceGetUtilizationRates(): Not Supported

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 560 Ti, 256/1024 MB allocatable, 8MCU

There are notable differences with 5.0 compared to 4.0 and 3.0. With 5.0 I get anywhere between 170 and 400 MH/s whereas with 4.0 I only get 270 MH/s at most but consistently in that ballpark (and 900 to 930 MH/s with 3.0). Also, the fans are spinning a bit faster when hashrate reaches 400 MH/s, they go up to 45% compared to 25% or so with version 4.0 and 3.0. This is probably because temperature thresholds are set set differently. The temperature never reaches 70 degrees C, whereas with version 4.0 and 3.0 it's allowed to go as high as 75 C (with fans at around 25% at most).

As for 6.2.5, it doesn't work at all.

Code:
hashcat (v6.2.5) starting

Successfully initialized NVIDIA CUDA library.

Failed to initialize NVIDIA RTC library.

* Device #1: CUDA SDK Toolkit not installed or incorrectly installed.
             CUDA SDK Toolkit required for proper device support and utilization.
             Falling back to OpenCL runtime.

* Device #1: This hardware has outdated CUDA compute capability (2.1).
             For modern OpenCL performance, upgrade to hardware that supports
             CUDA compute capability version 5.0 (Maxwell) or higher.

* Device #1: WARNING! Kernel exec timeout is not disabled.
             This may cause "CL_OUT_OF_RESOURCES" or related errors.
             To disable the timeout, see: https://hashcat.net/q/timeoutpatch
nvmlDeviceGetCurrPcieLinkWidth(): Not Supported

nvmlDeviceGetClockInfo(): Not Supported

nvmlDeviceGetClockInfo(): Not Supported

nvmlDeviceGetTemperatureThreshold(): Not Supported

nvmlDeviceGetTemperatureThreshold(): Not Supported

nvmlDeviceGetUtilizationRates(): Not Supported

OpenCL API (OpenCL 1.2 CUDA 9.1.84) - Platform #1 [NVIDIA Corporation]
======================================================================
* Device #1: GeForce GTX 560 Ti, 704/1024 MB (256 MB allocatable), 8MCU

I no longer have any expectations to see it work, knowing now that it requires CUDA 9. But that's related to using CUDA runtime rather than Open CL if I am not mistaken. The reason it totally fails to work at all, even in Open CL mode (the fallback mode) seems to be related memory limitations of the GPU. There is only 1 GB of GDDR5.

Code:
* Device #1: Not enough allocatable device memory for this attack.

I'm not sure why it works in 3.0, 4.0 and 5.0 then. Version 3.0 is also using Open CL.

Code:
hashcat (v3.00-1-g67a8d97) starting...

OpenCL Platform #1: NVIDIA Corporation
======================================
- Device #1: GeForce GTX 560 Ti, 256/1024 MB allocatable, 8MCU
- Device #1: WARNING! Kernel exec timeout is not disabled, it might cause you errors of code 702
            See the wiki on how to disable it: https://hashcat.net/wiki/doku.php?id=timeout_patch

Note that 6.2.5 indicated that 704/1024 MB is allocatable, compared to 256/1024 MB for 3.0. This seems contradictory, for it would seem as if the current version requires more GPU memory. I don't know how much more or why the latest version would need more memory, but 2 GB would seem like a good minimum to look for in a new budget or outdated GPU for use with Hashcat.

Correction: The reason 6.2.5 doesn't work with GTX 560 Ti is more likely because of Open CL. Does 6.2.5 require Open CL 1.2? I see it listed in the string "OpenCL 1.2 CUDA 9.1.84" when Hashcart 6.2.5 is started. If this is the case then it would make sense why it fails, if the GTX 560 Ti only has Open CL 1.1 support. So it can't use CUDA and it can't use Open CL, and therefore it will not work.
Reply