Message boards :
Graphics cards (GPUs) :
app_config.xml
Message board moderation
| Author | Message |
|---|---|
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: You can use <app_config.xml> two tasks to run on a GPU, if so, what is the name of the project or projects to set app_config GPUGRID correctly in "<name>??????? </ name> " in BOINC 7.0.54 |
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: Solved, by trial and error. Is: "acemdshort" for short tasks and suppose to be the equivalent long. |
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: So far works perfectly running two GPU tasks (tasks GTX590x4) plus 1 CPU per task. We'll see if the performance is worth a whole ...?. |
|
Send message Joined: 17 Aug 08 Posts: 2705 Credit: 1,311,122,549 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
We'll see if the performance is worth a whole ...?. Probably not.. it hasn't been up to now. And make sure not to miss the early-return-credit-bonus (24h) due to running 2 WUs/GPU. MrS Scanning for our furry friends since Jan 2002 |
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: In the first tasks undertaken by configuring TWO tasks per GPU the result is not very encouraging. The gain in execution time is an average of 5%, that's something but not enough for me. Obviously only applies to short tasks to keep the bonus. In other projects like WCG gain is 30% on average, I guess in GPUGRID GPU load is already highly optimized and there is no room. |
skgivenSend message Joined: 23 Apr 09 Posts: 3968 Credit: 1,995,359,260 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Thanks for reporting on your trial Carlesa25; it confirms the status quo. In the past, I've tested this to exhaustion and at GPUGRID there is little or no gain unless GPU utilization drops below 80%. Even then there's only a moderate increase unless utilization drops to around 60%. A subsequent concern is the number of different task types run at GPUGRID; typically there are two or three, but sometimes more, so any gain would only apply when you get two similarly low GPU utilizing tasks. While it's been demonstrated that you can mix apps from different projects and achieve better overall Boinc credits, it's very high maintenance and not something for the novice (not saying you are). As the project is largely Beta testing, it's really a bad time to be testing app_* and or overclocking. FAQ's HOW TO: - Opt out of Beta Tests - Ask for Help |
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: I still have some testing to confirm results, for which the interested reader this is the configuration file app_config.xml replaced in the project directory GPUGRID. <app_config> <app> <name>acemd2</ name> <max_concurrent>4</ max_concurrent> <gpu_versions> <gpu_usage>.5</ gpu_usage> <cpu_usage>1</ cpu_usage> </gpu_versions> </app> </app_config> Note that in order to work with the two types of short tasks become the name "acemd2" instead of "acemdshort" discussed above. With this configuration we perform two tasks per GPU and CPU by assigning a task, in this case it is a GTX590 performing 4 tasks using two GPUs and 4 CPUs. Greetings. |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
I'll chime in with my information. I have 2 nVidia GPUs (GTX 660 Ti, and GTX 460). When I watch some of the GPUGrid tasks run, I notice that some of them use a CPU all of the time, some tasks only use a CPU part of the time, and some don't really use much CPU. Also, the GPUGrid processes appear to have been tweaked such that the base priority is "Below Normal", which is above "Low" (which CPU tasks use). With that in mind, since I have 2 video cards and care very much about my other CPU projects, I have decided to use the following app_config.xml. Essentially, I've set it up with 0.499 for cpu_usage, so that even when both video cards are crunching GPUGrid tasks, my CPUs are still kept busy. The GPUGrid projects still get all the CPU they'd need/want (because their base priority is special), and when I happen to get GPUGrid tasks that don't use much CPU, my CPU tasks pick up the slack (Since 0.499 + 0.499 < 1.000, meaning that a CPU core is NOT reserved for GPUGrid)... and the result is always 100% CPU utilization. I hope you understand that logic. It works well for me. <app_config>
<app>
<name>acemdbeta</name>
<max_concurrent>50</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.499</cpu_usage>
</gpu_versions>
</app>
<app>
<name>acemdlong</name>
<max_concurrent>50</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.499</cpu_usage>
</gpu_versions>
</app>
<app>
<name>acemd2</name>
<max_concurrent>50</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.499</cpu_usage>
</gpu_versions>
</app>
<app>
<name>acemdshort</name>
<max_concurrent>50</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.499</cpu_usage>
</gpu_versions>
</app>
</app_config>
PS: To figure out application names for a given project, you could look at the client_state.xml file. You might also be able to look at the scheduler request xml file for that information. |
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: "<max_concurrent>50</max_concurrent>" this means that can perform 50 tasks simultaneously ... but assigns only one GPU, I do not understand this configuration. |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
I believe <max_concurrent> means "run up to this many tasks at once, of this application, across your entire computer" Since I only have 2 GPUs, and I'm only running 1 task per GPU, I could theoretically set it as low as 2 and it wouldn't have any effect. I just put it to 50 to ensure it never limits me, and to satisfy the spec found at http://boinc.berkeley.edu/trac/wiki/ClientAppConfig. Though I'm told the <max_concurrent> line can be omitted, I'd prefer not to risk it, so I just set it arbitrarily high, to 50. It's the <gpu_usage> and <cpu_usage> settings that determine how many tasks run at the same time on a given GPU, and how much CPU each task takes. Make sense? Come to think of it, in case I add more GPUs in the future, I'll probably go ahead and set <cpu_usage> arbitrarily low, to 0.001, for each of the apps, that way even if I had 3+ GPUs, a CPU core would never be reserved. |
|
Send message Joined: 17 Aug 08 Posts: 2705 Credit: 1,311,122,549 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Make sense? Yes. Come to think of it, in case I add more GPUs in the future, I'll probably go ahead and set <cpu_usage> arbitrarily low, to 0.001, for each of the apps, that way even if I had 3+ GPUs, a CPU core would never be reserved. I understand CPU projects are important for you.. but this could starve (some of) your GPUs running GPU-Grid. Feel free to test it, though, and report your findings here! MrS Scanning for our furry friends since Jan 2002 |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
I have tested it already. While watching Task Manager's Details tab, sorted by CPU descending, I see that the acemd process is never starved for CPU, even though other running CPU tasks are (at times) starved. This is because the acemd process is running at a higher priority; the "base priority" column shows "Below normal" for the acemd task, which is higher than the "Low" priority that the CPU tasks get. Process Explorer also confirms that the GPUGrid process is running priority 6, whereas the CPU tasks are running priority 4. So, even though the computer is a bit overloaded (especially when a GPUGrid task actually does use a CPU core most of the time), only CPU projects are getting starved. And my CPU is always at 100% usage. It works wonderfully. So, now my app_config.xml file is: <app_config>
<app>
<name>acemdbeta</name>
<max_concurrent>9999</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.001</cpu_usage>
</gpu_versions>
</app>
<app>
<name>acemdlong</name>
<max_concurrent>9999</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.001</cpu_usage>
</gpu_versions>
</app>
<app>
<name>acemd2</name>
<max_concurrent>9999</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.001</cpu_usage>
</gpu_versions>
</app>
<app>
<name>acemdshort</name>
<max_concurrent>9999</max_concurrent>
<gpu_versions>
<gpu_usage>1</gpu_usage>
<cpu_usage>0.001</cpu_usage>
</gpu_versions>
</app>
</app_config>
|
|
Send message Joined: 15 May 11 Posts: 108 Credit: 297,176,099 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Carlesa25; I tried using your app_config.xml example to run 2 WU per GPU on 2x GTX 590 for acemdlong WU. I'm using BOINC 7.0.52. I still get only 1 WU per GPU running. I put the app_config.xml in the GPUGrid.net project directory. Any suggestions? Thanks, Operator |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Assuming you have the app_config.xml file in the right location (mine is within the folder: C:\ProgramData\BOINC\projects\www.gpugrid.net) You'll have to get BOINC to read the file, either by
Restarting BOINC
|
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: As JacobKlein says should work. To ensure your app_config.xml fits all short tasks <name> can put two lines with each of their names is: <app_config> <app> <name>acemd2</ name> <name>acemdshort</ name> <max_concurrent>4</ max_concurrent> <gpu_versions> <gpu_usage>.5</ gpu_usage> <cpu_usage>1</ cpu_usage> </gpu_versions> </app> </app_config> With this configuration must be able to run two GPU tasks and assign each task a CPU for short (unless they change the names). Regards |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: As JacobKlein says should work. Umm, as far as I know, you are NOT USING THE XML CORRECTLY. Here's the documentation: http://boinc.berkeley.edu/trac/wiki/ClientAppConfig Each application needs to have its own <app> block. You are not supposed to put multiple <name> blocks within an <app> block. A good starting point would be to - use this code block below - save it to your www.gpugrid.net project directory as a file called app_config.xml - instruct BOINC to read it (by using Advanced -> Read config file, or by restarting BOINC) - look for the message in the Event Log for the GPUGrid project that says "Found app_config.xml" to verify BOINC saw it - then tweak only the <gpu_usage> and <cpu_usage> lines, to tell BOINC how much resources each application's tasks take - instruct BOINC to read it again, any time you make a change to it <app_config> <app> <name>acemdbeta</name> <max_concurrent>9999</max_concurrent> <gpu_versions> <gpu_usage>1</gpu_usage> <cpu_usage>0.001</cpu_usage> </gpu_versions> </app> <app> <name>acemdlong</name> <max_concurrent>9999</max_concurrent> <gpu_versions> <gpu_usage>1</gpu_usage> <cpu_usage>0.001</cpu_usage> </gpu_versions> </app> <app> <name>acemd2</name> <max_concurrent>9999</max_concurrent> <gpu_versions> <gpu_usage>1</gpu_usage> <cpu_usage>0.001</cpu_usage> </gpu_versions> </app> <app> <name>acemdshort</name> <max_concurrent>9999</max_concurrent> <gpu_versions> <gpu_usage>1</gpu_usage> <cpu_usage>0.001</cpu_usage> </gpu_versions> </app> </app_config> If you wanted 2 tasks to run on a single GPU, I'd recommend changing the <gpu_usage> and <cpu_usage> lines to say: <gpu_usage>0.5</gpu_usage> <cpu_usage>0.001</cpu_usage> |
Carlesa25Send message Joined: 13 Nov 10 Posts: 328 Credit: 72,619,453 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Hello: It sure can put multiple labels <name>. Naturally provided <gpu_usage> and <cpu_usage> parameters are the same for the aforementioned tasks. In my case as short tasks using both names are <name>acemd2</name> <name>acemdshort</name> So I cover the two variants. For long I see interesting tasks execute more than one task per GPU. <cpu_usage>0.001</cpu_usage> continued without understanding this configuration. He says to use only one thousandth of CPU for each task, but in reality what will send the "priority" that the task is assigned by default to the OS (low, medium, high, etc ...) Using Ubuntu 10.12-64bits not if Windows responds differently, but really what matters is what each one would work. Greetings. |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Carlesa, I know what I'm talking about, and your syntax is wrong. I've done some local testing on my machine to conclusively prove it, too. Basically, by supplying multiple <name> tags within the same <app> block, the program only applies the requested <gpu_usage> and <cpu_usage> tags to the LAST <name> tag that was provided. The prior <name> tags are essentially ignored. You can prove it by testing this, yourself. Please don't spread incorrect information. The correct syntax is the one that I've provided, where the different apps each have their own <app> block, and each <app> block only has 1 <name> tag. Thanks, Jacob |
|
Send message Joined: 17 Aug 08 Posts: 2705 Credit: 1,311,122,549 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
I have tested it already. While watching Task Manager's Details tab, sorted by CPU descending, I see that the acemd process is never starved for CPU, even though other running CPU tasks are (at times) starved. So the ACEMDs are still grabbing CPU time. Now the important question is: are they able to do this just at the right time to avoid the GPU running dry, i.e. does GPU performance suffer (I suppose so) and by how much? The latter would be needed for people to decide if this trade-off is worth it for them. Watching GPU utilization, maybe averaging it, would be a nice indicator. Although the best performance indicator would be WU runtimes for similar tasks. MrS Scanning for our furry friends since Jan 2002 |
|
Send message Joined: 11 Oct 08 Posts: 1127 Credit: 1,901,927,545 RAC: 0 Level ![]() Scientific publications ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
From what I can tell (and I admittedly do need to do some more testing), on my quad-core hyper-threaded (so windows sees 8 CPUs) machine, here's what I see: When the CPUs are under full load with other projects, a Long-Run NATHAN GPUGrid task gets about 86% GPU Load on my GTX 660 Ti FTW, while also using a full CPU core. When the CPUs are not under load (ie: I have set BOINC to use 0.01 % of the processors), a Long-Run NATHAN GPUGrid task gets about 90% GPU Load on my GTX 660 Ti FTW, while also using a full CPU core. Even though under full CPU load the ACEMD process isn't starved for CPU, I believe it is still "competing" for 2 things: 1) The process is running full blast, along with another process, hyper-threaded, on the same core. 2) If the number of active processes is larger than the 8 CPUs windows sees, there's context swapping that decreases performance. So, there is a trade-off, as you say. I think the best way to determine how to maximize GPUGrid performance, while not sacrificing CPU task performance, is to test running the GPUGrid tasks, at various levels of BOINC x% of the processors, and then comparing task run times. I haven't done this yet, and might not get around to it, as I believe that keeping the CPU busy outweighs slightly overloading the CPU and slightly sacrificing % GPU Load. Hope that makes sense. I'm due to get more memory for this machine in a week or so, which will help me to even better ensure that the 8 CPU slots remain filled. I *might* get around to doing the tests mentioned above, maybe. PS: I find it a bit odd that, when a Long-Run NATHAN task is processing on the GTX 660 Ti, the ACEMD process uses a full CPU, yet when a Long-Run NATHAN task is processing on the GTX 460, the ACEMD process doesn't appear to use much CPU at all. Does that really depend on the GPU card's architecture? If so, then it's great that I'm using 0.001 <cpu_usage>; better to assume it's NOT using a CPU, than to assume it is. |
©2025 Universitat Pompeu Fabra