-
Notifications
You must be signed in to change notification settings - Fork 162
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
WIP: Making HPC-GAP work with Julia #3734
base: master
Are you sure you want to change the base?
Conversation
8fcadc1
to
a8da44c
Compare
The last commit message is "Make HPC-GAP guards work without Ward" -- but HPC-GAP already works without ward, and has done so for months. Perhaps "Change HPC-GAP to use the unward tool" or something like that could be used instead. |
I think a bit of subtlety got lost here. I had changed the message to "Make HPC-GAP guards work without Ward" (emphasis on guards); I had inserted "guards" as a result of your earlier suggestion to change the commit message. HPC-GAP did work without Ward, guards didn't. If you think that this still doesn't describe the commit well, I think adding a longer explanation would be better than trying to squeeze an adequate description into a single line. |
a8da44c
to
a8fffd6
Compare
a8fffd6
to
b01a691
Compare
These existed to assist Ward's data flow analysis and serve no purpose without Ward.
This also adds some missing memory barriers.
b01a691
to
9f0f60d
Compare
8ec2d9a
to
e13cfb5
Compare
This is still very raw and has a number of hacks (such as using
calloc()
forAllocateMemoryBlock()
). The PR is currently an FYI/progress tracker, as a lot of the implementation is still subject to change. It also relies on previous HPC-GAP related PRs (namely #3502 and #2845).Aside from making HPC-GAP work with Julia, it also aims at allowing HPC-GAP to be used as a library (which is necessary for GAP.jl, but also allows other code to link to it).
It currently runs only with
gap --single-thread
, asCreateThread()
is disabled due to limitations in Julia. (It's also not a priority, as we are currently more concerned with calling GAP from Julia rather than having yet another GC for GAP.)Configuration needs to happen with:
Remaining issues that I am working on are:
RunThread()
andDispatchThread()
.AllocateMemoryBlock()
; this may require an internal API change for that function to permit a type parameter.AllocateMemoryBlock()
presumes that a conservative GC is being used, which may not be the best decision, anyway.CreateThread()
work via the task system (Julia only recognizes its own preallocated threads, all other thread activity needs to be mapped to Julia tasks that are then being run by threads. This is how the Julia macro@threads
works, for example.).