Contents of /trunk/doc/install/source.tex

Revision 4915 - (show annotations)
Wed Apr 30 05:29:23 2014 UTC (5 years, 4 months ago) by jfenwick
File MIME type: application/x-tex
File size: 24495 byte(s)
Fixes for macports

 1 %!TEX root = install.tex 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 % Copyright (c) 2012-2014 by University of Queensland 4 5 % 6 % Primary Business: Queensland, Australia 7 % Licensed under the Open Software License version 3.0 8 9 % 10 % Development until 2012 by Earth Systems Science Computational Center (ESSCC) 11 % Development 2012-2013 by School of Earth Sciences 12 % Development from 2014 by Centre for Geoscience Computing (GeoComp) 13 % 14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 15 16 % Notes about compilers 17 18 \chapter{Installing from Source}\label{chap:source} 19 20 This chapter assumes you are using a unix/posix like system (including MacOSX). 21 22 \section{Parallel Technologies}\label{sec:par} 23 It is likely that the computer you run \escript on, will have more than one processor core. 24 \escript can make use of multiple cores [in order to solve problems more quickly] if it is told to do so, 25 but this functionality must be enabled at compile time. 26 Section~\ref{sec:needpar} gives some rough guidelines to help you determine what you need. 27 28 There are two technologies which \escript can employ here. 29 \begin{itemize} 30 \item OpenMP -- more efficient of the two [thread level parallelism]. 31 \item MPI -- Uses multiple processes (less efficient), needs less help from the compiler. 32 \end{itemize} 33 34 Escript is primarily tested on recent versions of the GNU and Intel suites (g++'' / icpc''). 35 However, it also passes our tests when compiled using clang++''. 36 The table below shows what methods are available with which compilers. 37 38 \begin{center} 39 \begin{tabular}{|l|c|c|c|}\hline 40 & Serial & OpenMP & MPI \\\hline 41 $\leq$ g++-4.2.1 & \checkmark & \raisebox{-0.1cm}{\footnotemark}& \checkmark \\\hline 42 g++ (recent $\geq 4.3.2$) & \checkmark& \checkmark& \checkmark \\\hline 43 icpc(10) & \checkmark& \checkmark& \checkmark \\\hline 44 icpc(11) & \checkmark& \raisebox{-0.1cm}{\footnotemark} &\checkmark \\\hline 45 icpc(12) & \checkmark& \checkmark&\checkmark \\\hline 46 clang++ & \checkmark& & \checkmark\\\hline 47 \end{tabular} 48 \end{center} 49 \addtocounter{footnote}{-1} 50 \footnotetext{The \openmp support in g++-4.2.1 is buggy/non-functional.} 51 \addtocounter{footnote}{1} 52 \footnotetext{There is a subtle bug in icpc-11 when \openmp and c++ exception handling 53 are combined.} 54 55 \noindent Where both \openmp and \mpi are marked, \escript can be compiled with either or both. 56 A \checkmark mark means that combination passes our tests. 57 58 \subsection{What parallel technology do I need?}\label{sec:needpar} 59 If you are using any version of Linux released in the past few years, then your system compiler will support 60 \openmp with no extra work; so you should use it. 61 You will not need MPI unless your computer is some form of cluster. 62 63 If you are using BSD or MacOSX and you are just experimenting with \escript, then performance is 64 probably not a major issue for you at the moment so you don't need to use either \openmp or MPI. 65 This also applies if you write and polish your scripts on your computer and then send them to a cluster to execute. 66 If in the future you find escript useful and your scripts take significant time to run, then you may want to reinstall 67 \escript with more options. 68 69 In general, for a single computer, \openmp will give better performance (both time and memory) so use it if possible. 70 If \openmp is not an option, then use MPI. 71 72 Note that even if your version of \escript has support for \openmp or MPI, you will still need to tell the system to 73 use it when you run your scripts. 74 If you are using the \texttt{run-escript} launcher, then this is controlled by the \texttt{-t} and \texttt{-p} options. 75 If not, then consult the documentation for your MPI libraries (or the compiler documentation in the case of OpenMP 76 \footnote{It may be enough to set the \texttt{OMP\_NUM\_THREADS} environment variable.}). 77 78 If you are using MacOSX, then see the next section, if not, then skip to Section~\ref{sec:build}. 79 80 \section{MacOS} 81 82 To build \escript from source you need to choose and install the following (if you already have some parts installed, skip 83 that section). 84 \begin{itemize} 85 \item \texttt{XCode} and the associated command line tools. [Section~\ref{sec:initcompiler}] 86 \item A package manager. [Section~\ref{sec:osxpackagemanager}] 87 \item A compiler. [Section~\ref{sec:osxcompiler}] 88 \end{itemize} 89 90 As noted above, different compilers have varying support for parallel processing technologies so your choice of 91 compiler may limit your options of parallel technologies. 92 Once you have the pieces in this section, go to Section~\ref{sec:build} for build instructions. 93 94 \subsection{Initial compiler}\label{sec:initcompiler} 95 \emph{This information is accurate as far as we can tell at time of writing but things may change.} 96 97 Even if you wish to install and use a different compiler later, the first step is generally 98 to get some compiler onto your system. 99 100 As of OSX10.9, the command \texttt{xcodebuild} will allow you to download and install the commandline tools seemingly 101 without an AppleID. 102 For previous releases, it seems to be trickier to get the basic compiler without doing one of the following: 103 \begin{itemize} 104 \item purchasing an iTunes gift card. 105 \item giving Apple access to your credit card. 106 \item signing up as an Apple developer\footnote{If you do this you can download a command line tools'' package 107 which installs the relevant compilers without needing to install all of \texttt{XCode}.} and giving up personal information. 108 \end{itemize} 109 110 If you install \texttt{XCode}, you will need to download the command line tools'' optional package [see \texttt{XCode} documentation for details]. 111 112 There are also a number of projects on the net which aim to deliver compilers for MacOS. 113 Use at your own risk. 114 For example: 115 \begin{itemize} 116 \item \url{http://hpc.sourceforge.net} 117 \item \url{http://kennethreitz.org/experiments/xcode-gcc-and-homebrew} 118 \end{itemize} 119 120 \subsection{OSX Package Managers}\label{sec:osxpackagemanager} 121 Once you have a working compiler, you will need to consider how you will install the components \escript needs. 122 While it is certainly possible to compile and install these pieces manually, it can be easier to use a tool 123 which handles some of the details for you. 124 This is especially true if you will need to uninstall or upgrade them later. 125 126 On OSX, there are a number of options. 127 The popular ones at time of writing seem to be \texttt{macports} and \texttt{homebrew}. 128 (We have not experimented with \texttt{fink}). 129 \escript does not assume that you are using a particular package manager\footnote{or even if you are using one at all.}. 130 The configuration instructions/files in this guide are just examples that we have found to work. 131 132 Note that package managers will make changes to your computer based on programs configured by other people from 133 various places around the internet. 134 It is important to satisfy yourself as to the security of those systems. 135 136 Please consult the documentation for your chosen package manager to determine how to set it up. 137 138 \subsection{A compiler}\label{sec:osxcompiler} 139 While the command line tools described in \ref{sec:initcompiler}, do contain a c++ compiler, in recent versions of OSX, 140 it is likely to be some version of \texttt{clang++}\footnote{even if it is 141 labelled as g++ it is likely clang++ under the hood.}. 142 If you don't need \openmp or genuine \texttt{g++} or you have installed an \openmp supporting compiler 143 using some other method, then you can skip to Section~\ref{sec:build}. 144 145 If you are still reading this part, we assume that you wish to use \texttt{g++} to build escript on your system and that you are 146 using a package manager. 147 The challenge here isn't installing the compiler itself. 148 The issue is that the other dependencies that \escript needs have 149 probably\footnote{or will probably be compiled'' in the case of \texttt{homebrew}.} been compiled by \texttt{clang} rather than the compiler 150 you want to use. 151 A lot of the time this is fine, but in the case of \texttt{c++} libraries such as \texttt{boost}, the result can be two different 152 standard c++ libraries\footnote{\texttt{libstdc++} and \texttt{libc++} on OSX 10.9.} being used in the same program and confusing matters. 153 Apart from giving up, there are two ways to try to solve this problem. 154 \begin{enumerate} 155 \item Changing the compiler that your package manager uses to compile its packages. 156 \emph{This is not for the faint hearted!} But we do provide some instructions in Appendix~\ref{chap:chcomp}. 157 \item Install most of the libraries using your package manager to install most things and then compile the c++ parts yourself. 158 (The most important one is \texttt{boost}). 159 We have tested this on Macports and it works well. The only trick is to make sure that your replacement'' components are in a separate 160 directory which is ahead of you Macports directory in the various paths (\texttt{PATH, LD\_LIBRARY\_PATH, DYLD\_LIBRARY\_PATH}). 161 \end{enumerate} 162 163 164 165 166 % \subsection{Packaging System} 167 % The packaging system (also known as the package manager) is the tool you use to search for and install new open source software. 168 % For Linux, there will be one set up by default: the apt tools on Debian and Ubuntu, yast on Suse, yum on the RedHat family. 169 % On BSD systems this will be a combination of \texttt{pkg_add} and the \texttt{ports} tree. 170 171 % For MacOS, this is a bit more tricky. 172 % There are a number of possible systems including \texttt{macports} and \texttt{homebrew}\footnote{There is also \texttt{fink}, 173 % but we have not experimented with that.}, but they do not come pre-installed so if you want to make use of one you will need 174 % you will need to install it. 175 176 % Packaging systems will make changes to your computer based on programs configured by other people from 177 % various places around the internet. 178 % It is important to satisfy yourself as to the security of those systems. 179 180 % If you are using Linux or have decided that you don't want to use OpenMP skip to Section~\ref{sec:build}. 181 182 183 % \textsl{This whole section could be moved to an appendix. 184 % Need to make it clear somewhere near that it is not intended to be complicated but to give options. 185 % } 186 187 188 % make it clear that escript can be customised to use whatever you have 189 190 %Should include optional customisation 191 192 %Talk about options_files and the ability to specify them 193 194 %talk about -j1 and replacing it with more ops 195 %Talk about installation prefix 196 197 %also note that this doesn't build the doco but we do have downloads for that or you can install extra packages 198 199 \section{Building}\label{sec:build} 200 201 To simplify things for people, we have prepared \texttt{_options.py} files for a number of 202 systems\footnote{These are correct a time of writing but later versions of those systems may require tweaks. 203 Also, these systems represent a cross section of possible platforms rather than meaning those systems get particular support.}. 204 The \texttt{_options.py} files are locate in the scons/os directory. We suggest that the file most relavent to your os 205 be copied from the os directory to the scons directory and renamed to the form XXXX_options.py where XXXX should be replaced with your computer's name. 206 If your particular system is not in the list below, or if you want a more customised 207 build\footnote{for example, you want MPI functionality or you wish to use a different compiler}, 208 see Section~\ref{sec:othersrc} for instructions. 209 \begin{itemize} 210 \item Debian - \ref{sec:debsrc} 211 \item Ubuntu - \ref{sec:ubsrc} 212 \item OpenSuse - \ref{sec:susesrc} 213 \item Centos - \ref{sec:centossrc} 214 \item Fedora - \ref{sec:fedorasrc} 215 \item MacOS (macports) - \ref{sec:macportsrc} 216 \item MacOS (homebrew) - \ref{sec:homebrewsrc} 217 \item FreeBSD - \ref{sec:freebsdsrc} 218 \end{itemize} 219 220 Once these are done proceed to Section~\ref{sec:cleanup} for cleanup steps. 221 222 All of these instructions assume that you have obtained the source (uncompressed it if necessary). 223 \subsection{Debian}\label{sec:debsrc} 224 225 \begin{shellCode} 226 sudo aptitude install python-dev python-numpy libboost-python-dev libnetcdf-dev 227 sudo aptitude install scons lsb-release 228 sudo aptitude install python-sympy python-matplotlib python-scipy 229 sudo aptitude install python-pyproj python-gdal 230 \end{shellCode} 231 232 233 \begin{optionalstep} 234 If for some reason, you wish to rebuild the documentation, you would also need the following: 235 \begin{shellCode} 236 sudo aptitude install python-sphinx doxygen python-docutils texlive 237 sudo aptitude install zip texlive-latex-extra latex-xcolor 238 \end{shellCode} 239 \end{optionalstep} 240 241 \noindent In the source directory execute the following (substitute squeeze or wheezy as appropriate for XXXX): 242 \begin{shellCode} 243 scons -j1 options_file=scons/os/XXXX_options.py 244 \end{shellCode} 245 246 \noindent If you wish to test your build, you can use the following: 247 \begin{shellCode} 248 scons -j1 py_tests options_file=scons/os/XXXX_options.py 249 \end{shellCode} 250 251 \subsection{Ubuntu}\label{sec:ubsrc} 252 253 If you have not installed \texttt{aptitude}, then substitute \texttt{apt-get} in the following. 254 \begin{shellCode} 255 sudo aptitude install python-dev python-numpy libboost-python-dev libnetcdf-dev 256 sudo aptitude install scons lsb-release 257 sudo aptitude install python-sympy python-matplotlib python-scipy 258 sudo aptitude install python-pyproj python-gdal 259 \end{shellCode} 260 261 262 \begin{optionalstep} 263 If for some reason, you wish to rebuild the documentation, you would also need the following: 264 \begin{shellCode} 265 sudo aptitude install python-sphinx doxygen python-docutils texlive 266 sudo aptitude install zip texlive-latex-extra latex-xcolor 267 \end{shellCode} 268 \end{optionalstep} 269 270 \noindent In the source directory execute the following (substitute precise, quantal or raring as appropriate for XXXX): 271 \begin{shellCode} 272 scons -j1 options_file=scons/os/XXXX_options.py 273 \end{shellCode} 274 275 \noindent If you wish to test your build, you can use the following: 276 \begin{shellCode} 277 scons -j1 py_tests options_file=scons/os/XXXX_options.py 278 \end{shellCode} 279 280 281 282 \subsection{OpenSuse}\label{sec:susesrc} 283 These instructions were prepared using release $13.1$. 284 285 \noindent Install packages from the main distribution: 286 \begin{shellCode} 287 sudo zypper install libboost_python1_53_0 python-devel python-numpy 288 sudo zypper install python-scipy python-sympy python-matplotlib libnetcdf_c++-devel 289 sudo zypper install gcc-c++ scons boost-devel netcdf-devel 290 \end{shellCode} 291 These will allow you to use most features except some parts of the \downunder inversion library. 292 If you wish to use those, you will need some additional packages [python-pyproj, python-gdal]. 293 This can be done after Escript installation. 294 295 \begin{optionalstep} 296 Add \url{http://ftp.suse.de/pub/opensuse/repositories/Application:/Geo/openSUSE_13.1/} 297 to your repositories in \texttt{zypper}. 298 \begin{shellCode} 299 sudo zypper install python-pyproj, python-gdal 300 \end{shellCode} 301 \end{optionalstep} 302 303 Now to build escript itself. 304 In the escript source directory: 305 \begin{shellCode} 306 scons -j1 options_file=scons/os/opensuse13.1_options.py 307 \end{shellCode} 308 309 \noindent If you wish to test your build, you can use the following: 310 \begin{shellCode} 311 scons -j1 py_tests options_file=scons/os/opensuse13.1_options.py 312 \end{shellCode} 313 314 \noindent Now go to Section~\ref{sec:cleanup} for cleanup. 315 316 \subsection{Centos}\label{sec:centossrc} 317 These instructions were prepared using release $6.5$. 318 The core of escript works, however some functionality is not availible because the default packages for some dependencies in Centos are too old. 319 320 \noindent Install packages from the main distribution: 321 \begin{shellCode} 322 yum install python-devel numpy scipy scons boost-devel 323 yum install python-matplotlib gcc-c++ 324 yum install boost-python 325 \end{shellCode} 326 327 The above packages will allow you to use most features except saving and loading files in \texttt{netCDF} 328 format and the \downunder inversion library. 329 If you wish to use those features, you will need to install some additional packages. 330 NetCDF needs to be installed when you compile if you wish to use it. 331 \begin{optionalstep} 332 \noindent Add the \texttt{EPEL} repository. 333 \begin{shellCode} 334 rpm -U http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 335 \end{shellCode} 336 337 \begin{shellCode} 338 yum install netcdf-devel gdal-python 339 \end{shellCode} 340 \end{optionalstep} 341 342 \noindent For some coordinate transformations, \downunder can also make use of the python interface to a tool called \texttt{proj}. 343 There does not seem to be an obvious centos repository for this though. 344 If it turns out to be necessary for your particular application, the source can be downloaded. 345 346 \noindent Now to build escript itself. 347 In the escript source directory: 348 \begin{shellCode} 349 scons -j1 options_file=scons/os/centos6.5_options.py 350 \end{shellCode} 351 352 \noindent Now go to Section~\ref{sec:cleanup} for cleanup. 353 354 \subsection{Fedora}\label{sec:fedorasrc} 355 These instructions were prepared using release $20$. 356 357 \noindent Install packages 358 \begin{shellCode} 359 yum install netcdf-cxx-devel gcc-c++ scipy 360 yum install sympy scons pyproj gdal python-matplotlib 361 yum install boost-devel 362 \end{shellCode} 363 364 \noindent Now to build escript itself. 365 In the escript source directory: 366 \begin{shellCode} 367 scons -j1 options_file=scons/os/fedora18_options.py 368 \end{shellCode} 369 370 \noindent If you wish to test your build, you can use the following: 371 \begin{shellCode} 372 scons -j1 py_tests options_file=scons/os/fedora18_options.py 373 \end{shellCode} 374 375 \noindent Now go to Section~\ref{sec:cleanup} for cleanup. 376 377 \subsection{MacOS (macports)}\label{sec:macportsrc} 378 379 \begin{shellCode} 380 port install python27 381 port select --set python python27 382 port install scons 383 port install openmpi 384 port install py27-numpy 385 port install boost 386 port install py27-sympy 387 port select --set py-sympy py27-sympy 388 install py27-scipy 389 install py27-pyproj 390 install py27-gdal 391 install py27-netcdf4 392 install netcdf-cxx 393 \end{shellCode} 394 395 The options file we provide as an example below uses \texttt{clang} as its compiler. 396 If you wish to use \texttt{g++}, then you will need to modify the 397 \begin{verbatim} 398 tools_names = ['clang'] 399 \end{verbatim} 400 to 401 \begin{verbatim} 402 tools_names = ['default'] 403 \end{verbatim} 404 405 406 \begin{shellCode} 407 scons -j1 options_file=scons/os/macports_options.py 408 \end{shellCode} 409 410 411 \subsection{MacOS (homebrew)}\label{sec:homebrewsrc} 412 413 Note that these steps add non-official'' packages. 414 You will also want to make sure that the homebrew Python is executed in preference to the system 415 Python\footnote{Putting \texttt{/usr/local/bin} at the front of your PATH is one way to do this.}. 416 417 \begin{shellCode} 418 brew install python 419 brew install scons 420 brew install boost 421 brew tap samueljohn/python 422 brew tap homebrew/science 423 pip install nose 424 brew install gfortran 425 brew install samueljohn/python/numpy 426 brew install scipy 427 brew install gdal 428 brew install openmpi 429 brew install matplotlib 430 brew install netcdf --enable-cxx-compat 431 \end{shellCode} 432 433 There do not appear to be formulae for \texttt{sympy} or \texttt{pyproj} so if you wish to use those features, then 434 you will need to install them separately. 435 436 437 \begin{shellCode} 438 scons -j1 options_file=scons/os/homebrew_options.py 439 \end{shellCode} 440 441 442 \subsection{FreeBSD}\label{sec:freebsdsrc} 443 The following was tested on the $9.1$ release of FreeBSD. 444 It passes the majority of tests but there is an issue related to some features in the inversion library. 445 The following set of installations works'' but is not guaranteed to be minimal\footnote{Depending on your needs you might be able to 446 get by with a smaller set of packages.}. 447 448 Install the following packages: 449 \begin{itemize} 450 \item python 451 \item scons 452 \item boost-python-libs 453 \item bash 454 \end{itemize} 455 456 Now install the following ports: 457 \begin{itemize} 458 \item science/py-scipy 459 \item science/py-netCDF4 460 \item math/py-sympy 461 \item graphics/py-pyproj 462 \item graphics/py-gdal 463 \item net/openmpi 464 \end{itemize} 465 466 You will need to add \texttt{/usr/local/mpi/openmpi/bin} to your path if you wish to build with MPI. 467 468 Next choose (or create) your options file. 469 In this case we have three prepared in the \texttt{scons/os} directory: 470 \begin{itemize} 471 \item \texttt{freebsd91_options.py} 472 \item \texttt{freebsd91_mpi_options.py} If you would like to use MPI. 473 \item \texttt{freebsd91_gcc46_options.py} Use this if you have managed to change compilers to gcc4.6 (and would like to use OpenMP). 474 \end{itemize} 475 476 In the escript source directory (where ZZZ is your options file): 477 \begin{shellCode} 478 scons -j1 options_file=ZZZ 479 \end{shellCode} 480 481 482 483 \subsection{Other Systems / Custom Builds}\label{sec:othersrc} 484 485 \escript has support for a number of optional packages. 486 Some, like \texttt{netcdf} need to be enabled at compile time, while others, such as \texttt{sympy} and the projection packages 487 used in \downunder are checked at run time. 488 For the second type, you can install them at any time (ensuring that python can find them) and they should work. 489 For the first type, you need to modify the options file and recompile with scons. 490 The rest of this section deals with this. 491 492 To avoid having to specify the options file each time you run scons, copy an existing \texttt{_options.py} file from the 493 \texttt{scons/} or \texttt{scons/os/} directories. Put the file in the \texttt{scons} directory and name 494 it \textit{yourmachinename}\texttt{_options.py}.\footnote{If the name 495 has - or other non-alpha characters, they must be replaced with underscores in the filename}. 496 For example: on a machine named toybox, the file would be \texttt{scons/toybox_options.py}. 497 498 Individual lines can be enabled/disabled, by removing or adding \# (the python comment character) to the beginning of the line. 499 For example, to enable OpenMP, change the line 500 \begin{verbatim} 501 #openmp = True 502 \end{verbatim} 503 to 504 \begin{verbatim} 505 openmp = True 506 \end{verbatim}. 507 508 If you are using libraries which are not installed in the standard places (or have different names) you will need to 509 change the relevant lines. 510 A common need for this would be using a more recent version of the boost::python library. 511 512 You can also change the compiler or the options passed to it by modifying the relevant lines. 513 514 \subsubsection*{MPI} 515 If you wish to enable or disable MPI, or if you wish to use a different implementation of MPI, you can use the \texttt{mpi} 516 configuration variable. 517 To disable MPI use, \verb|mpi = 'none'|. 518 You will also need to ensure that the \texttt{mpi_prefix} and \texttt{mpi_libs} variables are uncommented and set correctly. 519 520 \subsubsection{Python3} 521 \escript works with \texttt{python3} but until recently, many distributions have not distributed python3 versions of their packages. 522 You can try it out though by modifying the following variables: 523 524 \begin{verbatim} 525 pythoncmd='python3' 526 \end{verbatim} 527 528 \begin{verbatim} 529 usepython3=True 530 \end{verbatim} 531 532 \begin{verbatim} 533 pythonlibname='whateveryourpython3libraryiscalled' 534 \end{verbatim} 535 536 537 538 539 \subsubsection{Testing} 540 As indicated earlier, you can test your build using \texttt{scons py_tests}. 541 Note however, that some features like \texttt{netCDF} are optional for using \escript, the tests will report a failure if 542 they are missing. 543 544 \section{Cleaning up} 545 \label{sec:cleanup} 546 547 Once the build (and optional testing) is complete, you can remove everything except: 548 \begin{itemize} 549 \item bin 550 \item esys 551 \item lib 552 \item doc 553 \item CREDITS.TXT 554 \item README_LICENSE 555 \end{itemize} 556 The last two aren't strictly required for operation. 557 The \texttt{doc} directory is not required either but does contain examples of escript scripts. 558 559 You can run escript using \texttt{\textit{path_to_escript_files}/bin/run-escript}. 560 Where \texttt{\textit{path_to_escript_files}} is replaced with the real path. 561 562 \begin{optionalstep} 563 You can add the escript \texttt{bin} directory to your \texttt{PATH} variable. 564 The launcher will then take care of the rest of the environment. 565 \end{optionalstep} 566 567 \section{Optional Extras} 568 569 Some other packages which might be useful include: 570 \begin{itemize} 571 \item support for silo format (install the relevant libraries and enable them in the options file). 572 \item Visit --- visualisation package. Can be used independently but our \texttt{weipa} library can make a Visit 573 plug-in to allow direct visualisation of escript files. 574 \item gmsh --- meshing software used by our \texttt{pycad} library. 575 \item mayavi --- another visualisation tool. 576 \end{itemize} 577 578 579 %Need a better title but this is stuff like visit and silo (for non-debian distros) 580 %Perhaps - optional extras 581 582 583 584 585