Skip to content
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

GraphBLAS: Support jitifyer without CMake for MinGW #513

Merged
merged 1 commit into from
Nov 11, 2023

Conversation

mmuetzel
Copy link
Contributor

These modifications make the JIT compiler work without CMake for me using MinGW compilers (from MSYS2).
I don't know enough about MSVC. So, I left it at using CMake.

With those changes, I see the following timings for the ctests of LAGraph:

  • first run: Total Test time (real) = 170.06 sec
  • second run: Total Test time (real) = 17.82 sec

Compared to without the patch:

  • first run: Total Test time (real) = 647.04 sec
  • second run: Total Test time (real) = 19.04 sec

So, it significantly speeds up the first run. (The difference in the respective second runs is probably "random". Maybe caused by different load or alike.)

I believe this should still work on Linux or macOS without any noticeable difference. But I didn't actually try.

Some of these changes are pretty MSYS2-specific (e.g., fixing relocation issues). So, I'd understand if you prefer not to take it (or only take parts?). In that case, I'd propose a similar patch to MSYS2 that could be applied downstream when building GraphBLAS for distribution.
It would be easier though if MSYS2 wouldn't need to maintain a separate patch.

@DrTimothyAldenDavis
Copy link
Owner

Looks great! I'll merge it in and then give it a try on my various Linux systems and Macs (I have both an Intel Macbook and an M1 Macbook).

The LAGraph ctests can still pass even if there's a compiler error. If the kernel doesn't compile, I assume it's some sort of error in the user-defined type or operator. Or it might be a broken flag or something. If that happens, I can still go forward and do the work in the generic kernel instead, and I turn off the JIT so the compiler errors don't keep happening, as a fallback.

So I'll need to check it out carefully to make sure it doesn't break on Linux/Mac. It looks fine, but if something comes up I can always #ifdef it back to the original for Linux/Mac, and this your updates for MinGW / MSYS2.

@DrTimothyAldenDavis DrTimothyAldenDavis merged commit 19f1109 into DrTimothyAldenDavis:dev2 Nov 11, 2023
21 checks passed
mmuetzel added a commit to mmuetzel/SuiteSparse that referenced this pull request Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants