-
Notifications
You must be signed in to change notification settings - Fork 447
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
Create "Apple" GPU scheduling group #5036
Comments
This is definitely worth doing if it's possible to run OpenCL apps on the M1 GPU. |
At PrimeGrid, we have genefer22 built for both the M1 CPU and GPU using OpenCL. Some of us were also successful in using app_info to run the GPU version by requesting CPU tasks while swapping out the genefer22 binaries. |
Nice! When you run BOINC on an M1 Ultra, does it detect the GPU as an OpenCL device? (I don't have a Mac to test on). |
It does! See this host http://www.primegrid.com/show_host_detail.php?hostid=1143842 In the boinc logs, we see something along the lines of |
It looks like we can handle this exactly like Intel GPUs. @CharlieFenton, I'm happy to do this unless you want to. |
@davidpanderson Please go ahead and take care of it. BOINC reports my M1 GPU as:
This computer has 16GB RAM. It appears the |
You're right, the Apple Silicon SoCs uses a unified memory architecture where both CPU and GPU use the same RAM |
Do scheduler requests request work for the M1 GPU? If so, maybe no client changes are needed |
The
and the event log show this when requesting work:
To answer your questions, yes... maybe. I think GPU work is being requested and that the vendor name is |
Currently there are three hardcoded scheduling groups for GPUs, Nvidia, AMD, and Intel.
When a Mac requests a task for GPU, it does so as an unknown vendor and includes the full description; ie "Apple M1"
The server must know "Apple M1" as a coprocessor in order to send tasks. However, there's now an Apple M1 Max, M1 Pro, M1 Ultra, M2... with more to come. On the server side, each of these must be individually hard coded; currently 8(?) with the probability of continuous changes in the future.
If "Apple" was also a scheduling group, all Mxxxxx GPUs would be lumped together by the client as "Apple GPU" and the server would only have one "thing" to deal with. I realize this requires a change to both client and server, and would only work with those running up-to-date code on both sides, but it would be an improvement. At the least, a project could say "if you're running a Mac M3 ProUltraMaxExtreme or newer, you must use BOINC 7.22.7 or later" instead of having a list a mile long.
The text was updated successfully, but these errors were encountered: