<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Paolo,<div><br></div><div>as you probably noticed I've committed some changes between yesterday and today. I did all the tests I could reasonably perform to check that everything works, both QE and QE-GPU. If you see something weird or if you experience problem at compile time then feel free to revert back any change.</div><div><br></div><div>Cheers,</div><div>Filippo</div><div><br></div><div><br><div><div>On Apr 20, 2013, at 8:32 PM, Paolo Giannozzi <<a href="mailto:paolo.giannozzi@uniud.it">paolo.giannozzi@uniud.it</a>> wrote:</div><blockquote type="cite">Hi Filippo<br><br>I admit that I never looked into the GPU stuff, and I never verify <br>the potential effects on it of my changes: I rely on you for this task!<br><br>I think that the solution you propose is a reasonable one.<br>Asymptotically, if the CUDA version is going to stay, it has to <br>be more tightly integrated with the rest of the distribution. <br>There are many #ifdef's , notably  __MPI and __PARA that can <br>be removed, in case you feel guilty of aggravated #ifdeffing.<br><br>I do not know what Layla thinks, but I am quite confident that she <br>has a more urgent task these days!<br><br>Paolo<br><br><blockquote type="cite">due to on-going internal restructuring it is very difficult for me to<br>keep constantly aligned the plugin to the latest version of the trunk.<br>Despite I tried to put in place a set of naive scripts (not perfect<br>scripts, just something semi-automatic to help me figure out which<br>changes in the trunk may impact on the GPU code), I have to manually<br>look very often to the code and fix dependencies. Until now, my<br>philosophy was to completely let the trunk completely ignore the<br>existence of the QE-GPU plugin. However it is not practical from a<br>development point of view, not anymore. <br><br><br>What I would like to do, is to let the code in the trunk (so the main<br>code) call eventually GPU routines if the plugin is used. This can be<br>easily achieved by isolate piece of code with a preprocessor macro<br>(__CUDA). <br><br><br>Here an example of the changes I have in mind applied to<br>"PW/scr/addusdens.f90"):<br><br><br>!----------------------------------------------------------------------<br>SUBROUTINE addusdens(rho)<br>  !----------------------------------------------------------------------<br>  !<br>  USE realus,               ONLY : addusdens_r<br>  USE control_flags,        ONLY : tqr<br>  USE noncollin_module,     ONLY : nspin_mag<br>  USE fft_base,             ONLY : dfftp<br>  USE kinds,                ONLY : DP<br>  !<br>  IMPLICIT NONE<br>  !<br>  !<br>  REAL(kind=dp), intent(inout) :: rho(dfftp%nnr,nspin_mag)<br>  !<br>  IF ( tqr ) THEN<br>     CALL addusdens_r(rho,.true.)<br>  ELSE<br>#if defined(__CUDA)<br>     CALL addusdens_g_gpu(rho)<br>#else<br>     CALL addusdens_g(rho)<br>#endif<br>  END IF<br>  !<br>  RETURN<br>  !<br>END SUBROUTINE addusdens<br><br><br><br><br>The routine "addusdens_r_gpu" will be in a separate file called for<br>example "addusdens_gpu.f90" under the GPU directory. This file will be<br>compiled iff the proper Makefile.gpu (generated by<br>"GPU/install/configure") is used. From a generic non-GPU user<br>perspective, any piece of code or routine encapsulated by __CUDA will<br>be ignored. Simple but very effective.<br><br><br>I understand that introducing in several parts of the trunk the macro<br>__CUDA may look a dirty move but this will save a lot of my time and<br>it will simplify my job. Plus it might stimulate new people to develop<br>code for QE-GPU.<br><br><br>Paolo, Layla… any opinion?<br><br><br>If I can do that, I expect to commit all the changes by mid of this<br>week.<br><br><br>Cheers,<br>Filippo<br><br><br>--<br>Mr. Filippo SPIGA, M.Sc.<br><a href="http://filippospiga.me">http://filippospiga.me</a> ~ skype: filippo.spiga<br><br>«Nobody will drive us out of Cantor's paradise.» ~ David Hilbert<br><br><br>_______________________________________________<br>Q-e-developers mailing list<br><a href="mailto:Q-e-developers@qe-forge.org">Q-e-developers@qe-forge.org</a><br>http://qe-forge.org/mailman/listinfo/q-e-developers<br></blockquote><br><br>_______________________________________________<br>Q-e-developers mailing list<br><a href="mailto:Q-e-developers@qe-forge.org">Q-e-developers@qe-forge.org</a><br>http://qe-forge.org/mailman/listinfo/q-e-developers<br></blockquote></div><br><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-align: -webkit-auto; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-align: -webkit-auto; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-align: -webkit-auto; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-align: -webkit-auto; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2; border-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">--<br>Mr. Filippo SPIGA, M.Sc.</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><a href="http://filippospiga.me">http://filippospiga.me</a> ~ skype: filippo.spiga<br><br>«Nobody will drive us out of Cantor's paradise.» ~ David Hilbert</div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></div></div></div>
</div>
<br></div></body></html>