想了解并行计算框架但无从下手开始学习?

2023-11-01 14:59

本文主要是介绍想了解并行计算框架但无从下手开始学习?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于并行计算框架的一些理解及学习路径

  • 并行计算框架中各种方式介绍
    • 1.openMP
    • 2.MPI
    • 3.CUDA

并行计算框架中各种方式介绍

并行计算主要分为两大方向,主机端的CPU并行和设备端的GPU并行。
CPU端的并行主要有openMPMPI等方式。
GPU端的并行方式主流的有NVIDIA 的CUDA架构(GPU端的加速方式已经比较成熟,各种TOP500的超算都在大量使用GPU加速卡,包括我们的天河二号超算之前就曾经用过Intel Xeon Phi )

1.openMP

1.事实上,openMP作为一种比较易用的并行方式(但需要在编译器中打开openMP支持),支持C,C++,Fortran三种编程语言。

2.C openMP的学习资料比较多,我个人是在“超算习堂”中学习基础语法的,比如最常用的对循环的并行化,多线程的控制等等,后面倒不是经常用到了,该平台完全开放免费,还可以学习MPI等其他并行框架(保姆级教学)
在这里插入图片描述

3.Fortran openMP是我最近才接触到的,由于导师的祖传代码是用fortran写的(-_-),我只能选择自学fortran。不过幸运的是,openMP 用C和Fortran的写法差别并不大,有了C openMP的基础会好很多。
这里我推荐这个在Fcode上找到的资源《使用OpenMP 进行 Fortran95并行计算》网页下面下面有个中文版,要是各位够猛,点那个英文版也是可以的。

2.MPI

这个没学过,先挖个坑,以后回来说。

3.CUDA

在这里插入图片描述

这个是NVIDIA 自家推出的GPU计算框架,暂时支持五种编程语言(如上图咯)
我本人就准备主攻CUDA方向,手上的资料中比较推荐机械工业出版社这本CUDA并行程序设计,主要C语言描述。
在这里插入图片描述

1.个人认为,CUDA C的适用性最好,我是用VS 2019搭建的CUDA C环境,CUDA可以去英伟达官网下,链接CUDA下载点我
注意,先下载VS,再下载CUDA,要不然很可能连接不上出错。
CUDA C的初阶学习也可以在上面提到的超算习堂进行。

2.而fortran的环境搭建详细步骤可以参考这篇文章fortran环境搭建
我个人是用第二种,可以再次依靠着VS2019 (反正在上一点搭建CUDA C环境的时候已经下了)。
但无论是第一种还是第二种都有个问题,很严重,就是没法对fortran代码使用CUDA并行化,对此,我只找到了使用PGI编译器一种解决方法,找了很多论坛也没看到其他方法(那岂不是刚刚都在说废话啊喂 ),如果使用PGI编译器的话,还需要在linux系统下使用专业的算卡,我暂时也没有什么好办法了 ,所以对fortran代码的并行优化我暂时都是在CPU端用openMP做的。

这篇关于想了解并行计算框架但无从下手开始学习?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323809

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应