Computational Tools Libraries and Frameworks
Computational Tools Libraries and Frameworks
Yaakoub El Khamra
[email protected]
Overview
Things to consider:
● Does it do what you think it does? i.e. is it useful?
● Does it have a usable interface that is usable,
comprehensive enough for your purpose, well documented
and in a language you can access?
Things To Consier
Chances are you will not find tools, libraries and frameworks that all do
the same thing. If you do, there are advantages and disadvantages to
each, so choose wisely:
Tools are typically self contained. Compile and use. They are less
customizable than libraries (limited interface) and much less extensible
than frameworks. You can however get away without any
programming (i.e. no code of your own) with a tool.
Tools, Libraries or Frameworks?
Libraries are meant to be used with your own code, so typically they
have a good interface and a lot of flexibility in their use if the interface
is well designed. If the interface changes, chances are you will have to
change your code.
Frameworks have less flexibility than libraries but offer a lot more in
terms of capabilities. There are frameworks that offer automatic
parallelization with built in adaptive mesh refinement, automatic
checkpoint/restart mechanisms, dynamic load balancing, self
monitoring and a whole lot more. The price you pay would be control
over a lot of aspects of your code: scheduling, the main function and
sometimes a few more intricate aspects of your code (e.g. no static
global variables)
There was a time when frameworks were very popular. These days,
there are only a few frameworks that are being actively
developed. You will find a lot of tools for dedicated applications (e.g.
only solving shallow water equations, or only doing a certain type of
MD simulations). Libraries are most common today, since they
potentially offer greatest flexibility in terms of usage, interface and
extensibility
Popular/available packages
We will cover the major ones that are noteworthy and popular.
There are obviously many other packages that you can use out
there.
Mathematics: BLAS
SAMRAI has not had a release since 2008 (not that I have found). The mailing
lists are fairly active but you will want to assess the level of support you will get
before investing heavily in it
Chombo
Alternatively, in its simplest use, and with minimal effort, it can operate
as a domain decomposition tool for users who want to parallelize their
serial codes, but who do not wish to use adaptivity.