-
Notifications
You must be signed in to change notification settings - Fork 0
/
introduction.tex
48 lines (42 loc) · 2.54 KB
/
introduction.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
\chapter{Introduction}
OpenCAL (Open Computing Abstraction Layer) is a parallel computational
software library, developed as an Open Source project at the
Department of Mathematics and Computer Science of the University of
Calabria (Italy) and released under the LGPL v3.0 license.
OpenCAL allows for the definition of numerical simulation models based
on the Exteded Cellular Automata (XCA) general formalism, thus
supporting Cellular Automata (CA), the Finite Differences method (FDM)
and, in general, all numerical methods based on structured
computational grids.
OpenCAL is developed in C for the maximum efficiency, can be used in
C/C++ applications, and can run in parallel on both CPUs, thanks to
its implementation based on OpenMP, and on GPUs, thanks to its
implementation based on OpenCL.
The library has been tested on both CPUs and GPUs by considering
different CA examples of application, including the well known
Conway's Game of Life and the SciddicaT XCA debris flows simulation
model. Results have demonstrated the goodness the library both in
terms of usability and performance.
In the present release, 2D and 3D numerical models can be
defined. Actually, even 1D models can be defined as a degenerate case
of 2D CA. The library also offers diverse facilities (e.g. it provides
many predefined cell neighborhoods), allows to make the simulation
main loop explicit and provides a built in optimization algorithm to
speed up the simulation. Moreover, OpenCAL offers a built in
interactive 2D/3D visualization system developed in OpenGL
Compatibility Profile, so that it can run everywhere, even on old
workstations.
The present manual reports the main usage of the \verb'OpenCAL'
library related to the sequential, OpenMP- and OpenCL-based versions,
the installation procedure, besides examples of application. In
particular, Chapter \ref{ch:installation} deals with download and
installation, while Chapter \ref{ch:CA} introduces the XCA
computational paradigm. Chapter \ref{ch:opencal} is about serial CA
and XCA development with OpenCAL, and introduces the different library
features by examples. Chapter \ref{ch:opencal-omp} is about the
OpenMP-based parallel version of OpenCAL and also introduces the
library by examples. Chapter \ref{ch:opencal-cl} briefly introduces to
General Purpose GPU programming with OpenCL and then presents the
OpenCL-based version of OpenCAL, still by examples. OpenCAL-GL is
discussed at the end of each of the above Chapters, together with
computational performances of some of the implemented CA.