Posts: 2
Threads: 1
Joined: Jul 2020
Hi,
i'm running hashcat 6.0.0 on an Ubuntu 16.04 box with an Intel i7 with 8 cores. While seraching for passwords with hashcat just one cpu is computing, the others are idle. Additionally i have a Geforce GTX 1050, which is computing.
I installed Intel® CPU Runtime for OpenCL, and hashcat -I recognizes my CPU.
What can i do that also the other cores are crontibuting ?
Bernd
Posts: 2,267
Threads: 16
Joined: Feb 2013
read the --help output and see how the different supported device types can be enabled (--opencl-device-types or short -D, uppercase D)
it's not always guaranteed that the CPU makes much of a difference and that the overall speed is much faster when enabling CPU AND GPU. It depends on many factors, but if all your CPU cores are busy cracking hashes, you could have a counterproductive effect i.e. that your host/CPU can't keep up with provinding your GPU(s) enough work if all CPU cores are busy. Again, it depends a lot and you could just test it and see how the speed changes.
Posts: 2
Threads: 1
Joined: Jul 2020
Hi,
thanks for your help.
I'm struggling with the output of hashcat -I:
CUDA Info:
==========
CUDA.Version.: 11.0
Backend Device ID #1 (Alias: #2)
Name...........: GeForce GTX 1050
Processor(s)...: 5
Clock..........: 1455
Memory.Total...: 1999 MB
Memory.Free....: 1424 MB
OpenCL Info:
============
OpenCL Platform ID #1
Vendor..: NVIDIA Corporation
Name....: NVIDIA CUDA
Version.: OpenCL 1.2 CUDA 11.0.185
Backend Device ID #2 (Alias: #1)
Type...........: GPU
Vendor.ID......: 32
Vendor.........: NVIDIA Corporation
Name...........: GeForce GTX 1050
Version........: OpenCL 1.2 CUDA
Processor(s)...: 5
Clock..........: 1455
Memory.Total...: 1999 MB (limited to 499 MB allocatable in one block)
Memory.Free....: 1408 MB
OpenCL.Version.: OpenCL C 1.2
Driver.Version.: 450.36.06
OpenCL Platform ID #2
Vendor..: Intel(R) Corporation
Name....: Intel(R) CPU Runtime for OpenCL(TM) Applications
Version.: OpenCL 2.1 LINUX
Backend Device ID #3
Type...........: CPU
Vendor.ID......: 8
Vendor.........: Intel(R) Corporation
Name...........: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
Version........: OpenCL 2.1 (Build 0)
Processor(s)...: 8
Clock..........: 3400
Memory.Total...: 64286 MB (limited to 16071 MB allocatable in one block)
Memory.Free....: 64222 MB
OpenCL.Version.: OpenCL C 2.0
Driver.Version.: 18.1.0.0920
It seems that i have two different OpenCL versions: one from CUDA (nVidia), one from Intel.
Is that a problem ?
And why is it reporting that the GeForce graphic adapter has 5 processors ?
In the net i found that it has 640 processors.
I try:./hashcat.bin -D 1,2 -m 7100 -a 3 macos.hash -1 ?l?u?d ?1?1?1?1?1?1
-D 1,2 shoud use GPU and CPU, right ?
Output:
CUDA API (CUDA 11.0)
====================
* Device #1: GeForce GTX 1050, 1424/1999 MB, 5MCU
OpenCL API (OpenCL 1.2 CUDA 11.0.185) - Platform #1 [NVIDIA Corporation]
========================================================================
* Device #2: GeForce GTX 1050, skipped
OpenCL API (OpenCL 2.1 LINUX) - Platform #2 [Intel(R) Corporation]
==================================================================
* Device #3: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 64222/64286 MB (16071 MB allocatable), 8MCU
All CPU cores are computing following top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8608 root 20 0 15,163g 788848 161644 S 722,3 1,2 16:47.64 hashcat.bin
You are right, it does not seem to be quicker.
What is the difference between a backend device and a OpenCL device ?
Thanks,
Bernd
Posts: 2,267
Threads: 16
Joined: Feb 2013
07-11-2020, 08:46 AM
(This post was last modified: 07-11-2020, 08:50 AM by philsmd.)
I'm not sure why you are confused about it, you actually stated above that:
1. "I installed Intel® CPU Runtime for OpenCL"
2. you have CUDA installed
3. you have installed the NVIDIA driver
so it's perfectly fine that there is:
1. an "Intel(R) Corporation" platform for your CPU and
2. the alias of CUDA vs OpenCL for your GPU (you can choose between them, but only select one, because it's the same physical hardware, just different compilers/runtimes, there are some "minor" differences between CUDA and OpenCL, NVIDIA itself tries to focus more on CUDA, so OpenCL isn't treated/pushed that well by NVIDIA)
5 MCU doesn't mean that the GPU has 5 cores, it's a different unit and it seems correct for a NVIDIA GTX 1050.
I'm not sure if I get your last question correctly. In general, a backend is a supported type of runtime/driver or better said a framework (a class of compilers/drivers/runtimes that support a specific GPGPU language), i.e. OpenCL or CUDA at the time of this writing. OpenCL is basically an instance of a backend, NVIDIA another one.
If your question instead is what the differences between --opencl-device-types and --backend-devices is, the question is very simple. The former can be used to whitelist different device types (like CPU, GPU, etc), while the latter is used to select the already whitelisted devices (e.g. "from the huge list of my whitelisted devices I only want to use #1 and #2")