Project

General

Profile

Elements of Research Computing » History » Version 3

Version 2 (Miguel Dias Costa, 15/11/2011 13:53) → Version 3/10 (Miguel Dias Costa, 15/11/2011 14:11)

h1. Elements of Research Computing

{{>toc}}

The goal of this document is to introduce some h2. Goals

* Introduce
concepts, tools and best practices for research oriented computing. computing
* Introductory level
*
Advanced documents courses for specific topics can be arranged according to demand. Authors/speakers demand
* Speakers
for specific topics are also welcome.

h2. Preliminary remarks

The categorization "Research Computing" was chosen because, on one hand, that's the audience of this document, researchers that use computational tools; on the other hand, traditional terms like HPC, Grid, Cloud tend to separate from the onset the infrastructure that is going to be used to solve a specific problem, but in most cases one doesn't know what the best infrastructure(s) will be.

In any case, not all aspects of Research Computing will be covered - we will focus mainly on non-interactive "jobs" that have some sort of intensive requirement such as performance, memory, network, storage, etc.

h2. Some terminology

* High Performance
** perform a specific task in a short period of time (e.g. low latency)

* High Throughput
** perform many tasks in a fixed period of time (e.g. high bandwidth)

* Concurrent
** concurrency is a property of the algorithm (e.g. independence of tasks)

* Parallel
** concurrent parts of an algorithm can (or not) be run in parallel

* Distributed
** distributed generally means loosely parallel (e.g. asynchronous)

* Grid
** Grid usally means a collection of clusters with interoperability at scheduler level

* Cloud
** Cloud means a lot of different things (e.g. Infraestructure/Platform/Software as Services)

h2. Aspects of Research Computing

* Project management
* Code verification
* Debugging
* Scability estimates
* Profiling
* Optimization
* Looking for parallelism

h2. Parallel Computing

h3. Embarassingly Parallel (= Distributed ?)

h4. bash subshells

h4. GNU Parallel

h4. Scheduler

h4. MapReduce

h3. Shared Memory Parallelization

h4. POSIX Threads

h4. OpenMP

h3. Distributed Memory Parallelization

h4. MPI

h3. General Purpose GPUs

h4. CUDA

h4. OpenCL

...
welcome