To tell BOINC that the app is multi-thread, use the plan class mechanism, as Carl Christensen indicated. NOTE: the default for plan class "mt" is that your app uses all available cores up to 64. If your app does something different, then you need to modify sched/sched_customize.cpp accordingly and recompile your scheduler.
The wrapper with boinc_init_parallel() will run, but it won't suspend/resume threads correctly on Windows. -- David On 15-Mar-2011 5:59 AM, Arnaud Schoofs wrote: > I think you're right when you say that "the wrapper should work as-is with > multi-thread worker programs", but the problem is that in that case, Boinc > doesn't know that the program is multi-thead I guess ... and so multiple > copies of the application will be running simultaneously. > > My questions are: - How can I tell to Boinc that the app is multi-thread > (---> one WU at a time) ? Maybe using __mt application plan class is > sufficient ? - What are the side-effects to not use boinc_init_parallel() in > a multi-thread application ? I guess there are some, otherwise the function > seems useless ... > > Meanwhile I ran some tests on my project and the wrapper and applications > seem running well with boinc_init_parallel() in wrapper.cpp. I tested that on > OS X, Linux and Windows. > > Best regards, > > Arnaud Schoofs Evo@home project administrator > http://boinc.run.montefiore.ulg.ac.be/evo/ > > Le 14 mars 2011 à 18:30, David Anderson a écrit : > >> Arnaud: Actually, on reflection, it's not correct for the wrapper to call >> boinc_init_parallel(); that function assumes that the calling process is >> going to create new threads. The wrapper should work as-is with >> multi-thread worker programs. >> >> -- David >> >> On 11-Mar-2011 4:14 PM, Arnaud Schoofs wrote: >>> Hello, >>> >>> I have a question/suggestion concerning the wrapper, legacy applications >>> and multi-threads apps. Our legacy application is multi-threads and I'd >>> like to run it in multi-threads mode using the boinc wrapper. I think I'm >>> gonna try to add a boinc_init_parallel() just before the >>> boinc_init_optios(&options) in wrapper.cpp (line 692 in trunk) Do you >>> think it's all I have to do ? I have some trouble to debug my application >>> with a BOINC client but no project ( >>> http://boinc.berkeley.edu/trac/wiki/AppDebug), so it's not easy for me >>> to test the solution proposed. If this is working, it could be nice to >>> add an option in job.xml file to enable/disable the init_boinc_parallel >>> don't you think ? >>> >>> Thanks for your help, Have a nice week end >>> >>> Arnaud Schoofs Evo@home project administrator >>> http://boinc.run.montefiore.ulg.ac.be/evo/ >>> _______________________________________________ boinc_dev mailing list >>> [email protected] >>> http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, >>> visit the above URL and (near bottom of page) enter your email address. > _______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
