并行计算入门导学

作为第一篇技术类文章(写着一篇纯属看到其他人都写的是技术类博客),本文章并不专注于讲授知识,而是大致地提供学习知识的路径和方法。时间紧迫,日后会缓慢更新。

超算竞赛

如果你是打算参加超算竞赛,那么你应该需要了解超算竞赛的流程,这里推荐《超算竞赛导引》,里面详细介绍了超算竞赛的流程,你可以很轻易的在浏览器中搜索到这个资源

主要组成部分:集群搭建、跑分、应用优化

linux系统基础

  • 基本命令行的使用
  • 环境管理工具
  • 各种奇奇怪怪的编译

并行编程

如何利用有限的硬件资源跑得更快,这就是并行编程。并行的类型可分为数据并行以及任务并行,在层次上可分为线程级并行和进程级并行。

线程级并行

通常我们的程序都是单进程单线程一个核,如果我们开启多线程,就可以单进程多线程多个核。这种方法主要用于一个节点中,使用共享内存模型。

主要工具:openmp(非常简单)

学习资料:

《并行计算导论第四章》

进程级并行

这个方法主要用于不同节点中,使用分布式内存模型,需要注意通信问题。

主要工具: intel mpi / openmpi(难度一般)

学习资料:

Running an MPI Program (intel.com)

Open MPI: Open Source High Performance Computing (open-mpi.org)

并行编程技巧

流水线并行。

数据依赖问题。

缓存命中问题。

向量运算。

编译器优化。

并行硬件

了解并行硬件是跑分和优化题的基础。主要了解关于缓存的知识(访问一次主存的时间约好几千个时钟周期,辅存更甚)

GPU编程

并行计算中主要使用CUDA c++而非python。

一般而言,GPU适合简单且密集的运算,CPU适合复杂的运算。GPU有多个SM(类比于CPU的一个核),每个SM有多个计算核心。

学习资料:

CUDA C++ Programming Guide (nvidia.com)

CUDA Toolkit Documentation 12.4 (nvidia.com)

人工智能编程 | 谭升的博客 (face2ai.com)


并行计算入门导学
https://bruoye-nountum.github.io/2024/05/05/并行计算入门导学/
作者
BIGHH
发布于
2024年5月5日
更新于
2024年5月5日
许可协议