mirror of https://github.com/tLDP/LDP
1458 lines
60 KiB
XML
1458 lines
60 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
<article id="index">
|
|
<articleinfo>
|
|
|
|
<!-- Title -->
|
|
<title>Scientific Computing with Free software on GNU/Linux HOWTO </title>
|
|
|
|
<author>
|
|
<firstname>Manoj</firstname>
|
|
<surname>Warrier</surname>
|
|
<affiliation>
|
|
<!-- Valid email...spamblock/scramble if so desired -->
|
|
<address><email>m_war (at) users.sourceforge.net</email></address>
|
|
</affiliation>
|
|
</author>
|
|
<author>
|
|
<firstname>Shishir</firstname>
|
|
<surname>Deshpande</surname>
|
|
<affiliation>
|
|
<!-- Valid email...spamblock/scramble if so desired -->
|
|
<address><email>shishir (at) ipr.res.in</email></address>
|
|
</affiliation>
|
|
</author>
|
|
<author>
|
|
<firstname>V. S. </firstname>
|
|
<surname>Ashoka</surname>
|
|
<affiliation>
|
|
<!-- Valid email...spamblock/scramble if so desired -->
|
|
<address><email>ashok (at) rri.res.in</email></address>
|
|
</affiliation>
|
|
</author>
|
|
<pubdate>2003-10-03</pubdate>
|
|
<!-- Most recent revision goes at the top; list in descending order -->
|
|
<!-- All dates specified in ISO "YYYY-MM-DD" format -->
|
|
<revhistory id="revhistory">
|
|
|
|
<revision>
|
|
<revnumber>1.2</revnumber>
|
|
<date>2004-10-19</date>
|
|
<authorinitials>M. W</authorinitials>
|
|
<revremark>1 Correction and new additional links</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<revnumber>1.1</revnumber>
|
|
<date>2004-06-21</date>
|
|
<authorinitials>M. W</authorinitials>
|
|
<revremark>Updates and evaluated distros</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<revnumber>1.0</revnumber>
|
|
<date>2003-11-18</date>
|
|
<authorinitials>JP</authorinitials>
|
|
<revremark>Document Reviewed by LDP.</revremark>
|
|
</revision>
|
|
|
|
<revision>
|
|
<revnumber>0.0</revnumber>
|
|
<date>2003-10-01</date>
|
|
<authorinitials>M. W</authorinitials>
|
|
<revremark>first draft proposed</revremark>
|
|
</revision>
|
|
|
|
</revhistory>
|
|
|
|
|
|
<!-- Provide a good abstract; a couple of sentences is sufficient -->
|
|
<abstract>
|
|
<para>
|
|
This document aims to show how a PC running GNU/Linux can be used
|
|
for scientific computing. It lists the various available free software
|
|
and also links on the world wide web to tutorials on getting started
|
|
with the tools.
|
|
</para>
|
|
</abstract>
|
|
|
|
</articleinfo>
|
|
|
|
<sect1 id="preamble">
|
|
<title>Preamble</title>
|
|
|
|
<!-- Legal Sections -->
|
|
<sect2 id="copyright">
|
|
<title>Copyright and License</title>
|
|
|
|
<!-- The LDP recommends, but doesn't require, the GFDL -->
|
|
<para>
|
|
This document, <emphasis>Scientific Computing with free software on GNU/Linux HOWTO</emphasis>,
|
|
is copyrighted (c) 2002 by <emphasis>Manoj Warrier</emphasis>.
|
|
Permission is granted to copy, distribute and/or modify this document under the terms of the
|
|
GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation;
|
|
with no Invariant Sections,
|
|
with no Front-Cover Texts, and with no Back-Cover Texts.
|
|
A copy of the license is available
|
|
<ulink url="http://www.gnu.org/licenses/licenses.html#FDL">
|
|
here</ulink>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="disclaimer">
|
|
<title>Disclaimer</title>
|
|
|
|
<para>
|
|
No liability for the contents of this document is accepted.
|
|
Use of the concepts, examples, links and information is entirely at
|
|
your own risk.
|
|
There may be errors and inaccuracies, that could damage your system,
|
|
waste your time, etc... Proceed with caution, and although
|
|
this is unlikely, the author takes no responsibility whatsoever.
|
|
</para>
|
|
|
|
<para>
|
|
All copyrights are held by their respective owners, unless
|
|
specifically noted otherwise. Use of a term in this document
|
|
should not be regarded as affecting the validity of any trademark
|
|
or service mark. Naming of particular products, software or
|
|
brands should not be seen as endorsements
|
|
</para>
|
|
|
|
<para>
|
|
I have not used many of the software applications to which links are provided.
|
|
There are simply too many applications that do the same thing,
|
|
that one cannot be expected to have used all of them. In a book
|
|
on Scientific Computing using GNU/Linux, one would
|
|
mention ones favorite tool to carry out a task and describe it in
|
|
detail. However this is a howto providing links to various
|
|
available free tools for scientific computing and may contain
|
|
links to some software that promises much but delivers little
|
|
and vice versa.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="motive">
|
|
<title>Motivation</title>
|
|
<para>
|
|
This howto mainly consists of the links provided at
|
|
http://Scilinux.sourceforge.net which has to be disbanded due to a name
|
|
conflict. The best alternative seems to be to make it a Linux document
|
|
and host it at the LDP site. Another reason is that there seems to be
|
|
many free software applications doing the same things. We hope to provide links to
|
|
the available software thereby making it easy for the scientific community
|
|
to make a choice without spending much time.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- Give credit where credit is due...very important -->
|
|
<sect2 id="credits">
|
|
<title>Credits / Contributors</title>
|
|
|
|
<para>
|
|
In this document, I have the pleasure of acknowledging:
|
|
</para>
|
|
<!-- Please scramble addresses; help prevent spam/email harvesting -->
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Linus Trovalds, Richard M. Stallman and their merry men for
|
|
Linux, GNU and also for indirectly broadening various
|
|
perspectives which were not really obvious.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
A host of colleagues and friends from the
|
|
<emphasis> Institute for Plasma Research, India </emphasis>
|
|
for discussions at various times.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Marcel Bose, Ivan Lamouret, K. Scott Hunziker, Livine Christin,
|
|
W. Herbert, Simon Pinches and many others for suggesting various
|
|
links mentioned in this document.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Vasudha my wife for letting me do what I wish and egging me on
|
|
with comments like "let us hope that you will finish at least
|
|
this project"
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>
|
|
Shishir and Ashoka are co-authors of this document because such a
|
|
collection of links was Shishir's idea and Ashoka is always
|
|
contributing by providing links, suggestions and a second point
|
|
of view. They will be helping me maintain this HOWTO too.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- Feedback -->
|
|
<sect2 id="feedback">
|
|
<title>Feedback</title>
|
|
<para>
|
|
Feedback is most certainly welcome for this document. Send
|
|
your additions, comments and criticisms to the following
|
|
email address : <email>m_war at users.sourceforge.net</email>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- Translations -->
|
|
<sect2 id="translations">
|
|
<title>Translations</title>
|
|
<para>
|
|
No translations yet.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- rest of document follows... -->
|
|
|
|
<sect1 id="intro">
|
|
<title>Introduction</title>
|
|
<para>
|
|
GNU/Linux is probably the platform of choice for scientific
|
|
computing. There exists a wide variety of high level languages,
|
|
debugging tools and other code development tools for
|
|
programming, numerical subroutines for solving various types of
|
|
equations, plotting and visualization packages, word processing
|
|
software which can display equations and figures and in fact parallel
|
|
programming software to construct a supercomputer with off the shelf
|
|
PC parts and some hardware. This document aims to provide a list
|
|
of <emphasis> free software </emphasis> for carrying out the above
|
|
tasks and links to tutorials and other documents on how to setup and
|
|
use these software applications.
|
|
</para>
|
|
|
|
<para>
|
|
This document does not aim to provide links to subject specific free
|
|
software available for GNU/Linux systems. It aims to show how
|
|
GNU/Linux can be used best to handle scientific computing tasks.
|
|
It is hoped that people or institutions with interest in a
|
|
specific subject list, compile a list of the free software available
|
|
for that subject ... for example see <emphasis>Linux for Astronomy,
|
|
Linux for Biotechnology </emphasis> and <emphasis> Linux for
|
|
Chemistry </emphasis> at
|
|
<ulink url="http://www.randomfactory.com">The Random Factory
|
|
</ulink>. Another site with a lot of links (to commercial and
|
|
free) scientific software is
|
|
<ulink url="http://SAL.KachinaTech.COM">Scientific Applications
|
|
on Linux</ulink>. The <ulink url="http://www.gnu.org/directory/science/">
|
|
GNU Software Directory</ulink> also has links to many of the links
|
|
provided in this howto plus many more topic specific software.
|
|
You may also want to check out <ulink url="http://freshmeat.net/browse/97/">
|
|
The Science and Engineering</ulink> section at Freshmeat.net.
|
|
</para>
|
|
|
|
<para>
|
|
The software links provided are classified into
|
|
<itemizedlist>
|
|
<listitem> <para>
|
|
<ulink url="./devtools.html">Code development tools</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./mathpack.html">Mathematics packages</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./numlib.html">Numerical subroutines and libraries</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./graphvis.html">Graphics and visualization</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./systems.html">GNU/Linux Systems</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./publish.html">Publishing tools</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./database.html">Databases</ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<ulink url="./lablinux.html">Linux in the Laboratory</ulink>
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Just installing GNU/Linux on your PC makes it a powerful workstation.
|
|
The various popular distributions however do not have all the tools
|
|
needed to make it the ideal scientific computing machine. This HOWTO
|
|
aims to fill in this gap by creating a list of free software useful
|
|
for scientific computing. It is assumed that people reading this
|
|
document already have a PC with Linux and the GNU utilities installed.
|
|
For those who do not have such a setup and want to install GNU-Linux
|
|
can check out <ulink url="./GNULinuxWS.html">GNU/Linux Systems</ulink>
|
|
for links to documents on installing GNU/Linux, and also on how to get
|
|
started using GNU/Linux. Recently there has been an effort by Dirk
|
|
Eddelbuettel to create a scientific computing environment
|
|
<ulink url="http://dirk.eddelbuettel.com/quantian.html">Quantian</ulink>
|
|
which probably is the first GNU-Linux distribution tailored for
|
|
Scientists. I checked out the latest release and it has almost
|
|
all the packages mentioned in this document and many packages
|
|
not mentioned. It is fair to say that if you have any linux distribution
|
|
in which the packages are managed by rpms or any debian based system,
|
|
you will find pre-compiled binaries of these packages and will not
|
|
have to waste much time installing them.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="devtools">
|
|
<title>Code Development Tools</title>
|
|
<para>
|
|
Code development consists of mainly Programming languages,
|
|
Debugging tools, Version Management tools, Compiling tools,
|
|
and Integrated Development Environments (IDEs) where all
|
|
the above are coupled as a single software application.
|
|
</para>
|
|
|
|
<!-- Programming Languages -->
|
|
<sect2 id="ProgLang">
|
|
<title>Programming Languages</title>
|
|
<para>
|
|
Links are provided to various compilers used in Scientific
|
|
Computing like FORTRAN, C, C++, Java and more recently
|
|
Python.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://gcc.gnu.org/">GNU Compiler Collection
|
|
</ulink>:
|
|
GNU's project to produce a world class optimizing compiler.
|
|
It works on multiple architectures and diverse environments.
|
|
Currently GCC contains front ends for C, C++, Objective C,
|
|
GNU Fortran-95, Java, and Ada, as well as libraries for these languages
|
|
(libstdc++, libgcj,..).
|
|
</para>
|
|
<para>
|
|
For manuals on using the various GCC compilers check out
|
|
<ulink url="http://www.gnu.org/software/gcc/onlinedocs/">
|
|
The GCC online documentation</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="ftp://ftp.gnu.org/gnu/g77/index.html">g77
|
|
</ulink>:
|
|
The GCC front end for FORTRAN 77. It is a very good FORTRAN77
|
|
compiler. It however does not have the -r8 option which compiles
|
|
a program as double precision. This could be a good compiler
|
|
design philosophy but in many cases gives problems when porting
|
|
a code from SUN / DEC / HP workstations onto Linux systems.
|
|
The g77 manual is available at
|
|
<ulink url="http://gcc.gnu.org/onlinedocs/g77/">The Gcc Online
|
|
documentation</ulink> site.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://gcc.gnu.org/fortran/">gfortran</ulink>.
|
|
I was happy to receive this link by mail. It was 3 years since I had
|
|
migrated to using the GNU C compiler for scientific computing because
|
|
there was no "truly free" FORTRAN-95 compiler available then. I thank
|
|
Paul Thomas for this link.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://g95.sourceforge.net">g95</ulink>.
|
|
gfortran above and g95 are reportedly offshoots from the same CVS tree.
|
|
Has an impressive list of programs that compiles and runs using this
|
|
compiler.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.llnl.gov/casc/Overture/henshaw/install/node6.html">
|
|
fort77 and f2c</ulink>:
|
|
fort77 is a perl program which invokes the f2c command
|
|
(a Fortran to C translator) transparently, so it can
|
|
be used just like a real Fortran compiler. Fort77 can
|
|
be used to compile Fortran, C and assembler code and
|
|
can link the code with f2c libraries. If you install
|
|
fort77, you'll also need to install the f2c package.
|
|
This does not have the "-r8" problem. You can download
|
|
fort77 and f2c from the above link.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://lush.sourceforge.net">lush</ulink>:
|
|
An object-oriented programming language, which combines the flexibility
|
|
of an interpretive language, with the efficiency of a compiled language.
|
|
It has full interfaces to numerical libraries (GSL, LAPACK, BLAS),
|
|
graphics libraries (OpenGL), which allows creation of graphics and 3D
|
|
animations and many other features that sound too good to be
|
|
true. I have not yet tried this out, but it sounds very promising.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.python.org/topics/scicomp/">
|
|
Scientific Python</ulink>:
|
|
You may want to explore
|
|
<ulink url="http://www.python.org">Python</ulink> for your
|
|
scientific computing needs. Python is an interpreted,
|
|
interactive, object-oriented programming language.
|
|
|
|
It has a number of extensions for numerics, plotting,
|
|
data storage and combined with Tk lets you develop very
|
|
good GUIs for your codes. The most exciting aspect is that
|
|
it simplifies programming because it has modules for almost
|
|
anything (vectors, tensors, transformations, derivatives,
|
|
linear algebra, Fourier transforms, statistics, etc ...) are
|
|
available. You can also wrap C and Fortran libraries from
|
|
Python. Finally if you want to write a numerical scheme of
|
|
your own you may find that it is simpler in Python.
|
|
There are also interfaces to netCDF (portable binary files),
|
|
MPI and BSPlib (parallel programming).
|
|
</para>
|
|
<para>
|
|
You can further explore Python for Scientific computing here:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://starship.python.net/crew/hinsen/scientific.html">
|
|
Scientific-Python</ulink>:
|
|
A collection of modules for scientific computing on Python.
|
|
All the necessary modules can be downloaded as either a tar file
|
|
or an RPM file from here. The maintainer Konrad HINSEN also has
|
|
a nice tutorial on
|
|
<ulink url="http://starship.python.net/crew/hinsen/tutorial.ps">
|
|
Scientific Computing in Python</ulink>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.scipy.org">SciPy</ulink> An open source
|
|
library of scientific tools for Python. It includes modules for
|
|
graphics and plotting, optimization, integration, special
|
|
functions, signal and image processing, genetic algorithms,
|
|
ODE solvers, etc.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<!-- Debugging tools -->
|
|
<sect2 id="DebugTool">
|
|
<title>Debugging Tools</title>
|
|
<para>
|
|
In this section links are given to mainly debugging tools for GCC and
|
|
FORTRAN. I understand that python has a debugging module built in though I
|
|
have not used it. The purpose of a debugger is to allow you to see what is
|
|
going on inside a program while it executes or what the program was doing
|
|
when/if it crashed.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><ulink url="http://www.dsm.fordham.edu/~ftnchek">Ftnchek:</ulink>
|
|
A FORTRAN checker designed to detect errors in a Fortran
|
|
program that a compiler usually does not. Therefore it is best
|
|
to run ftnchek on your FORTRAN programs after it has compiled
|
|
without errors. Its purpose is to assist the user in finding
|
|
semantic errors. Semantic errors are legal in the Fortran
|
|
language but are wasteful or may cause incorrect operation.
|
|
An on-line <ulink url="http://www.dsm.fordham.edu/~ftnchek/html/">
|
|
manual</ulink> is available. This project is looking for volunteers
|
|
to bringing ftnchek up to the Fortran 90 standard.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para> <ulink url="http://www.gnu.org/software/gdb/gdb.html">gdb
|
|
</ulink>:
|
|
All programs written in the languages supported by GCC can be
|
|
debugged using <emphasis>gdb</emphasis>, an excellent interactive,
|
|
command line debugger. You can compile your programs using a -g option
|
|
which then compiles your code with debugging information inserted
|
|
into the executable. It can start your programs, stop your programs
|
|
on specified conditions and at specified locations, examine what
|
|
happened when your program stops. In a large code with multiple
|
|
cascading calls to various functions it can back trace the function
|
|
calls. You can also
|
|
<ulink url="http://sources.redhat.com/gdb/current/onlinedocs/">Download
|
|
the document</ulink> <emphasis>Debugging with GDB</emphasis> and
|
|
a quick reference card.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para> <ulink url="ftp://ftp.x.org/contrib/utilities/">xxgdb:</ulink>
|
|
It is a front end to the gdb debugger. Useful for beginners
|
|
to gdb as it lists out the whole gdb commands as buttons with a area
|
|
for viewing source on which one can include break points, etc by a
|
|
click of the mouse, and another area for viewing the debugging results.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para> <ulink url="http://www.gnu.org/software/ddd/ddd.html">DDD:
|
|
</ulink>
|
|
The GNU Data Display Debugger, GNU DDD, is a graphical front-end for
|
|
command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the
|
|
Perl debugger, or the Python debugger. Besides ``usual'' front-end
|
|
features such as viewing source texts it also has a good interactive
|
|
graphical data display, where data structures are displayed as graphs.
|
|
Follow this link for a <ulink url="http://www.gnu.org/manual/ddd/">
|
|
DDD manual</ulink> in postscript / HTML / PDF format.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<!-- Version Control Tools -->
|
|
<sect2 id="VCT">
|
|
<title>Version Control Tools</title>
|
|
<para>
|
|
It will be worth your while investing some time in learning to use
|
|
one of the version control tools below (cvs is what I use ..) if you
|
|
are into any serious code development.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para> <ulink url="http://www.cvshome.org/dev/codelinux.html">
|
|
Concurrent Versions System </ulink>:
|
|
CVS is one of the most popular version control systems running on the
|
|
Linux operating system. Popular Linux projects like Apache, EGCS, GIMP,
|
|
and others are using CVS to coordinate their efforts ... This is how
|
|
the URL linked above describes their effort.
|
|
</para>
|
|
<para>
|
|
A tutorial on CVS is available at <ulink url="http://www.gentoo.org/doc/cvs-tutorial.html">
|
|
Gentoo Linux Documentation</ulink> and a free CVS book is available
|
|
<ulink url="http://cvsbook.red-bean.com/">here</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para> <ulink url="http://www.xcf.berkeley.edu/~jmacd/prcs.html">
|
|
Project Revision Control System </ulink>:
|
|
PRCS, the Project Revision Control System, is the front end to a set of
|
|
tools that (like CVS) provide a way to deal with sets of files and
|
|
directories as an entity, preserving coherent versions of the entire set.
|
|
PRCS was designed primarily by Paul N. Hilfinger, with input and
|
|
modifications by Luigi Semenzato and Josh MacDonald. PRCS is written and
|
|
maintained by Josh MacDonald. Its purpose is similar to that of SCCS,
|
|
RCS, and CVS, but (according to its authors, at least), it is much simpler
|
|
than any of those systems. This page is where information on the latest
|
|
developments in PRCS can be found. </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.cryon.com/gbuild/">Gbuild</ulink> :
|
|
gbuild is a script written in the Bourne shell language to simplify
|
|
package maintenance by allowing you to automate code update from CVS,
|
|
compilation, building tar/rpms/srpms of your package. some external
|
|
scripts which certain functions of gbuild depend on are written in Perl.
|
|
gbuild is released under the GPL.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2 id="IDE">
|
|
<title>Integrated Development Environments</title>
|
|
<para>
|
|
Integrated development environments (IDEs) can be very useful for
|
|
building code and ideally come with all the above tools (i.e a compiler,
|
|
a debugger and a version control tool). In addition to that IDEs also
|
|
usually provide a makefile generator, documenting help, online help
|
|
manuals, etc.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para> <ulink url="http://www.kdevelop.org/"> Kdeveloper </ulink>:
|
|
A easy to use C/C++ IDE (Integrated Development Environment) for Linux.
|
|
It supports KDE/Qt, GNOME, plain C and C++ projects. This site has a lot
|
|
of documentation ..... a highly browsable site for software developers.
|
|
Specifically, KDevelop manages or provides:
|
|
</para>
|
|
<para>
|
|
All development tools needed for C++ programming like Compiler,
|
|
Linker, automake and autoconf; KAppWizard, which generates complete,
|
|
ready-to-go sample applications; Class generator, for creating new
|
|
classes and integrating them into the current project; File management
|
|
for sources, headers, documentation etc. to be included in the
|
|
project; The creation of User-Handbooks written with SGML and the
|
|
automatic generation of HTML-output with the KDE look and feel;
|
|
Automatic HTML-based API-documentation for your project's classes with
|
|
cross-references to the used libraries; Internationalization support
|
|
for your application, allowing translators to easily add their target
|
|
language to a project;
|
|
KDevelop also includes WYSIWYG (What you see is what you get)-creation
|
|
of user interfaces with a built-in dialog editor; Debugging your
|
|
application by integrating KDbg; Editing of project-specific pixmaps
|
|
with KIconEdit; The inclusion of any other program you need for
|
|
development by adding it to the "Tools"-menu according to your
|
|
individual needs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> <ulink url="http://vdkbuilder.sourceforge.net/">VDKbuilder</ulink>:
|
|
VDKbuilder is a tool that helps programmers in constructing GUI interfaces,
|
|
editing, compiling, linking, and debugging within an integrated environment.
|
|
Using VDKBuilder dramatically reduces developing time since all code related
|
|
to GUI construction and signal processing is automatically generated,
|
|
maintained and updated. It is distributed under the GNU Public License.
|
|
Visit the site for downloading the software.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="mathpack">
|
|
<title>Mathematics Packages</title>
|
|
<para>
|
|
All the links below are free high level languages and Mathematics Packages
|
|
for Scientific Computation on Linux. These packages are usually like a
|
|
Mathematical Laboratory in which numerical computations can be done and
|
|
usually have their own interpreted language. They either link to a
|
|
popular (free) plotting package or have their own graphics and plotting
|
|
capability. They also provide capability to I/O files and interface
|
|
with other programming languages like C, C++, Fortran, etc ... Now a days
|
|
some of them have parallel programming capabilities. I have not included
|
|
<ulink url="http://www.mupad.de/">MuPAD</ulink>, a good symbolic math
|
|
package, since is not really free. Check out if their most
|
|
<ulink url="http://www.sciface.com/personal.shtml"> free license</ulink>
|
|
suits you.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem> <para> <ulink url="http://www.octave.org/">Octave</ulink>:
|
|
An excellent package for numerical computations.
|
|
It uses gnuplot for plotting
|
|
and has a online help. It is also easily extensible (i.e. new functions,
|
|
procedures can be written) either using its own language or by using
|
|
dynamically loadable modules written in C, C++, Fortran or other languages.
|
|
An extensive manual is available
|
|
<ulink url="http://www.octave.org/doc/octave_toc.html">here</ulink>.
|
|
You can get a GNOME based front end for it
|
|
<ulink url="http://freshmeat.net/projects/goctave/">here</ulink>.
|
|
It is distributed under the GNU Public License.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www-rocq.inria.fr/scilab/">Scilab</ulink>:
|
|
Another superb package numerical computations having a good user interface
|
|
and a very good online click-able help. Its plotting and graphic capabilities
|
|
are also very impressive. It also provides for easy interfacing with Fortran
|
|
and C. It has its own
|
|
<ulink url="http://www-rocq.inria.fr/scilab/license.txt">free license</ulink>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> <ulink url="http://wuarchive.wustl.edu/languages/yorick/doc/index.html">
|
|
Yorick</ulink>:
|
|
Yorick is a fast, interpreted language, designed for scientific computing and
|
|
numerical analysis. The syntax is similar to C, but the variables need not
|
|
be declared. It offers an interactive graphics package based on X windows.
|
|
X-Y plots, quadrilateral meshes, filled meshes, cell arrays, and contours are
|
|
supported. You can embed compiled routines in Yorick to solve problems for
|
|
which the interpreter is too slow. It is also useful as a pre and post
|
|
processor for large physical simulation programs. A tutorial like manual
|
|
is available
|
|
<ulink url="http://wuarchive.wustl.edu/languages/yorick/doc/manual/yorick.html">
|
|
here</ulink>.
|
|
Yorick is open source software,
|
|
<ulink url="http://wuarchive.wustl.edu/languages/yorick/doc/copyright.html">
|
|
copyright</ulink> of the Regents of the University of California.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://algae.sourceforge.net/">Algae</ulink>:
|
|
As the above link describes it, Algae is a interpreted language for
|
|
numerical analysis. It was developed as a fast and versatile
|
|
tool, capable of handling large problems. Algae consists of the programming
|
|
language Algae, and algae, the interpreter.
|
|
Its features include speed (generally much faster than octave, RLaB
|
|
and Scilab), storage of sparse arrays and a code profiling capability
|
|
(to check where your code spends its time). A user manual is available
|
|
<ulink url="http://algae.sourceforge.net/algae.html">here</ulink>.
|
|
It is distributed under the GNU General Public License.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> <ulink url="http://yacas.sourceforge.net/">YACAS</ulink>:
|
|
As the above link describes it, "YACAS is an easy to use, general purpose
|
|
Computer Algebra System, a program for symbolic manipulation of
|
|
mathematical expressions. It uses its own programming language designed for
|
|
symbolic as well as arbitrary-precision numerical computations". Links to
|
|
documentation (user manual, tutorial, etc ..) is available
|
|
<ulink url="http://yacas.sourceforge.net/manindex.html">here</ulink>.
|
|
It is distributed under the GNU General Public License.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://rlab.sourceforge.net/">RLAB</ulink>:
|
|
The above link describes it thus, "Rlab is an interactive, interpreted
|
|
scientific programming environment. Rlab is a very high level language
|
|
intended to provide fast prototyping and program development, as well
|
|
as easy data-visualization, and processing". It is distributed under the
|
|
GNU General Public License. The author Ian Searle has written an article in
|
|
<ulink url="http://www.linuxjournal.com/">The Linux Journal</ulink> titled
|
|
<ulink url="http://rlab.sourceforge.net/lj/lj.html">An Introduction to Rlab
|
|
</ulink>
|
|
which as he reminds us, is a bit dated, and a
|
|
<ulink url="http://rlab.sourceforge.net/html/rlab-ref.html">
|
|
Reference Manual</ulink> is also available.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para> <ulink url="http://maxima.sourceforge.net">
|
|
Maxima</ulink>:
|
|
Maxima is a symbolic computation program. The above link describes it
|
|
as follows, "Maxima is a descendant of DOE Macsyma, which had its origins
|
|
in the late 1960s at MIT. It is the only system based on that effort still
|
|
publicly available and with an active user community, thanks to its open
|
|
source nature. Macsyma was the first of a new breed of computer algebra
|
|
systems, leading the way for programs such as Maple and Mathematica. This
|
|
particular variant of Macsyma was maintained by William Schelter from 1982
|
|
until he passed away in 2001. In 1998 he obtained permission to release
|
|
the source code under GPL".
|
|
|
|
</para>
|
|
</listitem>
|
|
<listitem> <para>
|
|
<ulink url="http://www.r-project.org/">The R-Project for Statistical Computing</ulink>:
|
|
R is a language and environment for statistical computing and graphics.
|
|
It provides a large collection of tools for statistical analysis of large
|
|
arrays of data and also graphical facilities. R is also a complete effective
|
|
programming language. For computationally intensive tasks, C, C++ and Fortran
|
|
code can be linked and called at run time. A comprehensive set of manuals
|
|
dealing with installation, introduction, writing extensions, etc ... is
|
|
available <ulink url="http://cran.r-project.org/manuals.html">here</ulink>.
|
|
It is distributed under the GNU General Public License.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.fis.unipr.it/%7Estefanw/gtybalt.html">gTybalt</ulink>:
|
|
gTybalt is a step towards a free computer algebra system. It is object
|
|
oriented, allowing symbolic calculations within C++. It is efficient,
|
|
in the sense that solutions developed with gTybalt can be compiled with
|
|
a C++ compiler and executed independently of gTybalt. The mathematical
|
|
formulae are visualized using TeX fonts and can easily be converted to
|
|
LaTeX. I did not realize that it has good graphic capabilities till I
|
|
checked out the gTybalt
|
|
<ulink url="http://www.fis.unipr.it/%7Estefanw/gtybalt/gtybalt.html">manual</ulink>.
|
|
It is distributed under the GNU General Public License.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www-swiss.ai.mit.edu/%7Ejaffer/JACAL.html">JACAL</ulink>:
|
|
As the link above describes it, " JACAL is an interactive symbolic mathematics
|
|
program. JACAL can manipulate and simplify equations, scalars, vectors,
|
|
and matrices of single and multiple valued algebraic expressions containing
|
|
numbers, variables, radicals, and algebraic differential, and holonomic
|
|
functions".
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.gnu.org/software/bc/bc.html">bc</ulink>:
|
|
bc is an arbitrary precision numeric processing language. It supports
|
|
interactive execution of statements. Click here for a <ulink url="http://www.gnu.org/manual/bc/index.html">Manual</ulink> in a variety of formats.
|
|
It is GNU software and is distributed under the GNU General Public License.
|
|
</para>
|
|
</listitem></itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="numlib">
|
|
<title>Numerical Methods and Libraries</title>
|
|
<para>
|
|
The best thing that could happen for scientific computing with free
|
|
software on GNU/Linux is the GNU Scientific Library
|
|
<ulink url="http://sources.redhat.com/gsl">GSL</ulink>.
|
|
It however has source code only in C and people who use FORTRAN
|
|
will find that a let down. Pouncing on this opportunity it is
|
|
recommended that GSL is another reason (in addition to the GCC
|
|
C compiler, coupled with the advantages of C programming)
|
|
for starting to learn to use C. In addition to this,
|
|
the two best source code repositories for Numerical Methods and
|
|
libraries are <ulink url="http://www.netlib.org">Netlib</ulink>
|
|
and <ulink url="http://math.nist.gov/">GAMS</ulink>.
|
|
There are new numerical packages being developed outside the usual
|
|
"write a FORTRAN program, get a numerical subroutine from INTERNET
|
|
for solving the numerics" concepts. The merits and demerits of this
|
|
approach are debatable, but there exist more options like
|
|
<ulink url="http://oonumerics.org/oon">Object Oriented Numerics</ulink>
|
|
GSL and <ulink url="http://www.ginac.de/">GiNaC</ulink> which are
|
|
exciting developments.
|
|
</para>
|
|
|
|
<sect2 id="Repositories">
|
|
<title>Repositories</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.netlib.org/">Netlib</ulink>:
|
|
An amazing amount of free source code for Numerical Methods. Netlib
|
|
is THE source code repository which contains an innumerable
|
|
amount of source code for Numerical Methods. It also has an active
|
|
<ulink url="http://www.netlib.org/utk/discus">discussion forum
|
|
</ulink> wherein you can submit your queries and stay posted for
|
|
help. Netlib also has a <ulink url="http://www.nhse.org/ptlib">
|
|
Parallel Tools Library </ulink> and a search by subject.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://math.nist.gov/">
|
|
GAMS: Guide to Available Mathematical Software</ulink>
|
|
GAMS has a very useful search using which one can search for
|
|
keywords (example: ``diffusion'' to search for a diffusion equation
|
|
solver). However the browse by package at GAMS reveals that a lot of
|
|
the software they provide is a link to the netlib repository.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://oonumerics.org/oon">Object Oriented Numerics</ulink>
|
|
A site devoted to object oriented numerics. It has a Mailing list,
|
|
Extensive Links to freely available libraries (OO of course)
|
|
and freely available tools for object oriented scientific computing.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://sources.redhat.com/gsl">GNU Scientific Library</ulink>
|
|
The GNU Scientific Library (GSL) is a collection of numerical routines
|
|
written from scratch in C. It provides an Applications Programming
|
|
Interface (API) for C programmers and also allows wrappers to be written
|
|
for very high level languages. It covers a wide range of numerical
|
|
computing topics, has a good manual, is widely portable and is distributed
|
|
under the GNU General Public License.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.ginac.de/">GiNaC</ulink>
|
|
GiNaC is designed to allow the creation of software which need symbolic
|
|
manipulations embedded in them. It extends C++ by a set of algebraic
|
|
capabilities and is recursively named for GiNaC is not a Computer Algebra
|
|
system. It is distributed under the terms and conditions of the GNU
|
|
general public license (GPL).
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Other topic specific numerical libraries</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.fftw.org/">FFTW</ulink>
|
|
FFTW is a collection of fast C routines for computing the Discrete
|
|
Fourier Transform in one or more dimensions. It includes complex,
|
|
real, and parallel transforms, and can handle arbitrary array sizes
|
|
efficiently. This package includes both the double- and
|
|
single-precision FFTW uniprocessors and the threads libraries.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.netlib.org/lapack">LAPACK</ulink>
|
|
LAPACK (Linear Algebra PACKage) is a standard library for numerical
|
|
linear algebra. LAPACK provides routines for solving systems of
|
|
simultaneous linear equations, least-squares solutions of linear
|
|
systems of equations, eigenvalue problems, and singular value
|
|
problems. LAPACK is coded in Fortran77 and is built with egcs.
|
|
It is well documented and widely used (and therefore widely tested).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.nersc.gov/~xiaoye/SuperLU">SuperLU</ulink>
|
|
SuperLU is a general purpose library which performs an LU decomposition
|
|
for the direct solution of large, sparse, non-symmetric systems of linear
|
|
equations on high performance machines. Its written in C and is callable
|
|
from either C or Fortran.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.caam.rice.edu/software/ARPACK/">ARPACK
|
|
</ulink>
|
|
ARPACK is a set of Fortran77 subroutines designed to solve large scale
|
|
eigenvalue problems. A <ulink url="http://www.caam.rice.edu/software/ARPACK/UG/ug.html#ARPACK">Users Guide
|
|
</ulink> is available. The above link also gives information about a
|
|
parallel version of ARPACK - PARPACK and a object oriented version
|
|
ARPACK++.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://icemcfd.com/cfd/CFD_codes.html">
|
|
Computational Fluid Dynamics codes</ulink>
|
|
This link contains a comprehensive listing of public domain, shareware
|
|
and freeware Computational Fluid Dynamics codes links with a description
|
|
of each CFD code.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="graphvis">
|
|
<title>Graphics and Visualization</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.gnuplot.info">Gnuplot</ulink>
|
|
Gnuplot is a command-line driven interactive function plotting
|
|
utility. It handles both curves (2 dimensions) and surfaces (3
|
|
dimensions). Surfaces can be floating in the 3-d coordinate space,
|
|
or as a contour plot. For 2-d plots, there are also many plot
|
|
styles, including lines, points, lines with points, error bars,
|
|
and impulses. Graphs may be labeled with arbitrary labels and
|
|
arrows, axes labels, a title, date and time, and a key. It has
|
|
multiple plotting capabilities too. It allows saving the graphs in
|
|
various formats which can be included in word processors.
|
|
It can be used to generate publication quality plots.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://ngwww.ucar.edu"> NCAR Graphics </ulink>
|
|
A very popular graphics package which is very well documented and widely
|
|
used. It provides basic ingredients for creating complex plots as
|
|
functions / routines that can be called from Fortran and C. There is
|
|
a contributed programming interface to the NCAR Graphics package:
|
|
NCL (NCAR Command Language). The programming interfaces provide access
|
|
to complex graphics utilities like contouring, world map projections,
|
|
and velocity vectors. For the most part, the C interface is built on
|
|
top of the Fortran interface... It is distributed under the GNU public
|
|
license. Click <ulink url="http://ngwww.ucar.edu/ngdoc/ng4.2">here</ulink>
|
|
for going to the documentation of all its various components.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.opendx.org">OpenDX</ulink>
|
|
A very good Open Source Data eXplorer. It can handle large amounts of data
|
|
and creates great visualizations. It was the tool I stumbled upon when
|
|
I wanted a free graphics routine to make 3-D plots and zoom-in, rotate,
|
|
and really eXplore the output Data from my codes. The downside is that
|
|
compiling from source is really challenging and getting started is a
|
|
difficult. However it has excellent documentation distributed with it
|
|
and once I started off it was the best tool I have ever used.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://gri.sourceforge.net">Gri:</ulink>
|
|
It is a language for scientific graphics programming. The claim that Gri
|
|
is similar to LaTeX in the sense that both provide extensive power as a
|
|
reward for tolerating a learning curve seems exciting and I for one want
|
|
to check this out!! Check out the following
|
|
<ulink url="http://www.linuxjournal.com/article.php?sid=3743">article</ulink>
|
|
in The Linux Journal. Go to the gri home page if you are now impressed by
|
|
it and check out download info and manuals.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://mayavi.sf.net">MayaVi:</ulink>
|
|
A scientific data visualizer written in Python. It is distributed under the
|
|
<ulink url="http://www.opensource.org/licenses/bsd-license.html">BSD
|
|
license</ulink>. The screenshots look promising. Check out the above link
|
|
for more details.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.astro.caltech.edu/~tjp/pgplot">PGPLOT:</ulink>
|
|
PGPLOT is a Fortran 77 or C callable subroutine package for drawing
|
|
scientific 2D and Simple 3D plots. One can call these routines during
|
|
runtime and redirect the output to a variety of devices at run time.
|
|
It is well documented and the full documentation is available at the
|
|
above site. It is Free for Non-Commercial Use. A user manual is available
|
|
online at <ulink url="http://www.astro.caltech.edu/~tjp/pgplot/contents.html">PGPLOT
|
|
Users Manual</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://plplot.sourceforge.net/">PLplot:</ulink>
|
|
This is a library of scientific plotting functions that can be called from
|
|
C, C++, FORTRAN, TCL, PYTHON. PLplot features as described in the above link
|
|
are, "It can be used to create standard x-y plots, semilog plots,
|
|
log-log plots, contour plots, 3D plots, mesh plots, bar charts and pie charts.
|
|
Multiple graphs (of the same or different sizes) may be placed on a single
|
|
page with multiple lines in each graph. There are almost 2000 characters
|
|
in the extended character set. This includes four different fonts, the
|
|
Greek alphabet and a host of mathematical, musical, and other symbols.
|
|
A variety of output devices are supported and new devices can be easily
|
|
added by writing a small number of device dependent routines". To download
|
|
click
|
|
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=2915">
|
|
here </ulink>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://plasma-gate.weizmann.ac.il/Grace/">Grace</ulink>
|
|
Grace is a WYSIWYG 2D plotting tool for the X Window System and Motif.
|
|
Grace runs on practically any version of Unix. Grace is a descendant of
|
|
ACE/gr, also known as Xmgr. It is lisenced under the GNU public license.
|
|
This link also has a tutorial and download information.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://scigraphica.sourceforge.net/">SciGraphica
|
|
</ulink>
|
|
SciGraphica is a application for data analysis and technical graphics.
|
|
It fully supplies plotting features for 2D, 3D and polar charts. The
|
|
aim is to obtain a fully-featured, cross-platform, user-friendly,
|
|
self-growing scientific application. It is free and open-source,
|
|
released under the GPL license.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.gnu.org/software/plotutils/plotutils.html">
|
|
Plotutils</ulink>:
|
|
The GNU plotutils package contains software for both programmers and
|
|
technical users. Its centerpiece is libplot.a powerful C/C++ function
|
|
library for exporting 2-D vector graphics in many file formats, both
|
|
vector and raster. It can also do vector graphics animations.
|
|
Besides libplot, the package contains command-line programs for
|
|
plotting scientific data. Many of them use libplot to export graphics.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.dislin.de">DISLIN</ulink>
|
|
DISLIN is a high-level plotting library for displaying data as curves,
|
|
polar plots, bar graphs, pie charts, 3D-color plots, surfaces, contours
|
|
and maps.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://ImLib3d.sourceforge.net">ImLib3D</ulink>
|
|
ImLib3D is an open source C++ library for 3D (volumetric) image processing.
|
|
It contains most basic image processing algorithms, and some more
|
|
sophisticated ones. It comes with an optional viewer that features
|
|
multi-planar views, animations, vector field views and 3D (OpenGL)
|
|
multi-planar.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://ptolemy.eecs.berkeley.edu/java/ptplot">Ptplot</ulink>:
|
|
Ptplot is a 2D data plotter and histogram tool implemented in Java.
|
|
Ptplot can be used as a standalone applet or application, or it can be
|
|
embedded in your own applet or application.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
<sect1 id="systems">
|
|
<title>Programming systems for GNU/Linux</title>
|
|
<para>
|
|
This section deals with links to tutorials and documents for installing
|
|
Linux on a PC, getting started with Linux, and then going a step further
|
|
-- to optimize your PC for processing power, using multiple processors
|
|
(Symmetric Muliti Processing - SMP); making a cheap, upgradeable
|
|
Supercomputing Linux cluster and finally links to software to do parallel
|
|
programming on Linux.
|
|
</para>
|
|
<sect2 id="GNULinuxWS">
|
|
<title>The GNU/Linux Workstation</title>
|
|
<para>
|
|
As with most documentation related to GNU/Linux,
|
|
<ulink url="http://tldp.org">the Linux Documentation project's</ulink>
|
|
home page is a priceless source. You might first want to read
|
|
<ulink url="http://tldp.org/HOWTO/Installation-HOWTO/index.html">
|
|
The Linux Installation HOWTO</ulink>. For those who want to install
|
|
Linux along with Windows might want to browse through
|
|
<ulink url="http://www.tldp.org/HOWTO/Linux+Windows-HOWTO/index.html">
|
|
The Linux + Windows HOWTO</ulink>. When installing Linux make sure
|
|
that you choose to install all documentation. After installing Linux,
|
|
a good, comprehensive document to getting started with using Linux is
|
|
<ulink url="http://rute.sourceforge.net">The Rute Users Tutorial and
|
|
Exposition</ulink> which is a beginners guide to Linux and UNIX like
|
|
systems. I'd like to give a less intimidating (size-wise) link to a
|
|
small beginners guide, but U will find this useful after taking the
|
|
plunge. You might also want to go through <ulink url="http://www.tldp.org/LDP/sag/index.html">The Linux System
|
|
Administrator's Guide</ulink> and to check out <ulink url="http://www.tldp.org/LDP/lame/LAME/linux-admin-made-easy/index.html">
|
|
The Linux Administration Made Easy (LAME) guide</ulink>
|
|
It attempts to describe day-to-day administration and maintenance
|
|
issues commonly faced by Linux system administrators.
|
|
</para>
|
|
</sect2>
|
|
<sect2 id="PPSMP">
|
|
<title>Parallel Processing and Symmetric Multiprocessing:
|
|
Supercomputing</title>
|
|
<para>
|
|
It is possible to get large volume number crunching without
|
|
spending millions of rupees on a supercomputer. You only need
|
|
to link together (by some high speed network) the requisite
|
|
number of CPUs, with GNU/LINUX as the underlying OS. Add
|
|
some freely available message passing software and a effective
|
|
parallel processing number crunching machine is made. Such
|
|
clusters are called "Beowulf clusters". The other advantages
|
|
of such a cluster other than building costs is, up-gradation
|
|
costs are minimal. The two best resources for Linux cluster
|
|
builders are
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para> <ulink url="http://www.beowulf.org">The Beowulf
|
|
Project home page </ulink> and </para>
|
|
</listitem>
|
|
<listitem> <para>
|
|
<ulink url="http://www.extremelinux.org">The Extreme
|
|
Linux Project</ulink>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
These sites are upgraded frequently with useful information
|
|
for cluster builders.
|
|
</para>
|
|
<sect3 id="ppdocs">
|
|
<title>Parallel computing document links</title>
|
|
<para>
|
|
You will also want to read this excellent article on
|
|
<ulink url="http://freshmeat.net/articles/view/458/">Linux
|
|
Clustering Software</ulink> (and the large variety of links
|
|
it provides) by Joe Greenseid. I hope to go through the links
|
|
and include them subsequently in this HOWTO.
|
|
</para>
|
|
|
|
<para>
|
|
Other free document links for parallel processing are:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/Beowulf-HOWTO">
|
|
The Beowulf Howto </ulink>:
|
|
This document introduces the Beowulf Supercomputer architecture
|
|
and provides background information on parallel programming,
|
|
including links to other more specific documents, and web pages.
|
|
But, before that for an understanding of parallel processing and
|
|
Symmetric multiprocessing on Linux, check out the following:
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/Parallel-Processing-HOWTO">
|
|
The Parallel Processing on Linux HOWTO</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/SMP-HOWTO">
|
|
The Symmetric Multiprocessing HOWTO</ulink>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3 id="PPSW">
|
|
<title> Parallel processing software for Linux </title>
|
|
<para>
|
|
Now after reading the above documents, you have an idea of parallel
|
|
processing. Parallel program libraries are the core of parallel processing
|
|
on a Linux cluster. There are various free implementations of parallel
|
|
processing libraries. Since parallel processing is all about performance,
|
|
these libraries have some very nice functional tools to analyze your parallel
|
|
program performance. Given below is a set of links to these parallel
|
|
program libraries and tools.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www-unix.mcs.anl.gov/mpi">
|
|
Message Passing Interface</ulink>:
|
|
MPI is a standard specification of message passing libraries. The above
|
|
document gives a lot of links to documents on the standard, etc.. A MPI
|
|
implementation for Linux
|
|
<ulink url="http://www-unix.mcs.anl.gov/mpi/mpich">mpich</ulink> is also
|
|
available at that site. There are a lot of documents for
|
|
<ulink url="http://www-unix.mcs.anl.gov/mpi/tools.html">Learning to use MPI
|
|
</ulink>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.lam-mpi.org/">Local Area Multicomputer
|
|
- LAM</ulink>:
|
|
LAM (Local Area Multicomputer) is an MPI programming environment and
|
|
development system for heterogeneous computers on a network.
|
|
With LAM, a dedicated cluster or an existing network computing
|
|
infrastructure can act as one parallel computer solving one problem.
|
|
LAM features extensive debugging support in the application development
|
|
cycle and peak performance for production applications. LAM features a
|
|
full implementation of the MPI communication standard.
|
|
You can download the sources (tar-zipped, rpm) or binaries from
|
|
<ulink url="http://www.lam-mpi.org/download/">here</ulink>
|
|
A host of MPI tutorial links and also a `getting started with LAM'
|
|
tutorial is available <ulink url="http://www.lam-mpi.org/tutorials/">
|
|
here</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.epm.ornl.gov/pvm/pvm_home.html">
|
|
Parallel Virtual Machine </ulink>:
|
|
As the PVM home page describes, it is a software package that permits
|
|
a heterogeneous collection of Unix and/or NT computers hooked together
|
|
by a network to be used as a single large parallel computer. Thus large
|
|
computational problems can be solved more cost effectively by using the
|
|
aggregate power and memory of many computers. The software is very
|
|
portable. The source, which is available free thru netlib, has been
|
|
compiled on everything from laptops to CRAYs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://ganglia.sourceforge.net">Ganglia</ulink>:
|
|
Ganglia is an open source cluster monitoring and execution environment
|
|
developed at the University of California, Berkeley Computer Science
|
|
Division. As the above link describes it, "Ganglia is as simple to
|
|
install and use on a 16-node cluster as it is to use on a 512-node
|
|
cluster as has been proven by its use on multiple 500+ node clusters".
|
|
It not only can link nodes in a cluster, but also link clusters to other
|
|
clusters.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="publish">
|
|
<title>
|
|
Word-Processing and Poster presenting tools on Linux
|
|
</title>
|
|
<para>
|
|
Those of you who do not use <ulink url="http://www.latex-project.org">
|
|
LaTeX</ulink> and find it challenging and want a WYSIWYG word processor,
|
|
keep your ears tuned to <ulink url="http://www.openoffice.org">OpenOffice
|
|
</ulink>
|
|
which has released version 1.2 of its openoffice software. Its tools
|
|
may compare well with the best in the market.
|
|
</para>
|
|
|
|
<sect2 id="wp">
|
|
<title> Word Processing Tools </title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.latex-project.org">Latex</ulink>:
|
|
LaTeX is a high-quality typesetting system, with features designed for
|
|
the production of technical and scientific documentation. LaTeX is the
|
|
de facto standard for the communication and publication of scientific
|
|
documents.
|
|
<ulink url="http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/">
|
|
David R.Wilkin's primer </ulink> "Getting Started with LaTeX"
|
|
is a good tutorial to getting started with LaTeX.
|
|
For those who have to live with a WYSIWYG documenting tool, check
|
|
<ulink url="http://www.lyx.org">LyX</ulink>. This is a front-end for
|
|
latex. It isn't as powerful as latex proper, but helps with a good WYSIWIG.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://lout.sourceforge.net">Lout</ulink>:
|
|
A document formatting system similar to latex. Good features, documentation
|
|
and history. Light weight and outputs postscript. Thanks to Emiliano Gavilan
|
|
for this link.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.abisource.com">Abiword</ulink>:
|
|
As the AbiWord home page says,
|
|
"AbiWord is suitable for typing papers, letters, reports, memos, and so forth".
|
|
It has won many awards and seems to be the best open source WYSIWYG word
|
|
processor. Check out the above link to know more about it and download it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.koffice.org/kword">kword</ulink>:
|
|
As the kword home page says,
|
|
"KWord is a FrameMaker-like word-processing and desktop publishing application.
|
|
KWord is capable of creating demanding and professional looking documents.
|
|
Whether you are a corporate or home user, production artist or student, KWord
|
|
will prove a valuable and easy to use tool for all your word processing and
|
|
layout needs". Check out the above link to know more about it and download it.
|
|
(you might want to know more about the whole <ulink url="http://www.koffice.org">
|
|
koffice</ulink> suite).
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2 id="ppt">
|
|
<title> Poster presentation tools </title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.koffice.org/kpresenter/">
|
|
KPresenter</ulink>:
|
|
KPresenter is the presentation tool of the KOffice suite of office
|
|
utilities. It allows screen presentations with all the trappings one
|
|
is used to seeing in costly presentation tools. It also allows honest,
|
|
real scientific presentations where one does not have to impress the
|
|
audience with non subject specific stuff :-). The best thing about it
|
|
is the possibility of saving the presentation as a html file. It makes
|
|
portable network graphics files with each presentation slide. With a
|
|
smattering of knowledge of html files one could put in a animated image
|
|
as a image link thereby allowing one to show movies too when necessary.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www-epb.lbl.gov/xfig/">Xfig </ulink>:
|
|
Though the man page claims that it is a facility for the
|
|
interactive generation of figures ...., It in fact much more than that.
|
|
Other than generating figures for elucidating what you want to say in
|
|
a poster, it helps you import and export figures in a variety of formats,
|
|
write text in various fonts and sizes, generate Greek symbols and color
|
|
text, Save as latex picture file or any other format supported by your
|
|
word processor for inclusion in your publications, generate GIFs of each
|
|
page of the poster to put on your web site, and finally it generates
|
|
*.fig files which are small in size. The only thing on my wish list for
|
|
xfig is the capability to edit the imported pictures which are not in
|
|
*.fig format. Therefore for a computer screen projected poster
|
|
presentation you need a frames capable browser with contents in one frame
|
|
and the xfig generated posters (exported as *.png or *.jpg from Xfig) on
|
|
the other.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="database">
|
|
<title> Free Database Management Systems for Linux </title>
|
|
<para>
|
|
Scientific computing has two parallel data needs, one the physical values
|
|
of the data itself, and the other is Database systems to manage the data.
|
|
In this document links are provided only to database resources on the net
|
|
and free Database systems. I personally do not use databases to manipulate
|
|
the data generated by my codes. gawk, sed, and other basic Unix commands
|
|
like grep, head and tail seem sufficient to manipulate any data I generate.
|
|
I thought I should include this section for the large data generators.
|
|
Hopefully a person with experience in databases will make this section better.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.iam.unibe.ch/~scg/Archive/Software/FreeDB/ ">
|
|
Free database list</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.acm.org/sigmod/databaseSoftware/ ">
|
|
ACM SIGMOD</ulink>:
|
|
Index of publicly available database software.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.mysql.com">MySQL</ulink>:
|
|
A relational Database management system.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.postgresql.org">PostgreSQL</ulink>
|
|
As the link above describes it ...PostgreSQL is
|
|
a sophisticated Object-Relational DBMS, supporting almost all SQL
|
|
constructs, including subselects, transactions, and user-defined types
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="lablinux">
|
|
<title>Linux in the laboratory</title>
|
|
<para>
|
|
Again this is a section where I have zero experience and hope someone will
|
|
with experience will contribute towards making this document better. However,
|
|
I provide below links suggested by Sambaran Pahari and Deepak Gupta. These
|
|
links seem to be very good from my inexperienced viewpoint.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.llp.fu-berlin.de">The Linux Lab Project</ulink>
|
|
A site for "Linux Lab Project."..everything to do with laboratory process,
|
|
process control, automation and data acquisition on Linux.
|
|
As the above link says, "The Linux lab project is intended to help people with
|
|
development of data collection and process control software for LINUX.
|
|
It is planned to provide a standardized development environment for a wide variety
|
|
of applications from hardware support to application development".
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="http://www.torque.net/linux-pp.html">
|
|
Linux Parallel port drivers</ulink>:
|
|
The above link says, "If you have a parallel port device and would
|
|
like to know if there is a Linux driver available for it --then this is
|
|
the place to look". Sounds like a confident claim.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
</article>
|