Git Product home page Git Product logo

hpc_cg's Introduction

High Performance Computing


[TOC]

1. Heterogeneous Computing

2. MPI (Message Passing Interface)

  • MPI Forum: the standardization forum for MPI
  • Open MPI: Open Source High Performance Computing.

3. Concurrency

  • task switching
  • hardware concurrency

Multi-Processing

IPC

Multi-Threading

  • POSIX C pthread
  • boost::thread
  • c++11 std::thread

4. CPU

CPU Info

8 commands to check cpu information on Linux:

  • /proc/cpuinfo: The /proc/cpuinfo file contains details about individual cpu cores.
  • lscpu: simply print the cpu hardware details in a user-friendly format
  • cpuid: fetches CPUID information about Intel and AMD x86 processors
  • nproc: just prints out the number of processing units available, note that the number of processing units might not always be the same as number of cores
  • dmidecode: displays some information about the cpu, which includes the socket type, vendor name and various flags
  • hardinfo: would produce a large report about many hardware parts, by reading files from the /proc directory
  • lshw -class processor: lshw by default shows information about various hardware parts, and the '-class' option can be used to pickup information about a specific hardware part
  • inxi: a script that uses other programs to generate a well structured easy to read report about various hardware components on the system

ARM CPU features

CPU Benchmark

Sysbench

Sysbench -- Scriptable database and system performance benchmark, a cross-platform and multi-threaded benchmark tool

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

htop - an interactive process viewer for Unix

  • htop explained - Explanation of everything you can see in htop/top on Linux

htop_up htop_bt

CPU Instructions & Intrinsics

Assembly

SIMD

  • Intel MMX & SSE
  • ARM NEON

OpenMP

The OpenMP API specification for parallel programming, an Application Program Interface (API) that may be used to explicitly direct multi-threaded, shared memory parallelism.

OpenMP有两种常用的并行开发形式: 一是通过简单的 fork/join 对串行程序并行化,二是采用 单程序多数据 对串行程序并行化。

OpenMP in CMakeLists.txt:

find_package(OpenMP)
if (OPENMP_FOUND)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
    set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()

OpenACC

OpenACC is a user-driven directive-based performance-portable parallel programming model designed for scientists and engineers interested in porting their codes to a wide-variety of heterogeneous HPC hardware platforms and architectures with significantly less programming effort than required with a low-level model.

Intel TBB

Intel Threading Building Blocks (TBB) lets you easily write parallel C++ programs that take full advantage of multicore performance, that are portable and composable, and that have future-proof scalability.

Intel IPP

5. GPU

GPU Benchmark

  • For the Raspberry Pi GPU benchmark, use the OpenGL 2.1 test that comes with GeeXLab

  • msalvaris/gpu_monitor: Monitor your GPUs whether they are on a single computer or in a cluster

watch -n 10 nvidia-smi       # 每隔10秒更新一下显卡

Platforms

Languages

6. Software Optimization

hpc_cg's People

Contributors

cggos avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.