femlisp-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[femlisp-user] Femlisp-2.0.1


From: Nicolas Neuss
Subject: [femlisp-user] Femlisp-2.0.1
Date: Mon, 06 Feb 2017 11:16:40 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Dear Femlisp users (or, at least, persons interested in it),

a new Femlisp with version number 2.0.1 is available, which is a rather
large step forward compared with Femlisp version 1.0.

The most exciting thing is probably, that there is support for
parallelization now, both with OS threads and using MPI.

Below are the relevant excerpts from the CHANGES file.

Best regards,

Nicolas

--8<---------------cut here---------------start------------->8---

* From Femlisp-2.0.0 to Femlisp-2.0.1

A generic function CHECK was introduced in FL.UTILITIES.  We do not
export it, because of the danger of interfering with the use in other
packages.

Working demonstrations also for an MPI distributed calculation.

We introduced the following kludge: The Data Explorer process is
killed when SBCL is terminated.  Ideally, this should be the case
without explicit coding.

More robust handling of thread affinity handling of the worker
threads.  If the 'lscpu' command is not available, it is simply not
done.

* From Femlisp-1.1.0 to Femlisp-2.0.0

Some demonstration of parallel computing can be found as Femlisp demos
under Arcticles -> Heisig-Neuss-2017.

Interactive control of an MPI worker pool can be done via LFARM.

The DDO library was integrated into Femlisp.  It allows to distribute
objects across a distributed memory architecture where different
worker nodes communicate via MPI.  A mesh can be distributed across
the nodes.  Assembly then happens completely parallel, and also some
solvers are mostly parallel.

lparallel worker pools can be allocated with (new-kernel).  The pool
is used for discretization and some matrix operations (especially the
calculation of defect, interpolation, restriction).

There is a new library cl-cpu-affinity in the external directory which
is an adaption of Nikodemus Siivola's sb-cpu-affinity.  It allows to
pin workers to certain CPUs.

This is a major step forward because the basis for parallelization has
been laid.  Femlisp can now work in parallel both in a shared-memory
setting, and also under MPI.  For a more precise description, see the
following points.  Also the article Heisig-Neuss (2017) which
describes the motivation behind these changes is interesting in this
respect.  Calculations for this article can be found in the file
#p"femlisp:src;applications;articles;heisig-neuss-2017.lisp".

* From Femlisp-1.0.0 to Femlisp-1.1.0

Faster and better calculation of multi-dimensional Lagrange shape
functions by introducing a new function POLY-EXTERIOR-PRODUCT.

Many missing DEFGENERICS were added for making SBCL completely silent
during compilation of Femlisp.

Introduced a new concept for modification of functions/methods by
hooks later on.  This allows features which in some circumstances
could also be achieved by CLOS around methods.  However, in contrast
to around methods, this mechanism does not require the introduction of
new CLOS classes.  At the moment, we use it mainly for transforming
thread-parallel Femlisp into an MPI-distributed version as follows: In
the property list of certain containers a flag (DISTRIBUTED-P)
indicates that the container contains distributed objects, and using
the hook mechanism, some methods are modified such that MPI related
operations (like, e.g., synchronization) are performed.

OS thread parallelization of several code parts, especially mesh
refinement, discretization, several linear algebra routines working
with sparse matrices, especially such that the BPX solver (defect
calculation, Jacobi smoothing, CG) works.

A change in SBCL before 12.1.2016 broke the rather elegant but
non-ANSI-compliant implementation of the macro ENSURE in the
FL.UTILITIES package.  I replaced it by a conforming implementation
which was already there but commented out.  I should not do this
again.  Discovered then a usage bug, because the new macro was less
permissive than the old one.

OS thread parallelization of discretization and also the Jacobi
scheme.
--8<---------------cut here---------------end--------------->8---

-- 
Nicolas Neuss    Email: address@hidden  Tel: 0049-9131-85-67208



reply via email to

[Prev in Thread] Current Thread [Next in Thread]