Welcome to MilkyWay@home

Feature request: Run CPU versions of applications for which GPU versions are available - yes/no

Message boards : Number crunching : Feature request: Run CPU versions of applications for which GPU versions are available - yes/no
Message board moderation

To post messages, you must log in.

AuthorMessage
Profile (retired account)
Avatar

Send message
Joined: 22 Oct 11
Posts: 9
Credit: 21,438,521
RAC: 0
Message 60457 - Posted: 25 Nov 2013, 12:29:32 UTC

Maybe this has been discussed before, if so, my apologies. However, a quick forum search returned nothing. Is there any chance you could implement a switch like "Run CPU versions of applications for which GPU versions are available - yes / no"? This switch is available at Einstein@home and it allows to opt into every application while only crunching those applications on CPU where no GPU version is available.

Currently I want to crunch again some MilkyWay@Home N-Body Simulation on CPU, but I have to opt out from MilkyWay@Home and Milkyway@Home Separation (Modified Fit) otherwise I'll get CPU workunits for such applications, too (which I do not want for obvious reasons). I am aware that I could use an app_info.xml, but this is a rather complicated approach if you only want to choose the standard apps you're running. Like "shooting with cannons at sparrows", as a german saying goes. ;) For allocating GPU resources I am using an app_config.xml currently.
Mark my words and remember me. - 11th Hour, Lamb of God

ID: 60457 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile (retired account)
Avatar

Send message
Joined: 22 Oct 11
Posts: 9
Credit: 21,438,521
RAC: 0
Message 60467 - Posted: 27 Nov 2013, 14:21:51 UTC

I don't take the lack of reply so far as a no. Maybe this can not be implemented on short notice. I would appreciate a reply, though, even a 'no'.

In the meantime I'm trying to load the cannon. Can somebody help me with a working N-Body Simulation section for an app_info.xml? The following app_info.xml was created based on the corresponding section in client_state.xml:

<app_info>
<app>
<name>milkyway</name>
</app>
<file_info>
<name>milkyway_separation_1.02_windows_x86_64__opencl_amd_ati.exe</name>
<executable/>
</file_info>
<app_version>
<app_name>milkyway</app_name>
<version_num>102</version_num>
<api_version>6.13.0</api_version>
<flops>2.5e11</flops>
<avg_ncpus>0.2</avg_ncpus>
<max_ncpus>0.97</max_ncpus>
<plan_class>opencl_amd_ati</plan_class>
<coproc>
<type>ATI</type>
<count>0.5</count>
</coproc>
<cmdline></cmdline>
<file_ref>
<file_name>milkyway_separation_1.02_windows_x86_64__opencl_amd_ati.exe</file_name>
<main_program/>
</file_ref>
</app_version>
<app>
<name>milkyway_nbody</name>
</app>
<file_info>
<name>milkyway_nbody_1.38_windows_x86_64.exe</name>
<executable/>
</file_info>
<app_version>
<app_name>milkyway_nbody</app_name>
<version_num>138</version_num>
<api_version>6.13.0</api_version>
<flops>2.7e10</flops>
<avg_ncpus>1.0</avg_ncpus>
<max_ncpus>1.0</max_ncpus>
<cmdline></cmdline>
<file_ref>
<file_name>milkyway_nbody_1.38_windows_x86_64.exe</file_name>
<open_name>milkyway_nbody.exe</open_name>
<main_program/>
</file_ref>
<file_ref>
<file_name>libgomp_64-1_nbody_1.38.dll</file_name>
<open_name>libgomp_64-1.dll</open_name>
</file_ref>
<file_ref>
<file_name>pthreadGC2_64_nbody_1.38.dll</file_name>
<open_name>pthreadGC2_64.dll</open_name>
</file_ref>
</app_version>

<app>
<name>milkyway_separation__modified_fit</name>
</app>
<file_info>
<name>milkyway_separation__modified_fit_1.28_windows_x86_64__opencl_amd_ati.exe</name>
<executable/>
</file_info>
<app_version>
<app_name>milkyway_separation__modified_fit</app_name>
<version_num>128</version_num>
<api_version>6.13.0</api_version>
<flops>1.8e11</flops>
<avg_ncpus>0.2</avg_ncpus>
<max_ncpus>0.97</max_ncpus>
<plan_class>opencl_amd_ati</plan_class>
<coproc>
<type>ATI</type>
<count>0.5</count>
</coproc>
<cmdline></cmdline>
<file_ref>
<file_name>milkyway_separation__modified_fit_1.28_windows_x86_64__opencl_amd_ati.exe</file_name>
<main_program/>
</file_ref>
</app_version>
</app_info>

The first and the last section for the two openCL applications is ok, the problem is the part in the middle, here in orange. When I include the references for the dll-files, as above, then I get the following missing-file-error, respectively, and BOINC is deleting the main program, but not the dll-files.

27.11.2013 14:10:01 | Milkyway@Home | Found app_info.xml; using anonymous platform
27.11.2013 14:10:01 | Milkyway@Home | [error] State file error: missing application file libgomp_64-1_nbody_1.38.dll


27.11.2013 14:21:22 | Milkyway@Home | Found app_info.xml; using anonymous platform
27.11.2013 14:21:22 | Milkyway@Home | [error] State file error: missing application file pthreadGC2_64_nbody_1.38.dll


In case I don't include the references to the dll-files, I get an error. Example: http://milkyway.cs.rpi.edu/milkyway/result.php?resultid=619064814

Thanks in advance for any help here.

Regards

ID: 60467 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Richard Haselgrove

Send message
Joined: 4 Sep 12
Posts: 219
Credit: 456,474
RAC: 0
Message 60468 - Posted: 27 Nov 2013, 14:38:09 UTC - in response to Message 60467.  

I don't take the lack of reply so far as a no. Maybe this can not be implemented on short notice. I would appreciate a reply, though, even a 'no'.

In the meantime I'm trying to load the cannon. Can somebody help me with a working N-Body Simulation section for an app_info.xml? The following app_info.xml was created based on the corresponding section in client_state.xml:...

Without checking it exhaustively, that looks about right for the non multi-threaded version of the application - you would need to do more to run it MT, as originally intended. And your technique of copying the elements from client_state is spot-on.

But as with all app_info installations, you have to supply the files as well. Since you're just packaging the project's own application, you can download them from the project servers:

http://milkyway.cs.rpi.edu/milkyway/download/milkyway_nbody_1.38_windows_x86_64.exe
http://milkyway.cs.rpi.edu/milkyway/download/libgomp_64-1_nbody_1.38.dll
http://milkyway.cs.rpi.edu/milkyway/download/pthreadGC2_64_nbody_1.38.dll
ID: 60468 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile ylixia

Send message
Joined: 5 Aug 13
Posts: 5
Credit: 1,689,686
RAC: 0
Message 60486 - Posted: 29 Nov 2013, 23:03:50 UTC - in response to Message 60457.  
Last modified: 29 Nov 2013, 23:05:00 UTC

Maybe this has been discussed before, if so, my apologies. However, a quick forum search returned nothing. Is there any chance you could implement a switch like "Run CPU versions of applications for which GPU versions are available - yes / no"? This switch is available at Einstein@home and it allows to opt into every application while only crunching those applications on CPU where no GPU version is available.

Currently I want to crunch again some MilkyWay@Home N-Body Simulation on CPU, but I have to opt out from MilkyWay@Home and Milkyway@Home Separation (Modified Fit) otherwise I'll get CPU workunits for such applications, too (which I do not want for obvious reasons). I am aware that I could use an app_info.xml, but this is a rather complicated approach if you only want to choose the standard apps you're running. Like "shooting with cannons at sparrows", as a german saying goes. ;) For allocating GPU resources I am using an app_config.xml currently.


Go to MilkyWay@Home preferences here on the site and change the options as below:

Run only the selected applications
MilkyWay@Home: no
MilkyWay@Home N-Body Simulation: yes
Milkyway@Home Separation: no
Milkyway@Home Separation (Modified Fit): no

If no work for selected applications is available, accept work from other applications?
yes


When asking for CPU apps your PC will get just N-Body as asked for. When asking for GPU apps your PC will ask for N-Body, get told "no there aren't any" and then the 'accept work from other applications' option will kick in.
ID: 60486 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Link
Avatar

Send message
Joined: 19 Jul 10
Posts: 578
Credit: 18,845,143
RAC: 932
Message 60487 - Posted: 29 Nov 2013, 23:26:15 UTC - in response to Message 60486.  
Last modified: 29 Nov 2013, 23:27:13 UTC

When asking for CPU apps your PC will get just N-Body as asked for. When asking for GPU apps your PC will ask for N-Body, get told "no there aren't any" and then the 'accept work from other applications' option will kick in.

It will also kick in if there are no N-Body WUs available when asking for CPU work.
ID: 60487 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile (retired account)
Avatar

Send message
Joined: 22 Oct 11
Posts: 9
Credit: 21,438,521
RAC: 0
Message 60492 - Posted: 30 Nov 2013, 21:32:07 UTC
Last modified: 30 Nov 2013, 21:37:14 UTC

Thanks for your suggestions.

Richard, I ommitted a few details in my second post to make it not too lengthy. :) The applications and the dlls were already on my harddrive before I started to test the app_info, so I made a backup and copied them into the projects data directory together with the app_info.xml. However, I do appreciate your comment and the direct download links.

ylixia, I see your point here. Seems to be a viable workaround, although not perfect, as Link pointed out.

I'm surprised that nobody posted a working app_info section for nbody. Hasn't anybody succeeded or does nobody care? ;)

Anyway, I've choosen another solution now and will run nbody inside a Virtual Machine. Performance hit should be small (is nbody using AVX if present?) and there's even an advantage: I can easily limit the cpu cores used by the mt app, which avoids kicking out long running tasks like RNA World on the host.

My feature request remains on the table, btw. ;)

Regards
ID: 60492 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Richard Haselgrove

Send message
Joined: 4 Sep 12
Posts: 219
Credit: 456,474
RAC: 0
Message 60493 - Posted: 30 Nov 2013, 22:42:44 UTC - in response to Message 60492.  

I'm surprised that nobody posted a working app_info section for nbody. Hasn't anybody succeeded or does nobody care? ;)

Well, since you ask, this is the app_info I was using back in June, before the project had written its own MT plan_class.

It will be hugely out-of-date now, so there are lots of version numbers to be updated: I would suggest that you download the current executable first, and use Dependency Walker to get the correct <open_name> for the current DLLs.

My objective in writing this app_info was to run N-Body on three cores of a four-core CPU, leaving enough overhead for BOINC to schedule a single-CPU task and a GPU task from other projects at the same time. So I think it's got most of the wrinkles you might want to use. And it worked back when v1.12 was as far as they'd got.

<app_info> 
 
    <app>
        <name>milkyway_nbody</name>
    </app>

    <file_info>
        <name>milkyway_nbody_1.12_windows_x86_64__mt.exe</name>
        <executable/>
    </file_info>
    <file_info>
        <name>libgomp_64-1_nbody_1.10.dll</name>
        <executable/>
    </file_info>
    <file_info>
        <name>pthreadGC2_64_nbody_1.10.dll</name>
        <executable/>
    </file_info>

    <app_version>
        <app_name>milkyway_nbody</app_name>
        <version_num>112</version_num>
        <platform>windows_x86_64</platform>
        <avg_ncpus>2.100000</avg_ncpus>
        <max_ncpus>2.100000</max_ncpus>
        <flops>13326025349.445996</flops>
        <plan_class>rh_mt_test</plan_class>
        <api_version>6.13.0</api_version>
        <cmdline>--nthreads 3</cmdline>
        <file_ref>
            <file_name>milkyway_nbody_1.12_windows_x86_64__mt.exe</file_name>
            <open_name>milkyway_nbody.exe</open_name>
            <main_program/>
            <copy_file/>
        </file_ref>
        <file_ref>
            <file_name>libgomp_64-1_nbody_1.10.dll</file_name>
            <open_name>libgomp_64-1.dll</open_name>
            <copy_file/>
        </file_ref>
        <file_ref>
            <file_name>pthreadGC2_64_nbody_1.10.dll</file_name>
            <open_name>pthreadGC2_64.dll</open_name>
            <copy_file/>
        </file_ref>
    </app_version>

</app_info> 
ID: 60493 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Len LE/GE

Send message
Joined: 8 Feb 08
Posts: 261
Credit: 104,050,322
RAC: 0
Message 60495 - Posted: 1 Dec 2013, 15:02:22 UTC - in response to Message 60467.  

Like Richard showed in his example, you need to list not only the exe but although the used dll's first, before you can refer to them in the app_version block.


<app_info>
...
<app>
<name>milkyway_nbody</name>
</app>
<file_info>
<name>milkyway_nbody_1.38_windows_x86_64.exe</name>
<executable/>
</file_info>
<file_info>
<name>libgomp_64-1_nbody_1.38.dll</name>
<executable/>
</file_info>
<file_info>
<name>pthreadGC2_64_nbody_1.38.dll</name>
<executable/>
</file_info>

<app_version>
...



Is that nbody exe really singlethreaded?
I thought nbody was all mt plan class.

Last time an app_info for nbody on windows was discussed (with examples) nearly a year ago.
ID: 60495 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Richard Haselgrove

Send message
Joined: 4 Sep 12
Posts: 219
Credit: 456,474
RAC: 0
Message 60498 - Posted: 1 Dec 2013, 16:25:30 UTC - in response to Message 60495.  

Is that nbody exe really singlethreaded?
I thought nbody was all mt plan class.

As you can see on the Applications page, there are currently both single- and multi-threaded (mt) versions of N-Body for all platforms.

But three weeks ago, Jake posted:

I am of the opinion that there is no inherent advantage to running MT tasks and plan to release only non-MT versions for the next n-body release.

Which for me removes the distinctive nature of crunching for this project, and I think I've got all the bugs I can out of both the project and BOINC's support for multi-threading, so I'll bid you all farewell.
ID: 60498 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile (retired account)
Avatar

Send message
Joined: 22 Oct 11
Posts: 9
Credit: 21,438,521
RAC: 0
Message 60501 - Posted: 2 Dec 2013, 5:13:10 UTC

Thanks again, Richard and Len LE/GE. Now everything works as intended. And I trust we will still read you on some other project forum then, Richard?

Here are the two sections for nbody single-threaded and mt application again, which now work fine for me (on a quadcore with HT enabled):

<app>
<name>milkyway_nbody</name>
</app>
<file_info>
<name>milkyway_nbody_1.38_windows_x86_64.exe</name>
<executable/>
</file_info>
<file_info>
<name>libgomp_64-1_nbody_1.38.dll</name>
<executable/>
</file_info>
<file_info>
<name>pthreadGC2_64_nbody_1.38.dll</name>
<executable/>
</file_info>
<app_version>
<app_name>milkyway_nbody</app_name>
<version_num>138</version_num>
<api_version>6.13.0</api_version>
<flops>4.0e10</flops>
<avg_ncpus>1.0</avg_ncpus>
<max_ncpus>1.0</max_ncpus>
<cmdline></cmdline>
<file_ref>
<file_name>milkyway_nbody_1.38_windows_x86_64.exe</file_name>
<open_name>milkyway_nbody.exe</open_name>
<main_program/>
<copy_file/>
</file_ref>
<file_ref>
<file_name>libgomp_64-1_nbody_1.38.dll</file_name>
<open_name>libgomp_64-1.dll</open_name>
<copy_file/>
</file_ref>
<file_ref>
<file_name>pthreadGC2_64_nbody_1.38.dll</file_name>
<open_name>pthreadGC2_64.dll</open_name>
<copy_file/>
</file_ref>
</app_version>

<app>
<name>milkyway_nbody</name>
</app>
<file_info>
<name>milkyway_nbody_1.38_windows_x86_64__mt.exe</name>
<executable/>
</file_info>
<file_info>
<name>libgomp_64-1_nbody_1.38.dll</name>
<executable/>
</file_info>
<file_info>
<name>pthreadGC2_64_nbody_1.38.dll</name>
<executable/>
</file_info>
<app_version>
<app_name>milkyway_nbody</app_name>
<version_num>138</version_num>
<api_version>6.13.0</api_version>
<flops>1.6e11</flops>
<avg_ncpus>3.0</avg_ncpus>
<max_ncpus>4.0</max_ncpus>
<plan_class>mt</plan_class>
<cmdline>--nthreads 4</cmdline>
<file_ref>
<file_name>milkyway_nbody_1.38_windows_x86_64__mt.exe</file_name>
<open_name>milkyway_nbody.exe</open_name>
<main_program/>
<copy_file/>
</file_ref>
<file_ref>
<file_name>libgomp_64-1_nbody_1.38.dll</file_name>
<open_name>libgomp_64-1.dll</open_name>
<copy_file/>
</file_ref>
<file_ref>
<file_name>pthreadGC2_64_nbody_1.38.dll</file_name>
<open_name>pthreadGC2_64.dll</open_name>
<copy_file/>
</file_ref>
</app_version>




ID: 60501 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote

Message boards : Number crunching : Feature request: Run CPU versions of applications for which GPU versions are available - yes/no

©2024 Astroinformatics Group