<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/flavours/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 13 May 2013 15:58:28 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/flavours/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -2,6 +2,8 @@
 =============================================

 Flavours is an add-on library for the popular [Environment Modules](http://modules.sourceforge.net/) package, used to make optional software components available to users on Unix platforms.
+
+[TOC]

 What is it for?
 ---------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 15:58:28 -0000</pubDate><guid>https://sourceforge.net1846beac8203ac17be4ad8cc3d8dc61345d329a5</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -47,7 +47,7 @@
 What other benefits are there?
 ------------------------------

-If they are using compilers and libraries installed as flavours, it can become incredibly easy to try out a different compiler or MPI.
+If you are using compilers and libraries installed as flavours, it can become incredibly easy to try out a different compiler or MPI.

 This is great news as different implementations tend to have different strengths and weaknesses appropriate in different situations, and so trying them out should be encouraged. For example:

@@ -56,10 +56,3 @@
 * A third compiler might perform the essential task of telling you off for using swear words as variable names.

-Example
--------
-
-Let's say you want to install the hdf5 library against a couple of compilers and an MPI. You might have
-
-
-
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 15:41:43 -0000</pubDate><guid>https://sourceforge.net8e637d9e3b601bfa4e51eff5e723e13e28156c5b</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -10,7 +10,7 @@

 For example, you may want to install a Fortran/C/C++ library, but your system may have multiple compilers with incompatible runtimes and perhaps you have some users requiring 64-bit and others 32-bit. For a library written to take advantage of parallel programming techniques, you might also have multiple MPI libraries to build against.

-This is frequently the case on general purpose HPC (High Performance Computing) machines. The usual way to resolve this is to have a different module for each combination of dependencies. For example, the popular [fftw](http://www.fftw.org/) might have a number of modules installed:
+This is frequently the case on general purpose HPC (High Performance Computing) machines. The usual way to resolve this is to have a different module for each combination of dependencies. For example, there might be a number of modules installed for the [fftw](http://www.fftw.org/) package:

     $ module avail fftw
     ----------------------- /apps/Modules/libraries ------------------------
@@ -26,20 +26,40 @@
     ----------------------- /apps/Modules/libraries ------------------------
     fftw/2.1.5       fftw/3.2.2

+This is useful for more than just compilers and MPI libraries. Flavours can be used to model any permutations you like.

-How does it do this?
---------------------

-Flavours works by allowing modulefiles to declare interdependencies, via suped-up versions of the existing "prereq" and "conflict" Module commands. They differ from the standard versions by adding the following concepts:
+How does it work?
+-----------------

-* Classes of modules that provide equivalent functionality (e.g. compiler, mpi).
-* Optional prerequisites.
-* Flavour - a combination of modules that fulfill the prerequisites.
+Flavours works by allowing modulefiles to declare interdependencies, via suped-up versions of the existing "prereq" and "conflict" Module commands.
+
+* Each permutation of prerequisites (architecture and MPI, etc.) is known as a flavour and are not displayed by the "module avail" command.
+* The appropriate flavour is automatically selected by the module command, based on what prerequisite modules are currently loaded.
+* If a prerequisite module is changed (e.g. switched from GNU to Intel compiler), the correct flavour for all dependents is automatically updated.
+* You can add a prerequisite on a single module name or define a class of modules (those that provide a particular set of functionality - e.g. compilers, MPIs).

 Each flavour translates to a unique location on disk where Flavours expects to find an appropriate version of the software. 

-prereq information is stored in an environment variable, allowing Flavours to automatically reload modules if one of their prerequisites are switched or unloaded.
-
-This reduces the problem to installing compatible builds of a software in the correct locations.
+This reduces the management problem to installing compatible builds of the software in the correct locations.

+What other benefits are there?
+------------------------------
+
+If they are using compilers and libraries installed as flavours, it can become incredibly easy to try out a different compiler or MPI.
+
+This is great news as different implementations tend to have different strengths and weaknesses appropriate in different situations, and so trying them out should be encouraged. For example:
+
+* One compiler might be slow but tell you about non standards-compliant code you might want to rewrite.
+* Another compiler might generate incredibly fast code - but that code may keep happily running even after it should have segfaulted.
+* A third compiler might perform the essential task of telling you off for using swear words as variable names.
+
+
+Example
+-------
+
+Let's say you want to install the hdf5 library against a couple of compilers and an MPI. You might have
+
+
+
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 15:34:43 -0000</pubDate><guid>https://sourceforge.net36c58d1bb62598b14c634930ae0db884d9f8043f</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -26,5 +26,20 @@
     ----------------------- /apps/Modules/libraries ------------------------
     fftw/2.1.5       fftw/3.2.2

-It does this by allowing a module behave differently depending on what other modules are also loaded.

+How does it do this?
+--------------------
+
+Flavours works by allowing modulefiles to declare interdependencies, via suped-up versions of the existing "prereq" and "conflict" Module commands. They differ from the standard versions by adding the following concepts:
+
+* Classes of modules that provide equivalent functionality (e.g. compiler, mpi).
+* Optional prerequisites.
+* Flavour - a combination of modules that fulfill the prerequisites.
+
+Each flavour translates to a unique location on disk where Flavours expects to find an appropriate version of the software. 
+
+prereq information is stored in an environment variable, allowing Flavours to automatically reload modules if one of their prerequisites are switched or unloaded.
+
+This reduces the problem to installing compatible builds of a software in the correct locations.
+
+
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 14:54:44 -0000</pubDate><guid>https://sourceforge.nete06439b8c27de2039e207e31d9c5c9414ffbb228</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -20,7 +20,7 @@

 This can quickly get out of hand.

-Flavours abstracts all this away, and turn it into something considerably clearer:
+Flavours abstracts all this away, and turns it into something considerably clearer:

     $ module avail fftw
     ----------------------- /apps/Modules/libraries ------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 14:35:18 -0000</pubDate><guid>https://sourceforge.net2991f58dcefa94eef0e2269175f6dad8e6607e21</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,7 +1,7 @@
 Flavours - Environment Modules add-on library
 =============================================

-Flavours is an add-on library for the popular [Environment Modules] (http://modules.sourceforge.net/) package, used to make optional software components available to users on Unix platforms.
+Flavours is an add-on library for the popular [Environment Modules](http://modules.sourceforge.net/) package, used to make optional software components available to users on Unix platforms.

 What is it for?
 ---------------
@@ -10,7 +10,7 @@

 For example, you may want to install a Fortran/C/C++ library, but your system may have multiple compilers with incompatible runtimes and perhaps you have some users requiring 64-bit and others 32-bit. For a library written to take advantage of parallel programming techniques, you might also have multiple MPI libraries to build against.

-This is frequently the case on general purpose HPC (High Performance Computing) machines. The usual way to resolve this is to have a different module for each combination of dependencies. For example, the popular [fftw] (http://www.fftw.org/) might have a number of modules installed:
+This is frequently the case on general purpose HPC (High Performance Computing) machines. The usual way to resolve this is to have a different module for each combination of dependencies. For example, the popular [fftw](http://www.fftw.org/) might have a number of modules installed:

     $ module avail fftw
     ----------------------- /apps/Modules/libraries ------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 14:34:32 -0000</pubDate><guid>https://sourceforge.netcde3464419cac30f07921914ef5a04b2a9c1a2d3</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,8 +1,30 @@
-Welcome to your wiki!
+Flavours - Environment Modules add-on library
+=============================================

-This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].
+Flavours is an add-on library for the popular [Environment Modules] (http://modules.sourceforge.net/) package, used to make optional software components available to users on Unix platforms.

-The wiki uses [Markdown](/p/flavours/wiki/markdown_syntax/) syntax.
+What is it for?
+---------------

-[[project_admins]]
-[[download_button]]
+Flavours is an attempt to resolve the "permutation problem". Modules is a great tool to use, but the number of modules needed can be excessive if multiple builds of the same software is required. This can be very confusing for the user.
+
+For example, you may want to install a Fortran/C/C++ library, but your system may have multiple compilers with incompatible runtimes and perhaps you have some users requiring 64-bit and others 32-bit. For a library written to take advantage of parallel programming techniques, you might also have multiple MPI libraries to build against.
+
+This is frequently the case on general purpose HPC (High Performance Computing) machines. The usual way to resolve this is to have a different module for each combination of dependencies. For example, the popular [fftw] (http://www.fftw.org/) might have a number of modules installed:
+
+    $ module avail fftw
+    ----------------------- /apps/Modules/libraries ------------------------
+    fftw/2.1.5/gcc      fftw/2.1.5/intel       fftw/2.1.5intel32bit
+    fftw/2.1.5/intel12  fftw/2.1.5/gcc-openmpi fftw/2.1.5pgi
+    fftw/2.1.5/gcc32bit fftw/3.2.2/pgi         fftw/3.2.2/gcc
+
+This can quickly get out of hand.
+
+Flavours abstracts all this away, and turn it into something considerably clearer:
+
+    $ module avail fftw
+    ----------------------- /apps/Modules/libraries ------------------------
+    fftw/2.1.5       fftw/3.2.2
+
+It does this by allowing a module behave differently depending on what other modules are also loaded.
+
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Mon, 13 May 2013 14:33:58 -0000</pubDate><guid>https://sourceforge.net19ad2a7cc4854db53d65c540e01212b810392441</guid></item><item><title>Home modified by Mark Dixon</title><link>https://sourceforge.net/p/flavours/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Welcome to your wiki!&lt;/p&gt;
&lt;p&gt;This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: &lt;span&gt;[SamplePage]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The wiki uses &lt;a class="" href="/p/flavours/wiki/markdown_syntax/"&gt;Markdown&lt;/a&gt; syntax.&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href="/u/ccaamad/"&gt;Mark Dixon&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;span class="download-button-516d3d44bcf63a651d06dba0" style="margin-bottom: 1em; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Dixon</dc:creator><pubDate>Tue, 16 Apr 2013 12:00:05 -0000</pubDate><guid>https://sourceforge.net42af596257ddfa85a64259254b1d4912f32e9d24</guid></item></channel></rss>