How to run CPU and GPU apps?


Message boards : Number crunching : How to run CPU and GPU apps?

Message board moderation

To post messages, you must log in.
AuthorMessage
Profile Eugene Stemple

Send message
Joined: 17 Nov 14
Posts: 13
Credit: 6,252,543
RAC: 1,259
Message 3942 - Posted: 14 Jan 2015, 6:06:58 UTC
O.K., Mikey, I see that I can restrict applications to either CPU or NVIDIA (or both) but... there are three different CPU applications, i.e. AVX, SSE2, and SSE3. The relative performance numbers, from Application Details, are: AVX@112 Gflops; SSE2@171 Gflops; and SSE3@138 Gflops.

So, obviously it would be better to run the SSE2 app. And that is what I was trying to get at. Assuming I have selected "Use CPU = yes" then how could I specify just SSE2 work?

At the moment the task buffer has 47 work units, 19 of them are NVIDIA (cuda 55) and all of the remaining 28 are CPU - SSE3. Not a single SSE2 among them! Even though they would run 24% faster. Maybe I should just be happy I don't get AVX tasks. When I first joined this project I got some of each type, so it's not a "supported feature" issue.

I really don't mind the mix of CPU and NVIDIA. It's just that there's a better chance of a CPU core (of 4) being available than the single NVIDIA device when sharing resources with multiple projects. Hmmmm, but the more I think about it the more it makes sense to "Use NVIDIA GPU = no" because of the very small speedup of the NVIDIA vs. the CPU.
ID: 3942 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile mikey
Avatar

Send message
Joined: 1 Jan 14
Posts: 300
Credit: 32,391,030
RAC: 5,621
Message 3943 - Posted: 14 Jan 2015, 12:11:32 UTC - in response to Message 3942.  

Last modified: 14 Jan 2015, 12:18:52 UTC
O.K., Mikey, I see that I can restrict applications to either CPU or NVIDIA (or both) but... there are three different CPU applications, i.e. AVX, SSE2, and SSE3. The relative performance numbers, from Application Details, are: AVX@112 Gflops; SSE2@171 Gflops; and SSE3@138 Gflops.

So, obviously it would be better to run the SSE2 app. And that is what I was trying to get at. Assuming I have selected "Use CPU = yes" then how could I specify just SSE2 work?


Thru the cc_config.xml file you can tweak which kind of file runs on your pc.

I really don't mind the mix of CPU and NVIDIA. It's just that there's a better chance of a CPU core (of 4) being available than the single NVIDIA device when sharing resources with multiple projects. Hmmmm, but the more I think about it the more it makes sense to "Use NVIDIA GPU = no" because of the very small speedup of the NVIDIA vs. the CPU.


Isn't that where you STARTED this thread at?

I almost never run both cpu and gpu units from the same project on the same pc, I will split them so one pc runs the cpu units from project A and the gpu units from project B, with a different pc doing the exact opposite. I have found this is better for me as I then don't run into cache or other problems, ie a project out of work and the whole pc is idle. My pc's are not all identical and some have resource 'issues', I am working on upgrading my older pc's, but it will take some time yet.
ID: 3943 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Eugene Stemple

Send message
Joined: 17 Nov 14
Posts: 13
Credit: 6,252,543
RAC: 1,259
Message 4054 - Posted: 21 Feb 2015, 5:38:09 UTC
This may wrap up this thread, but posting it for others who stumble into it...
The only way I have found to configure for SSE2 work (and exclude SSE3 and AVX versions for CPU) is via an app_info.xml file, and thus anonymous platform mode, with all the side-effects that implies. The file content is as follows:
-----
<app_info>
<app>
<name>period_search</name>
<user_friendly_name>Asteroids</user_friendly_name>
</app>
<file_info>
<name>period_search_10210_x86_64-pc-linux-gnu__sse2</name>
<executable/>
</file_info>
<app_version>
<app_name>period_search</app_name>
<version_num>1021</version_num>
<avg_ncpus>1.00</avg_ncpus>
<max_ncpus>1.00</max_ncpus>
<plan_class>sse2</plan_class>
<file_ref>
<file_name>period_search_10210_x86_64-pc-linux-gnu__sse2</file_name>
<main_program/>
</file_ref>
</app_version>
</app_info>

------
This is obviously for a 64-bit Linux system. I have abandoned the idea of accepting both CPU and GPU tasks. Mostly because the GPU version shows such a small speed improvement but also because I have more CPU core resources to spare and other boinc projects are heavy users of the Nvidia GPU.

I will go to the boinc message boards to post, or add to, a discussion of the boinc "resource share" performance. I wish it were simply based on execution times but I have read that it is based on estimated credit production. My experience is that it is neither of those (Not even close!!), Enough of that OT ranting...

Gene;
ID: 4054 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile BilBg
Avatar

Send message
Joined: 19 Jun 12
Posts: 221
Credit: 623,640
RAC: 0
Message 4063 - Posted: 23 Feb 2015, 18:01:09 UTC - in response to Message 4054.  

Last modified: 23 Feb 2015, 18:18:50 UTC
The only way I have found to configure for SSE2 work (and exclude SSE3 and AVX versions for CPU) is via an app_info.xml file

It should not be surprise for you, I posted on 4 Dec 2014:
""a way to configure the SSE2 app" is only app_info.xml but it is too early to talk about this":
http://asteroidsathome.net/boinc/forum_thread.php?id=394&postid=3851#3851

On 10 Dec 2014:
"Possible only by writing app_info.xml which includes both SSE2 CPU app and CUDA app sections."
"If you still want to use app_info.xml - I may try to write one for Linux (even that I'm not using Linux)":
http://asteroidsathome.net/boinc/forum_thread.php?id=394&postid=3880#3880


... a discussion of the boinc "resource share" performance.
I wish it were simply based on execution times but I have read that it is based on estimated credit production.

On old BOINC v6 it is based on execution times
On new BOINC v7 it is based on credit production


P.S.
To retain formatting use [pre] ... [/pre] tags, like this:
<app_info>
  <app>
    <name>period_search</name>
    <user_friendly_name>Asteroids</user_friendly_name>
  </app>
  <file_info>
    <name>period_search_10210_x86_64-pc-linux-gnu__sse2</name>
    <executable/>
  </file_info>
  <app_version>
    <app_name>period_search</app_name>
    <version_num>1021</version_num>
    <avg_ncpus>1.00</avg_ncpus>
    <max_ncpus>1.00</max_ncpus>
    <plan_class>sse2</plan_class>
    <file_ref>
      <file_name>period_search_10210_x86_64-pc-linux-gnu__sse2</file_name>
      <main_program/>
    </file_ref>
  </app_version>
</app_info>



P.P.S.
<version_num>1021</version_num> should be
<version_num>10210</version_num>
- but don't just change it now or tasks will be deleted.

The way to keep tasks you have now + mark new Downloads with 10210 (v102.10)
is to use this app_info.xml for a few days (then you may delete the last <app_version> section with <version_num>1021</version_num>)
<app_info>

  <app>
    <name>period_search</name>
    <user_friendly_name>Asteroids</user_friendly_name>
  </app>

  <file_info>
    <name>period_search_10210_x86_64-pc-linux-gnu__sse2</name>
    <executable/>
  </file_info>

  <app_version>
    <app_name>period_search</app_name>
    <version_num>10210</version_num>
    <avg_ncpus>1.00</avg_ncpus>
    <max_ncpus>1.00</max_ncpus>
    <plan_class>sse2</plan_class>
    <file_ref>
      <file_name>period_search_10210_x86_64-pc-linux-gnu__sse2</file_name>
      <main_program/>
    </file_ref>
  </app_version>

  <app_version>
    <app_name>period_search</app_name>
    <version_num>1021</version_num>
    <avg_ncpus>1.00</avg_ncpus>
    <max_ncpus>1.00</max_ncpus>
    <plan_class>sse2</plan_class>
    <file_ref>
      <file_name>period_search_10210_x86_64-pc-linux-gnu__sse2</file_name>
      <main_program/>
    </file_ref>
  </app_version>

</app_info>




- ALF - "Find out what you don't do well ..... then don't do it!" :)
ID: 4063 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote

Message boards : Number crunching : How to run CPU and GPU apps?