MATLAB

From HP-SEE Wiki

Jump to: navigation, search

Contents


Authors/Maintainers

  • Also origin, if the software comes from a specific project.

Summary

MATLAB represents both a high-level language for technical computing and a platform for development and execution of MATLAB programs. It offers mathematical functions for linear algebra, statistics, Fourier analysis, filtering, optimization, and numerical integration. Based on the concept of toolboxes (collections of special-purpose MATLAB functions, available separately) enables solving particular classes of problems in specific application areas, including: signal and image processing, communications, control design, test and measurement, financial modeling and analysis, and computational biology. MATLAB offers robust platform for data visualization, both 2D and 3D. MATLAB contains mathematical, statistical, and engineering functions to support all common engineering and science operations. These functions, developed by experts in mathematics, are the foundation of the MATLAB language. The core math functions use the LAPACK and BLAS linear algebra subroutine libraries and the FFTW Discrete Fourier Transform library. There are a variety of extensions for MATLAB designed to utilize parallel computers. The methods of achieving parallelism, the target architecture, and the extent to which the parallelization process is automated vary from extension to extension. A survey of 27 projects that extend matrix languages with parallel features can be found in [16]. The survey classifies the projects in four main categories: embarrassingly parallel, message passing, MATLAB compilers and backend support. Most notable extensions include: MatlabMPI [17] and MPI toolbox [18]. Each of these models involves different MATLAB instances, hence different number of licenses. Embarrassingly parallel requires one single MATLAB instance forks several other processes, on the same or different machine, each with its own MATLAB license. Message passing extensions provide framework for writing MATLAB programs in the same style as regular C or Fortran programs that use message passing, such as MPI. Most notable extensions include: MatlabMPI [19] and MPI toolbox [20]. Same as the embarrassingly parallel case, each instance involved in the message passing must have its own MATLAB license. In the case of HP-SEE, maybe the most applicable modes are MATLAB compilers and backed support. MATLAB compilers approach uses MATLAB as a front end for a parallel computation engine. Computation is done on the engine, usually making use of high performance numerical computation libraries like ScaLAPACK. The advantage of this approach is that it only requires one MATLAB session (therefore only one license), and it usually does not require the end user to have knowledge of parallel programming. MATLAB compilers compile MATLAB scripts into an executable, sometimes translating the scripts into a compiled language as an intermediate step. Some of them link the compiled code with parallel numerical libraries, while other generates code that is already parallel. Some of the MATLAB programs can be easily ported to GNU Octave, freely available and open source. The portability is at source level, but it is limited to the core language, excluding toolboxes. Regarding the support for parallel execution, previously mentioned MatlabMPI can be customized to OctaveMPI, making it usable on any Linux cluster.

Features

  • Listed features

Architectural/Functional Overview

  • high level design info, how it works, performance - may be a link, or several links

Usage Overview

  • If possible with small example - may be a link

Dependacies

  • list of all relevant dependencies on other libraries

HP-SEE Applications

  • HMLQCD

Resource Centers

  • HPCG, BG
  • IFIN_Bio, RO
  • NCIT-Cluster, RO

Usage by Other Projects and Communities

  • If any

Recommendations for Configuration and Usage