All Tutorials

  • Tue Jul 23, 10:00 am - 4:00 pm
    575
    Walter Library

    This one-day, hands-on workshop provides an introduction on how to write a parallel program using MPI and will help researchers write better and portable parallel codes for distributed-memory Linux clusters. The tutorial will focus on basic point-to-point communication and collective communications, which are the most commonly used MPI routines in high-performance scientific computation. In addition, the advantage of using MPI non-blocking communication will be introduced. Each session of the workshop will combine a lecture with hands-on practice. The lecture will introduce basic principles, and the hands-on portion will focus on the use of MPI principles via examples.


    Session 1: Introduction to basic concepts of MPI, centering on point-to-point communication.


    Session 2: MPI collective communications including broadcast, gather, scatter, and All-to-All.


    Programming will be done in Fortran and C, so any background in these two languages will be helpful.


  • Thu Jul 18, 1:00 pm - 3:00 pm
    575
    Walter Library

    This tutorial will help users learn the basics of parallel computation methods, including strategies for collecting calculations together for parallel execution. A brief description of parallel programming using MPI message passing will be given. This will be a fast crash course on the most basic parallel computation and programming methods. Examples of how to compile and execute simple parallel programs will be given.


  • Thu Jul 11, 1:00 pm - 3:00 pm
    575
    Walter Library

    Matlab is one of the most practical software packages used for numerical calculations and system design. Matlab applications, however, can run much slower compared to FORTRAN and C codes for the same kind of applications. Matlab code debugging is an unavoidable component of the application development. This tutorial will teach users how to use Matlab’s debugging and profiling tools in addition to the basic techniques to write efficient Matlab codes.


    A hands-on practice will follow the lecture. Provided examples will enable the users to use the debug and profiling tools for writing an efficient Matlab code. Attendees are also encouraged to bring in your application codes. MSI staff will help you debug the code and/or improve the code performance.


  • Tue Jul 9, 1:00 pm - 3:00 pm
    575
    Walter Library

    This tutorial will introduce users to MSI systems, outlining the hardware available, and introducing the module and queueing systems, as well as methods for remote access and file transfer. Users will be shown how to construct queue scripts and submit their calculation jobs on MSI’s high-performance systems. The features of different systems will be compared so that users may determine which might best suit their research needs. Software options and availability will be discussed.


  • Mon Jul 1, 9:00 am - 4:00 pm
    575
    Walter Library

    Due to overwhelming demand, this tutorial initially held on June 25, 2013, is being presented a second time. Here is a brief description:


    Python is a general purpose programming language with a rich syntax and structure. You can learn to use Python and see almost immediate gains in productivity relative to programming with other languages. Python has many modules specializing in various topics of interest to the scientific community and is used as an interface for numerous scientific packages.


    The morning section will provide an introduction to Python. Simple and advanced data types, variable assignment, control structures, mathematical and logical operators, program input and output, and functional programming will be discussed.


    The afternoon section will cover advanced features of Python relevant to high performance computing. Topics will include efficient data processing with NumPy, integrating compiled routines into python programs, and techniques for using python to drive parallel supercomputing tasks.


  • Thu Jun 27, 1:00 pm - 3:00 pm
    575
    Walter Library

    Every experienced developer has a preferred method and toolchain for writing code. This tutorial will help users choose the right tools and improve habits for a better experience with custom and third-party source codes. We begin with a look at build systems (e.g., Make, CMake) and version control (e.g., SVN, Git) for project management. Through examples we will demonstrate: a) generating code documentation for the web, b) unit testing, c) debugging, and d) profiling and optimization. This tutorial pulls examples from multiple languages (C/C++, FORTRAN, Java and Python) to demonstrate that best practices are language agnostic.


    Prerequisites: Experience with at least one programming language and the Unix shell environment.


  • Tue Jun 25, 9:00 am - 4:00 pm
    575
    Walter Library

    Python is a general purpose programming language with a rich syntax and structure. You can learn to use Python and see almost immediate gains in productivity relative to programming with other languages. Python has many modules specializing in various topics of interest to the scientific community and is used as an interface for numerous scientific packages.


    The morning section will provide an introduction to Python. Simple and advanced data types, variable assignment, control structures, mathematical and logical operators, program input and output, and functional programming will be discussed.


    The afternoon section will cover advanced features of Python relevant to high performance computing. Topics will include efficient data processing with NumPy, integrating compiled routines into python programs, and techniques for using python to drive parallel supercomputing tasks.


  • Mon Jun 24, 12:00 am - Fri Jun 28, 4:00 pm
    575
    Walter Library

    This class focuses on how to use computers to make discoveries from large amount of scientific data, in particular high-throughput biological data. The topics include 1) the computational methods for analyzing the scientific data such as decision trees, k-nearest neighbors, neural networks, SVMs, k-means, hierarchical clustering and etc; 2) analysis and visualization of large scale networks such as protein-protein interaction networks, disease networks and social networks. There were in-class exercises and mini group projects for hands-on experiences with tools for data analysis. A tour to visit the supercomputer room and the visualization lab was also organized.


  • Thu Jun 20, 1:00 pm - 3:00 pm
    575
    Walter Library

    Koronis features an SGI® Altix® UV 1000 – a large global shared memory (GSM) system. Its availability has offered unprecedented opportunities for NIH researchers to conduct memory-intensive calculations. At the same time, it poses great computational challenges from the system-memory complexity that, combined with the flexibility in the selection of the number of computing cores, can severely degrade the performance.


    This tutorial will help users make efficient use of Koronis and improve the application performance. Topics to be discussed include:

    1. The tactics for better use of CPUSET hierarchy.

    2. How the queues are structured and how to reduce the queuing time of your jobs.

    3. The available file systems and how they can be used for improving the I/O performance of your applications.


  • Tue Jun 18, 1:00 pm - 3:00 pm
    575
    Walter Library

    This tutorial is geared to new MSI users and will provide an introduction to the facilities and computational resources at MSI. The quick start portion of the tutorial will provide instructions for accessing these resources such as setting up accounts, submitting jobs on the various machines, etc. We will conclude with a brief introduction of the MSI UNIX environment, including hands-on examples. The UNIX operating system is a fundamental part of the MSI experience for people using the MSI Linux workstations and core systems. Many of MSI’s scientific codes require that the user understand basic UNIX operating commands and functionality. This tutorial will give the novice user an introduction to using the UNIX operating environment to navigate around and use MSI resources.


Pages