Intel i7 with 8 cores - just one core computing
#1
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
Reply
#2
read the --help output and see how the different supported device types can be enabled (--opencl-device-types or short -D, uppercase D)
Code:
-D 1,2

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.
Reply
#3
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
Reply
#4
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")
Reply