-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
o5logon-opencl: Support Oracle 12 #5749
base: bleeding-jumbo
Are you sure you want to change the base?
o5logon-opencl: Support Oracle 12 #5749
Conversation
88325f1
to
bb37248
Compare
5e8cc4d
to
bceeae0
Compare
I added conf options. IMO it can now be kept in this PR.
Also added these in same commit:
Perhaps the ptax info should default to |
0e12f95
to
add5c3c
Compare
This suppresses messages like "(): Warning: Function zip_final is a kernel, so overriding noinline attribute. The function may be inlined when called." unless verbosity is bumped. A configuration is added, "MuteBogusNvidiaWarnings = N", for not muting. We take care to only mute the exact message (bar the function name). Closes openwall#5456. Two other configuration options added (but default to old behavior): NvidiaShowPtxas = Y AlwaysShowBuildWarnings = N
add5c3c
to
3a5c55a
Compare
Pro-tip: For POCL, you get much better crash info after adding |
3a5c55a
to
ab4b0c1
Compare
I think I squashed it. Need to test more, and also check if other formats with that keybuffer packing method have the same problem, never surfaced. |
Also implements internal mask, for a 3-4x boost. Closes openwall#5648
ab4b0c1
to
eeb7ba4
Compare
It seems fine now. Other formats may or may not have been affected (it should often be triggered in self tests, which apparently didn't happen) but I added safety checks in #5750 anyway. |
This breaks build on some other platforms though, such as nvidia, so need to be used selectively. |
So I think we can add it automatically inside diff --git a/src/opencl_common.c b/src/opencl_common.c
index 87dea222b..004a64f7a 100644
--- a/src/opencl_common.c
+++ b/src/opencl_common.c
@@ -1136,8 +1136,11 @@ static char *get_build_opts(int sequential_id, const char *opts)
global_opts = OPENCLBUILDOPTIONS;
snprintf(build_opts, LINE_BUFFER_SIZE,
- "-I opencl %s %s%s%s%s%s%d %s%d %s -D_OPENCL_COMPILER %s",
+ "-I opencl %s %s%s%s%s%s%s%d %s%d %s -D_OPENCL_COMPILER %s",
global_opts,
+ options.verbosity >= VERB_LEGACY &&
+ get_platform_vendor_id(get_platform_id(sequential_id)) ==
+ PLATFORM_POCL ? "-g " : "",
get_device_version(sequential_id) >= 200 ? "-cl-std=CL1.2 " : "",
#ifdef __APPLE__
"-D__OS_X__ ", |
True, like for -v:6 (debug) and above. Theoretically we could also auto-detect support for it, autoconf style 🤣 |
It now fails self-test on Super's Vega, but at least it doesn't bring the entire machine down now 👀 The format worked fine before this PR. would have been nicer the other way around. Had 250927K c/s before, now (running with Tried several other little tricks to no avail. Giving up on that. |
Also implements internal mask, for a 3-4x boost (due to "packed" key buffer it was pretty good already).
Closes #5648
The "Mute stupid warnings" commit (#5456) will be dropped before merging (I could make a separate PR after adding a conf option for it). It strips the idiot warnings while retaining any relevant warnings (mutes the warning entirely if there were no relevant ones).
As of now, there's a bug in here. I have stared at the code for days, can't find it. Things behave weird - segfaults and such, on any device (including super's AMD that brings down the entire host). Debugging sometimes show super weird stuff that I can't draw any conclusions from.Switching to the alternative (bitsliced) AES code sometimes move the problem around, or nearly hides it.
Running at LWS=1 sometimes helps a little or a lot. Everything points to a buffer overflow, except I can't find any, ASan can't either, and under ASan there's no nvidia device to be seen. A backtrace nearly always points to opaque OpenCL runtime stuff only.The o5logon stuff should ideally have been two commits, one for separating shared code and one for internal mask. But it's all too tangled to be fixed in retrospect.