Skip to content
Snippets Groups Projects
csc.md 2.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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:
    
    Pavel Gajdušek's avatar
    Pavel Gajdušek committed
    ```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/).