C# is available on the cluster.

$ ml av mono

-------------------- /apps/modules/lang ---------------


Use the command ml av mono to get up-to-date versions of the modules.

Activate C# by loading the Mono module:

$ ml Mono


Hello World

Copy this code to new file hello.cs:

using System;

class HelloWorld {
  static void Main() {
    Console.WriteLine("Hello world!!!");

Compile the program and make Windows executable.

$ mcs -out:hello.exe hello.cs

Now run the program:

$ mono hello.exe
Hello world!!!

Interactive Console


$ csharp
Mono C# Shell, type "help;" for help

Enter statements below.

Now you are in interactive mode. You can try following example.

csharp> using System;
csharp> int a = 5;
csharp> double b = 1.5;
csharp> Console.WriteLine("{0}*{1} is equal to {2}", a,b,a*b);
5*1.5 is equal to 7.5
csharp> a == b

Show all files modified in last 5 days:

csharp> using System.IO;
csharp> from f in Directory.GetFiles ("mydirectory")
      > let fi = new FileInfo (f)
      > where fi.LastWriteTime > DateTime.Now-TimeSpan.FromDays(5) select f;
{ "mydirectory/mynewfile.cs", "mydirectory/script.sh" }


MPI is available for mono.

using System;
using MPI;

class MPIHello
    static void Main(string[] args)
        using (new MPI.Environment(ref args))
           Console.WriteLine("Greetings from node {0} of {1} running on {2}",
           Communicator.world.Rank, Communicator.world.Size,

Compile and run the program on Anselm:

$ qsub -I -A DD-13-5 -q qexp -l select=2:ncpus=16,walltime=00:30:00

$ ml mpi.net

$ mcs -out:csc.exe -reference:/apps/tools/mpi.net/1.0.0-mono-3.12.1/lib/MPI.dll csc.cs

$ mpirun -n 4 mono csc.exe
Greetings from node 2 of 4 running on cn204
Greetings from node 0 of 4 running on cn204
Greetings from node 3 of 4 running on cn199
Greetings from node 1 of 4 running on cn199

For more informations look at Mono documentation page.