[CP2K:16] Do you want people to use CP2K?

Juerg Hutter hut... at pci.uzh.ch
Sun Apr 29 17:43:30 UTC 2007

Hi guys

> Hi everybody!
> Here is one question to the CP2K developers team
> that is bugging me and some other people for a while now:
> Do you really want people to _use_ cp2k?

First of all, thanks for caring. I will take some time to
try to answer to your questions and comments. However,
these are my personal remarks and might vary from
other developers.

I want to start to say that your mail is rather polemic
and I suppose this was intentional in order to get
some of us to reply.

> If not, please _tell_ us so that we don't
> lose more time in trying to play catch-up
> with compiler versions, libraries, unexpected
> input file changes and don't need to suffer
> every single time, when we try to compile it
> on a new machine.

This doesn't really need an answer. Of course nobody
works on the code in order to prevent others to use it.

> If yes, please take the following issues
> under serious consideration:
> - We need to have an official release! As much as it is
>  understandable, that many of you want to wait until you
>  have the perfect program, it is impossible to tell somebody
>  in a supercomputing center 'I need cp2k, but I need the version
>  of jan-33-2007, since that worked so well for regular QuickStep,
>  and please also compile feb-30-2007 because that was better for QM/
> MM'...
>  A significant part of the functionality in cp2k is now quite
> mature,
>  so why not pick a 'known-to-be-good(TM)' version, make a list of
>  working features, then create a branch on the cvs, make a (beta?)
>  release (2007-05.pl0) and apply only bug fixes to that branch and
>  make those available from time to time. If done with some
> consideration
>  it would mean little additional work, but _much_ more consistent
>  behavior for the released code branch, which is exactly what users
> need.
>  if you want people to use cp2k, you have to give them a chance.

To have a release has been discussed among the developers many times.
We even had once (some 4-5 years back) a date for a release. The main
problem I see is that nobody steps forward and takes the
You also underestimate the work that comes with a release. First
the testing phase and then keeping up with the bugs.
I just want to make the comparison to CPMD where there was only
one release in 30 months since I stopped pushing them.
Maybe somebody from one of the large groups could take the job?

> - The compileability (portability?) of cp2k should be a priority, at
>  least on the release branch. It is especially difficult to port
> cp2k
>  to many commonly used platforms at the major supercomputing centers
>  (US, Europe, Japan). It is a reality the many of the tools available
>  do not follow the latest greatest standards and sticking to a more
>  globally supported subset will allow of a greater exposure of cp2k
>  to high-end hardware and thus more ambitious and prestigious
> calculations.

I don't think this is really our (the CP2K developers) problem. Except
for a few exceptions (I will comment on them in the next section)
CP2K uses the Fortran95 standard. The problem is much more with
the compiler builders. I assume by trying to target efficiently
the more and more complex CPUs they introduce new bugs with every
new release. It's then often our task to find and isolate those
problems. I can asure you that my group has spent a lot of time
hunting the bugs of IBM, Intel, NAG etc.

>  With the most extreme example being the libint interface (and
> hybrid
>  functionals would actually be an application that needs to be run
>  on high-end hardware) and the fact that even a tool bundled with
>  and required to compile cp2k (forpar.x) chokes on it. This is a
>  point, where it is difficult to see the common sense in it.
>  Where do we get a g95 for a NEC-SX8, IBM BG/L, Cray XT3?
>  Do we really need a function pointer interface to C?
>  This is essentially an invitation for compilers to miscompile the
>  code and debugging becomes even more difficult as it is already.
The libint interface is only needed for the experimental HFX code.
The implementation was done such, that if you don't need the
functionality no problems should occur.
Currently this functionality is only available with the g95
compiler (it's promised for NAG and IBM).
To make this clear, HFX has been implemented in my group for
testing purposes. We have done this such that it costs us
the least amount of work. If this doesn't work for your
platform/compiler combinations we can't help you.
Again, we didn't choose this way because we thought it would be
cool to have a function pointer interface. This was the
optimal choice of tools for our needs. We made every step
necessary in order not to interfere with the stability of
the code.

> - People that want to use the (great) features that are currently
>  under active development and that are willing to follow the cvs,
>  but are not developers, need to know what is happening.
>  Even the cp2k website says:
>   Using the code for production quality simulations is possible but
>   requires detailed knowledge about the active development.
>  So where do we _get_ this knowledge?

This is certainly a valid point. The problem is that even within
the developers group it is difficult to get this information.
We more or less rely on the CVS for it. I hope we will be able
to improve this situation in the future.

>  As an aside: in the last draft of this mail, there was a paragraph
>  here, suggesting to move the forum away from the disastrous
>  Berlios site where we can have something that works more like
>  a mailing list (i.e. you can quote previous messages). With the
>  new cp2k google group, this is no longer required. Thanks for that.
> - Finally, if you want 'just users' to really put your code to use,
>  we need to have a some _real_ examples that produce 'good(TM)'
>  results, that people can follow them. The regtest directories are
>  not very helpful, as those inputs are engineered to test
>  reproducibility of previously implemented features.

This has been discussed many times. Again, somebody has to step
forward and take up the task. It's not that we don't know this
or that we intentionally keep this information to ourselves.
Maybe the users from the bigger groups could start and maintain
a CP2K example repository?

>  And then some (simple) guidelines are needed on how to setup a
>  'normal' calculation, how to pick potentials, basis sets, force
> fields,
>  avoid common problems, etc. so that people can actually start
> working
>  on producing a good user's guide. In my opinion, a good user's
> guide
>  is written by users (and not necessarily developers), thus 'early
> adopter'
>  users need feedback on their inputs and the documentation they would
> write.
>  'Help in exchange for Documentation' could be a motto for this.

Documentation is a problem that is on par with the release and the
examples. You have to find somebody to take the lead. These jobs
are not easy. I can tell you from my experience from CPMD that
only occasionally somebody will thank you for your efforts, but
many people will tell you more or less friendly what is (still)
wrong with what you provide.

BTW we are currently trying the third time in 5 years to get
some funding for such tasks from the EU. I fear that we will
again not succeed.
With other words a good part of the development of CP2K comes
from my personal time and my research money. It would be highly
appreaciated if friends could add more to the effort in the

best regards


>  Again, initially i would suggest here to use some wiki-style
>  web service (even berlios would provide this), but it seems the
>  solution in the google group would be more suitable, at least
>  for building an initial draft.
> Certainly, some of you will now feel (a little?) offended, as you
> have
> put in all the hard work and made everything freely available, so why
> should you bother? Right! You are totally entitled to say that, but
> then please don't present cp2k as something that everybody can (and
> should) use.
> cp2k has obviously a lot of potential, but as long as only a few
> people
> can exploit it, it will stay a sideshow. If you _want_ people to use
> it,
> you have to occasionally make a step towards them.
> Thanks for reading this far. We hope that you don't find this text
> more thought provoking than inflammatory, and rather see it as a
> conscientious effort by devoted users to help bringing cp2k into
> mainstream use. Something that would benefit both, (current and
> future) users and developers.
> with best regards,
>    axel kohlmeyer.
> supported by:
> Mauro Boero
> Guillaume Lamoureux
> Nichols A. Romero
> P.S.: The final edit is by me (axel), so any errors or
> misunderstandings
> are most likely my fault.
> >

More information about the CP2K-user mailing list