Setting the Pace for Two Different GPUs

Jonathan Jeckell
Jonathan Jeckell
Joined: 11 Nov 04
Posts: 112
Credit: 512,344,801
RAC: 229,164
Topic 205331

I have two different GPUs in my main machine (if you really care why, see below*).  They seem to handle Einstein@home work units differently and certainly have different capacities and capabilities.

One is an NVIDIA GTX 960, and the other is an AMD R9 RX280X.  I'm hoping we'll see CUDA come back to this project because it seems to run much better on the NVIDIA card than OpenCL does.  

Einstein FGRP GPU units seem to use about half of my NVIDIA card's memory and processor capacity, while they use about a third of the R9 280X.  I had a ton of spare capacity going to waste, so I set my GPUs to run 2 GPU units on each concurrently in the preferences page.

The AMD card is *still* only using about half its capacity, while the NVIDIA card is maxed out.  Completion times for the NVIDIA units have more than doubled.

<Here's the Question:>

How would I build an app_info.xml to run these cards at different rates?  I understand the basics of how to build the app_info.xml, but not clearly on how to make it differentiate between the two cards.  All of the examples I've seen do the same thing to all of the GPUs uniformly.

I am guessing there is a way to use the name of the app for the respective GPU and for the GPU itself.  I'm concerned that by using an app_info.xml I will lose all my ongoing tasks if I get it wrong, that I will not get work if the app name changes (say from 1.17 to 1.18 or any of the Beta work), etc.

Thanks in advance for any advice, 

__________________________________________

* For those curious why I have two different kinds of GPUs: I was using CUDA here and when this project switched to OpenCL it seemed the AMD card had the potential for better OpenCL performance.  I am also learning how to develop GPU computing and machine learning projects, so I am trying to learn how to deal with both types of cards and use their relative advantages.

Zalster
Zalster
Joined: 26 Nov 13
Posts: 2,945
Credit: 3,099,410,079
RAC: 1,424,977

You can I believe.  You would

You can I believe.  You would have to include a <type>AMD</type> and <type>nvidia</type> for each with the commands following that for each in the app_config.xml

https://boinc.berkeley.edu/wiki/Client_configuration

I've never done it but I remember someone else brought it up and they were able to do it by specifying the different GPUs and how many were run on it.  I've been trying to find the thread but am coming up empty. 

solling2
solling2
Joined: 20 Nov 14
Posts: 126
Credit: 299,215,555
RAC: 661,573

By default, only the most

By default, only the most capable GPU should run in a BOINC project. Or does this apply only to machines with either two ati or two nvidia devices?

However, it may not be necessary to name devices because applications can be named as those are specific ( https://einsteinathome.org/de/apps.php?xml=1 ).

mmonnin
mmonnin
Joined: 29 May 16
Posts: 257
Credit: 693,543,406
RAC: 1,577,498

Zalster wrote:You can I

Zalster wrote:

You can I believe.  You would have to include a <type>AMD</type> and <type>nvidia</type> for each with the commands following that for each in the app_config.xml

https://boinc.berkeley.edu/wiki/Client_configuration

I've never done it but I remember someone else brought it up and they were able to do it by specifying the different GPUs and how many were run on it.  I've been trying to find the thread but am coming up empty. 

 

I have only used the type flag in cc_config to limit an app to certain cards (no Pascal support on another project). Does it work in app_config as well?

 

If you wanted you might be able to start up a second client which would get its own Project folder and app_config but I'm not sure if that would read a 2nd cc_config file to limit the client to one  of the two cards. I haven't tried that on my Goofy Boinc instances.

Jonathan Jeckell
Jonathan Jeckell
Joined: 11 Nov 04
Posts: 112
Credit: 512,344,801
RAC: 229,164

My machine is using both

My machine is using both cards, and is running two work units per card right now.  The NVIDIA card is maxed out (both memory and processor), but the AMD still looks like it can handle much more.

So no, BOINC doesn't appear to run only the most capable GPU--it's running both, but running both with the same settings.

Jonathan Jeckell
Jonathan Jeckell
Joined: 11 Nov 04
Posts: 112
Credit: 512,344,801
RAC: 229,164

solling2 wrote: However, it

solling2 wrote:

However, it may not be necessary to name devices because applications can be named as those are specific ( https://einsteinathome.org/de/apps.php?xml=1 ).

That is an intriguing technique.  I'll give that a shot.  However, I'm still concerned about keeping up with version changes (i.e. if I have it set for 1.17 and 1.18 comes out, or Beta work, etc.)

Jonathan Jeckell
Jonathan Jeckell
Joined: 11 Nov 04
Posts: 112
Credit: 512,344,801
RAC: 229,164

I got a syntax error with my

I got a syntax error with my app_info.xml and it dumped all of my tasks.  I'm not spotting the error...

<app_config>

<app> <name>FGRPopencl-nvidia-mav</name> <gpu_versions> <gpu_usage>1</gpu_usage> <cpu_usage>1</cpu_usage> </gpu_versions> </app> <app> <name>FGRPopencl-ati-mav</name> <gpu_versions> <gpu_usage>.25</gpu_usage> <cpu_usage>1</cpu_usage> </gpu_versions> </app> </app_config>  And am I supposed to use decimals for the GPU usage, and will "1" give reserve the correct amount of CPU to support this? 

Holmis
Joined: 4 Jan 05
Posts: 974
Credit: 651,776,800
RAC: 863,700

I read this thread after

I read this thread after posting a reply to the same question here: https://einsteinathome.org/content/configuring-several-machines-appconfigxml-file

Forget using a app_info.xml and cc_config.xml is for configuring the core client and not project apps.

As always read the instructions (http://boinc.berkeley.edu/wiki/Client_configuration#Application_configuration) and if you don't understand them then do as you did here, ask about it and someone will come along to give a helpful answer.

Jonathan Jeckell
Jonathan Jeckell
Joined: 11 Nov 04
Posts: 112
Credit: 512,344,801
RAC: 229,164

Holmis wrote:. As always

Holmis wrote:

.

As always read the instructions (http://boinc.berkeley.edu/wiki/Client_configuration#Application_configuration) and if you don't understand them then do as you did here, ask about it and someone will come along to give a helpful answer.

I did read the instructions and your other post, but am not clear by what you meant by "forget app_info.xml and cc_config.xml is for configuring the core client and not project apps."

I could have it confused with something else, but app_info.xml is what I've placed in my SETI project folder to control things like this, such as using optimized apps.  

So again, I did read the instructions, but this is the first time I've tried to do this on Einstein@home and the other way works for some reason on SETI.

Holmis
Joined: 4 Jan 05
Posts: 974
Credit: 651,776,800
RAC: 863,700

cc_config.xml controls how

cc_config.xml controls how Boinc behaves, ie logging options, using all available GPUs instead of only the most capable. <- you only need this to make sure Boinc uses all of your GPUs if you have more than 1 GPU in the same computer.

app_info.xml is used if you want to provied your own apps instead of the project supplied apps, ie using optimized apps released by a 3rd party. <- No need to use this with Einstein@home, there are no 3rd party apps.

app_config.xml is used to control the project supplied apps, ie running x2 or more on GPUs. <- This is what you want to use.

Follow my example in the other thread, copy the example given from <app_config> to </app_config> into a simple text editor. Then replace the contents of <plan_class> to the appropriate plan class given by the applications page linked.
For controlling multiple plan classes your should end up with something like this:

<app_config>
 <app_version>
    <app_name>hsgamma_FGRPB1G</app_name>
    <plan_class>FGRPopencl1K-nvidia</plan_class>
    <avg_ncpus>1</avg_ncpus>
    <ngpus>0.5</ngpus>
 </app_version>
 <app_version>
    <app_name>hsgamma_FGRPB1G</app_name>
    <plan_class>FGRPopencl1K-ati</plan_class>
    <avg_ncpus>1</avg_ncpus>
    <ngpus>0.5</ngpus>
 </app_version>
</app_config>

Edit the above to suite your needs (change plan class, avg_ncpus and ngpus) and save as app_config.xml in the einstein@home project directory and make sure it doesn't have a .txt appended to it.

Then make Boinc "read config files" via Options -> Read config files and you should be set.

Jonathan Jeckell
Jonathan Jeckell
Joined: 11 Nov 04
Posts: 112
Credit: 512,344,801
RAC: 229,164

I appreciate the

I appreciate the clarification.  That explains the purpose of each of those control files much more clearly.

I'm still working through this though.  Each time I do it BOINC spits out an error on the plan_class.  I used the names you provided, tried using the ones here https://einsteinathome.org/apps.php?xml=1 and most recently tried to use the actual application names for the executable in the project folder on my hard drive.  

This https://boinc.berkeley.edu/wiki/Client_configuration#Application_configuration isn't terribly explicit on what exactly should go in the plan_class and I'm going to simply try NVIDIA and ATI, or try it without plan_class altogether and figure out where else I can differentiate the two.

I do appreciate all your patience and help so far though.  Thank you for taking the time.

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.