Message boards :
Number crunching :
Feature request: Run CPU versions of applications for which GPU versions are available - yes/no
Message board moderation
Author | Message |
---|---|
Send message Joined: 22 Oct 11 Posts: 9 Credit: 21,438,521 RAC: 0 |
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 |
Send message Joined: 22 Oct 11 Posts: 9 Credit: 21,438,521 RAC: 0 |
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:21:22 | Milkyway@Home | Found app_info.xml; using anonymous platform 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 |
Send message Joined: 4 Sep 12 Posts: 219 Credit: 456,474 RAC: 0 |
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'. 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 |
Send message Joined: 5 Aug 13 Posts: 5 Credit: 1,689,686 RAC: 0 |
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. 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. |
Send message Joined: 19 Jul 10 Posts: 637 Credit: 19,469,120 RAC: 5,101 |
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. |
Send message Joined: 22 Oct 11 Posts: 9 Credit: 21,438,521 RAC: 0 |
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 |
Send message Joined: 4 Sep 12 Posts: 219 Credit: 456,474 RAC: 0 |
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> |
Send message Joined: 8 Feb 08 Posts: 261 Credit: 104,050,322 RAC: 0 |
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.
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. |
Send message Joined: 4 Sep 12 Posts: 219 Credit: 456,474 RAC: 0 |
Is that nbody exe really singlethreaded? 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. |
Send message Joined: 22 Oct 11 Posts: 9 Credit: 21,438,521 RAC: 0 |
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> |
©2025 Astroinformatics Group