Elements of Research Computing » History » Version 5
Version 4 (Miguel Dias Costa, 15/11/2011 14:13) → Version 5/10 (Miguel Dias Costa, 15/11/2011 14:15)
h1. Elements of Research Computing
{{>toc}}
The goal of this document is to introduce some concepts, tools and best practices for research oriented computing. Advanced documents for specific topics can be arranged according to demand. Authors/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
* Parallelization Looking for parallelism
h2. Project management
h2. Code verification
h2. Debugging
h2. Scability estimates
h2. Profiling
h2. Optimization
h2. Parallelization Parallel Computing
h3. Embarassingly Parallel (= Distributed ?)
* bash subshells
* GNU Parallel
* Scheduler
* MapReduce
h3. Shared Memory Parallelization
* POSIX Threads
* OpenMP
h3. Distributed Memory Parallelization
* MPI
h3. General Purpose GPUs
* CUDA
* OpenCL
...
{{>toc}}
The goal of this document is to introduce some concepts, tools and best practices for research oriented computing. Advanced documents for specific topics can be arranged according to demand. Authors/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
* Parallelization Looking for parallelism
h2. Project management
h2. Code verification
h2. Debugging
h2. Scability estimates
h2. Profiling
h2. Optimization
h2. Parallelization Parallel Computing
h3. Embarassingly Parallel (= Distributed ?)
* bash subshells
* GNU Parallel
* Scheduler
* MapReduce
h3. Shared Memory Parallelization
* POSIX Threads
* OpenMP
h3. Distributed Memory Parallelization
* MPI
h3. General Purpose GPUs
* CUDA
* OpenCL
...