Message boards :
Number crunching :
(0.892 CPUs + 1 Nvidia GPU)
Message board moderation
Author | Message |
---|---|
Send message Joined: 12 Nov 21 Posts: 236 Credit: 575,038,236 RAC: 0 |
What does this mean, exactly? The computer in question is 906873. Ryzen 9 3900x. All tasks are separation, no N body. On this computer, 1 CPU takes about 3,350 seconds/task. Task Computer Sent Time reported or deadline Status Run time(sec) CPU time(sec) Credit Application 145266798 906873 3 Mar 2022, 1:42:00 UTC 3 Mar 2022, 5:28:17 UTC Completed, waiting for validation 3,352.12 3,296.64 pending Milkyway@home Separation v1.46 windows_x86_64 On the other hand, the 0.892 CPUs + 1 Nvidia GPU combo takes about 590 seconds with CPU time of 176 seconds. The combo completes about 5.5 task for every stand alone CPU task. Task Computer Sent Time reported or deadline Status Run time(sec) CPU time(sec) Credit Application 143270781 906873 2 Mar 2022, 0:43:13 UTC 4 Mar 2022, 1:27:23 UTC Completed, waiting for validation 592.74 176.00 pending Milkyway@home Separation v1.46 (opencl_nvidia_101) windows_x86_64 So what does .892 CPUs really mean? Maybe it should really be (1-.892) or .118 CPUs? I find it hard to believe that the graphics card takes .892 CPUs/ per task, just for managing the GPU. Some MW wrinkle brain gonna need to teach this MW smooth brain a thang or 2, lol. |
Send message Joined: 16 Mar 10 Posts: 213 Credit: 108,362,278 RAC: 4,516 |
You did ask :-) ... The figures in a line like 0.0882 CPUs + 1 NVIDIA GPU are simply advice to the BOINC client as to the resources it will need to run a task. The scheduler in the client won't start more tasks at once if the sum of CPU resources asked for would be exceeded, but it rounds the sum down to the integer below... In this case, the way the program that uses the GPU is written means it shouldn't need the full capacity of a CPU to run so it uses an estimate of how much CPU time it thinks will be needed. If you were running Einstein@Home GPU work on an NVIDIA card, you'd find that it says 1 CPU + 1 NVIDIA GPU -- the standard Einstein GPU programs need a CPU core to themselves to achieve peak performance, and that's a core no longer available for another task... There are all sorts of tunings people do on the CPU value for GPU tasks, especially if they have powerful GPUs that can try to keep more than one task active on a single GPU simultaneously. But for Milkyway@Home you can't go far wrong just leaving the settings alone! Cheers - Al. P.S. You've already seen the significant difference in performance between CPU-only and GPU tasks - the Separation tasks for each type have the same amount of data to process so the CPU-only tasks are likely to take an order of magnitude longer. Some other projects don't do ,mixed GPU and CPU-only work... [Edited to add the footnote] |
Send message Joined: 12 Nov 21 Posts: 236 Credit: 575,038,236 RAC: 0 |
Thanks for the reply. I guess it is what it is.... I found out about the tuning after posting. As an experiment, MW on the Ryzen is now restricted by 1 cores' worth, percent wise, from full load. We will see how well that works, but preliminary data suggests that there is no GPU throughput improvement. The GPU in use is not a gaming unit, so I am not expecting a whole lot. It very definitely is fit for the use intended however, which is 2D drawings and graphs and stock trading in a multi monitor 1440p scenario. It may very well turn out that in this case it is best just to leave the settings alone! The motherboard supports 2 PCIe x16 graphics cards, so there may be a second GPU in the future! |
Send message Joined: 8 May 09 Posts: 3339 Credit: 524,010,781 RAC: 0 |
Thanks for the reply. If you do that there is a way to exclude the current gpu from crunching thru a cc_config.xml file |
Send message Joined: 12 Nov 21 Posts: 236 Credit: 575,038,236 RAC: 0 |
no change in the GPU throughput, so I removed the core restrictions. @ mikey, will look into that when the time comes. thanks. |
Send message Joined: 11 Mar 22 Posts: 42 Credit: 21,902,543 RAC: 0 |
I have a combination of a RTX 3060 Ti and a Ryzen 9 5950x CPU. I tried different configurations and there was no difference in performance (calculating time) for a GPU task between 1 CPU and 0.25 GPU as one setup an 0.5 CPU and 0.25 GPU in another setup. The time to finish a GPU task increased, when I did 0.5 CPU and 0.1 GPU (ten GPU tasks in parallel), but that is because the capacity of the RTX was exceeded. Seems that the CPU is not the driving factor, regardless if you assign a full CPU or only 0.5 CPU to a single GPU task. |
Send message Joined: 8 May 09 Posts: 3339 Credit: 524,010,781 RAC: 0 |
I have a combination of a RTX 3060 Ti and a Ryzen 9 5950x CPU. We users can NOT change the amount of cpu a gpu takes as it's pre-programmed in during the task making phase, so if it says it's using 0.892 of a cpu core than that's the maximum it will use during the time it crunches you process the task. By limiting the amount of cpu core available to the task you can actually make the task take longer to crunch as if you set it to 0.25% then it can't use the 0.892%, my earlier number, so has to wait for cpu time to process the next bit of data, or process the data slower. That's one reason Einstein grabs a cpu core just for it's gpu tasks if you crunch them, so we users don't say 'hey my task is 30% slower that his task on the same gpu'. |
Send message Joined: 24 Jan 11 Posts: 715 Credit: 555,442,744 RAC: 38,745 |
Common misconception of what the printed cpu usage in the gpu task definition actually means. The number is only for BOINC scheduling of available resources. The gpu task will use as much or as little cpu that it needs to compute and shove data to the gpu. The end-user has no control of the process. Only the developer of the app can control the value. Use BoincTasks or Top to see the actual amount of cpu that a gpu task is using. For example right now my MW Separation tasks on my GTX 1080 Ti is using only 0.532% of a cpu thread to process the task. The task scheduling definition is defined in my app_config.xml as 0.9 cpu_usage and 0.5 gpu_usage. You can also see for example that a Einstein OAS3 gpu task with a default 1.0 cpu_usage and 1.0 gpu_usage definition does in fact use as much as 120% of a cpu thread to compute the task on the gpu. Only the task application controls how much cpu support it needs to shovel data from memory into the gpu and shovel calculated data back out from the gpu to the result file on disk. |
Send message Joined: 24 Jan 11 Posts: 715 Credit: 555,442,744 RAC: 38,745 |
[Addendum] I am currently using 231% of a cpu to process a GPUGrid Python beta task right now. Stock scheduling usage defined for those tasks is 1.0 cpu. So in fact I am actually using a little more than two cpu threads to crunch the gpu task. |
©2024 Astroinformatics Group