This was a problem that we had to deal with quite a lot at Q-Chem, for we had to validate across various architectures.  The analytic QM techniques could be made to agree to almost machine precision between different Unix platforms, but the numerical techniques in our DFT algorithms did not exhibit this behavior.  Actually, the standard algorithms that were used varied even as much as in the 6 or 7th decimal.  This was consequence of the inherent precision of the numerical grids employed, and "jacking" the grids up to something really high would converge these down, but take forever.  We learned to live with it and the validation scripts that we would use would actually take arguments describing to what precision we needed.  
<br><br>Just though I would ad the experience to the mix.<br><br>Cheers,<br>Shawn<br><br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Axel,<br>yep.. I will add a warning sentence in the webpage..<br><br>Anyway I talked with a friend of mine at CERN and asked him how they<br>do for GRID computing and for their own analysis system<br>both at CERN and FERMILAB when they have to validate/porte a code
<br>through different platforms.<br><br>The answer was simply: "we avoid to validate code on different<br>platforms buying same hardware and installing same operating system<br>and libraries" ;-)..<br><br>Regarding GRID I discovered now that when an application is submitted
<br>on the GRID is bringing with itself all the necessary libraries.<br>This avoids the hard work to validate codes when new nodes are added<br>to the GRID (personally I find this way totally crazy ;-), but anyway<br>that's it..)...
<br>The only work needed is the validation of the processor but this is<br>done by the vendors (Intel/AMD/IBM/etc..), that guarantees that their<br>processor is under quality control.<br><br>He also told me that in the very few cases in which they have to do
<br>the porting of codes on different platforms they do it by hand<br>with persons with a very good knowledge of the platform and a very<br>good knowledge of the code to be ported.<br>In our case we won't easily know if the error of 1E-9% is a
<br>miscompilation or a numerical issue associated to libraries,<br>different compilers, etc..<br><br>I still believe that you can use the regtest to check if you get<br>larger errors ~ 1E-3 -1E-8 (and then be sure of a compilation/library
<br>problem) or even<br>segmentation faults.<br>In case not, there's a good chance that cp2k has been properly built,<br>but only real applications and analyses of the results can tell if you<br>have a good or a bad executable. The rule is always the same and
<br>should be valid with whatever code: Keep your eyes opened! (and I know<br>you do it! ;-). )<br><br>teo<br><br>On 11 Sep 2007, at 18:29, Axel wrote:<br><br>><br>> hi teo,<br>><br>> thanks for the detailed answer.
<br>><br>> in this case i would suggest changing the text<br>> on the berlios page accordingly. right now it is<br>> giving the impression as if i need to reproduce<br>> the values from the downloadable regression test
<br>> library to ensure my compilation is correct.<br>><br>> cheers,<br>>    axel.<br>><br>> On Sep 11, 1:30 am, Teodoro Laino <<a href="mailto:teodor...@gmail.com">teodor...@gmail.com</a>> wrote:
<br>>> Hi Axel,<br>>><br>>> the meaning of regtests is not to validate code between different<br>>> kind of platforms.<br>>> They are used by people developing the code and run always on a same
<br>>> machine,<br>>> to check that nothing has been disrupted by new changes or<br>>> introducing new pieces of code.<br>>> If used in this way, also an error of 1.0E-10 makes sense (and I've<br>
>> seen them many times), since<br>>> whatever modification should leave the numerics exactly the same.<br>>><br>>> At the moment there's no a real validation test. You may make a sort<br>>> of "leap of faith" and assume
<br>>> that cp2k has been compiled properly if regtests are OK or fail with<br>>> a relative error less than 1.E-10..<br>>> Again this guarantees nothing and for sure the best thing would be to<br>>> go for a small number of tests,
<br>>> numerically stable (i.e. convergence SCF, etc..), aimed at computing<br>>> some properties, but even in that<br>>> case I'm not sure that numerical problems would not be an issue.<br>>><br>
>> As far as I know validating code through platforms is a tricky issue.<br>>> A  similar problem there's also on the GRID platform.. I may try to<br>>> ask to these guys<br>>> how they validate codes when new machines are added to the grid
<br>>> infrastructure. I'm sure there's some<br>>> level  of "human-intervention" to decide if a code has been compiled<br>>> properly on a new architecture.<br>>><br>>> Teo
<br>>><br>>> On 11 Sep 2007, at 04:12, Axel wrote:<br>>><br>>><br>>><br>>>> hi everybody!<br>>><br>>>> i'm currently in the process of trying to automate<br>>>> building cp2k on a number of platforms so that i
<br>>>> have a way to supply people with up-to-date executables<br>>>> and a list of tested features.<br>>><br>>>> however it seems that quite a number of the test results<br>>>> could only be reproduced on the exact same machine
<br>>>> with the exact same compiler/library parallel etc. settings.<br>>><br>>>> or more precisely asked: why do i get a 'WRONG' result with<br>>>> a relative error of less than 1.e-10
 when you have only 14 digits<br>>>> absolute precision in a real*8 floating point number to begin with?<br>>>> especially, when the SCF convergence of an input is not set very<br>>>> tightly. just moving to a different platform, using a different
<br>>>> compiler,<br>>>> a different optimization level, a different BLAS/LAPACK or running<br>>>> a serial instead of parallel executable can induce changes of that<br>>>> magnitude while still being accurate within the boundaries of
<br>>>> floating<br>>>> point arithmetik, considering how many FLOPS are involved into<br>>>> computing the properties the regression tester is comparing.<br>>><br>>>> what about tests of properties, that simply cannot be computed
<br>>>> to that high accuracy at all?<br>>><br>>>> do i have to make a 'leap of faith' and say that machine X is<br>>>> executing<br>>>> cp2k correctly when all regtests are flagged ok on berlios and then
<br>>>> use that output as my internal standard for that machine?<br>>><br>>>> cheers,<br>>>>    axel.<br>><br>><br>> ><br><br><br>