Skip to content
Snippets Groups Projects
csc.md 2.19 KiB
Newer Older
Pavel Gajdušek's avatar
Pavel Gajdušek committed
# CSharp

C# is available on the cluster.

```console
$ ml av mono

-------------------- /apps/modules/lang ---------------
   Mono/5.0.0.100
```

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

Activate C# by loading the Mono module:
Pavel Gajdušek's avatar
Pavel Gajdušek committed

```console
$ ml Mono
```

## Examples

### Hello World

Copy this code to new file hello.cs:

```csc
using System;

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

Compile the program and make *Windows executable*.

```console
$ mcs -out:hello.exe hello.cs
```

Now run the program:

```console
$ mono hello.exe
Hello world!!!
```

### Interactive Console

Type:

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

Enter statements below.
csharp>
```

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

```csc
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
false
```

Show all files modified in last 5 days:
```csc
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" }
```

Pavel Gajdušek's avatar
Pavel Gajdušek committed
## MPI.NET

MPI is available for mono.

```csc
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,
           MPI.Environment.ProcessorName);
        }
    }
}
```

Compile and run the program on Anselm:

```console
$ 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
```

Pavel Gajdušek's avatar
Pavel Gajdušek committed
For more informations look at [Mono documentation page](http://www.mono-project.com/docs/).