openwall / openwall/john

Way to specify GWS as multiple of INT32 core count

Open
#4,959 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement RFC / discussion
Dominant language
C
Stars
13.6k
Forks
2.6k
PR merge metrics
No merged PRs in 30d

Description

When working with multiple GPUs of the same architecture but different size, it can be handy to specify e.g. GWS=x12. That way, e.g. GTX 1080 would get GWS=30720, newer GTX 1060 would get GWS=15360, older GTX 1060 would get GWS=13824. The same approach would also work e.g. across different AMD GCN GPUs.

And that all without needing to keep the GPUs' individual properties in mind all the time, yet without leaving this to chance each time either. It's also usable with --fork. Kind of middle ground between full manual specification per-GPU and auto-tuning.

This is also handy when consulting others about optimal and consistent use of GPUs.

To make this feature easier to use, we'd also add reporting of the GWS in this form, e.g.:

LWS=128 GWS=40960 (cores x16)

To ease copy-paste of either form, we could even do:

GWS=x16 LWS=128 GWS=40960

(yes, with LWS in the middle), but that's probably confusing?

In either output format, when the GWS is somehow not a multiple of INT32 core count, perhaps suppress that part of the reporting?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the existing GWS parsing, GPU core-count handling, and workload-size reporting paths. Define how an xN value should be calculated across GPU types, how it interacts with --fork, and when reporting should suppress the multiplier; done means consistent parsing and output for the examples in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.