<div>Dear Prof. Blaha,</div>
<div> I didn't get a chance to test running spin-up and down for almost one month because I have</div>
<div>been switching among different machines. Finally, I can settle down in an IBM p630 with</div>
<div>4 processors. I modify runsp_lapw and run it. It runs without problems. And the up and dn</div>
<div>tasks don't interfere each other's speed (i.e., 100% parallel efficiency). I wonder if this means that parallelizing up and dn is useful.</div>
<div> </div>
<div>Chiung-Yuan<br> </div>
<div><span class="gmail_quote">On 8/18/05, <b class="gmail_sendername">Peter Blaha</b> <<a href="mailto:pblaha@theochem.tuwien.ac.at">pblaha@theochem.tuwien.ac.at</a>> wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">It is not implemented, since I'm not convinced that it is a usefull option.<br><br>a) Usually even big magnetic systems require more than 1 k-point (maybe not?)
<br>b) On most dual processor machines I know you will not gain as much as<br> expected, because the memory bus is slow and the run-time will increase if<br> two lapw1 are running simultaneously.<br> Instead, I tend to use a parallel goto-lib which gives a very nice
<br> speedup (at least for dual Xeons).<br><br>Anyway, for a shared memory machine I think it is trivial to<br>implement. Test the following:<br><br>Change in runsp_lapw the sections lapw1: lapw1c: lapw2: lapw2c:<br>and add a "background" & character and a "wait" line
<br><br>lapw1:<br>....<br>if ( "$so" == "-so" ) then<br>total_exec lapw1 $it0 -up $para $nohns & <==change<br>else<br>total_exec lapw1 $it0 -up $para $nohns $orb & <==change
<br>endif<br>if ($icycle >= $in1new ) then<br> write_in1_lapw -dn -ql $qlimit >> $dayfile<br> if($status == 0 ) cp $file.in1new $file.in1<br>endif<br>if ( "$so" == "-so" ) then<br>total_exec lapw1 $it0 -dn $para $nohns & <==change
<br>else<br>total_exec lapw1 $it0 -dn $para $nohns $orb & <==change<br>endif<br>wait <==add<br>...<br><br>lapw2:<br>if ( "$so" == "-so" ) goto lapw2c
<br>testinput $file.in2 error_input<br>total_exec lapw2 -up $para & <==change<br>total_exec lapw2 -dn $para & <==change<br>wait <==add
<br><br>And similar in lapw1c and lapw2c sections.<br><br>In addition I'd expect that you need to comment the testerror statements<br>of the total_exec aliases.<br>I think that should do it. Let me know if you are successfull and it is
<br>usefull.<br><br>> I am running a spin-polarized job with only one k-point on a<br>> 2-processor machine.<br>> If I don't want to do fine grained parallelization, can I distribute<br>> spin-up and down tasks into the 2 processors so that they can run
<br>> simultaneously (for lapw1 and<br>> lapw2)?<br>><br>> Thanks for your attention,<br>> Chiung-Yuan</blockquote></div>