<div dir="ltr"><div>Hi developers,</div><div><br></div><div></div><div>Many features currently under development are getting QE ready for the future. This is very encouraging.</div><div>However, I feel the code is diverging and needs attention.</div><div>The upcoming GPU code is basically an internal fork with large amount of lines duplicated.The mixed precision attempt also duplicates functions.</div><div>QE already has gamma/k or complex/real forks inside the code. The more forks added to the code, the more needed maintenance and potential bugs.</div><div><br></div><div></div><div>Although fortran has its language limitation, some design choices may help reducing the complexity. Having one binary is appealing but allowing building multiple binaries and fixing precision at compile time to minimize the lines of duplicated code is more beneficial long term.</div><div>The CPU/GPU gap may have a chance to get closed by performance portable solutions although the software stack is not matured especially on the fortran side at the moment.<br></div><div><br></div><div>It is very challenging and the manpower is often limited. Although the reality is often a compromise, I believe QE developers figure out the best way.<br></div><div><br></div><div>One more thing, testing is very important. Although there are some tests but more tests are needed not only integration tests but also unit tests.<br></div><div><br></div><div>Best,<br></div><div>Ye<br></div><div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">===================<br>
Ye Luo, Ph.D.<br>
Leadership Computing Facility<br>
Argonne National Laboratory</div></div></div></div></div></div>