rocm Linpack 编译构建系统解析

news2024/11/24 23:31:20

0. 购买amd显卡,安装rocm

1, 编译 rocHPL

下载源码:

$ git clone --recursive https://github.com/ROCm/rocHPL.git


编译:

$ cd rocHPL/
$ ./install.sh --prefix=${PWD}/../local/


会自动 git clone blit,ucx,opempi,

$ ./mpirun_rochpl -P 1 -Q 1 -N  8092 --NB 128

2, 解析 rocHPL 构建系统

2.1 整体项目编译框架解析

rocHPL 是使用一个 bash 脚本驱动整个编译过程的

install.sh

1,检查是否安装 getopt

2, 检查rocHPL 是否支持当前系统

检查 /etc/os-release 文件是否存在,install.sh 脚本依赖本文件中定义的变量: ID=ubuntu
  执行 $ source /etc/os-release, 设置其中定义的变量
    rocHPL 支持的 Linux 发行版有如下几种: ubuntu|centos|rhel|fedora|sles
    通过函数 supported_distro() 来检查本机系统是否在被支持的列表中。

3, 定义了一堆编译链接相关的变量,

指定安装目录、指定构建类型、指定rocm的安装目录、mpi的安装目录、rocblas的安装目录、blis的安装目录、3个编译信息指示开关:
install_prefix=rocHPL
build_release=true
with_rocm=/opt/rocm
with_mpi=tpl/openmpi
with_rocblas=/opt/rocm/rocblas
with_cpublas=tpl/blis/lib
verbose_print=true
progress_report=true
detailed_timing=true


4, 解析 install.sh 被执行时的命令选项

    根据 install.sh 的命令选项,设置脚本内部变量的值。
    build_release:  编译类型
    install_prefix: 安装目录
    with_rocm:  rocm的安装目录
    with_mpi:   mpi 的安装目录
    with_rocblas: rocblas 的安装目录
    with_cpublas: blis 的安装目录
    verbose_print: 编译信息输出
    progress_repot: 编译进展报告
    detailed_timing: 详细的编译时间统计
    
5, 设定编译文件目录: build_dir,
    每次重新执行 install.sh 的时候,都会先删除这个文件夹(rm -rf ),然后重新创建(mkdir ...)。


6, 将 rocm/bin 设置进入 PATH 中去,并将当前目录压入目录栈中。


7, 编译安装 blas,项目中使用的时blis,作为gpu计算结果正确性的测试工具。
    git clone https://github.com/amd/blis --branch 4.2
    ./configure --prefix=${PWD} --enable-cblas --disable-sup-handling auto;
    make -j
    make install -j

8, 基于 ucx 编译安装 mpi,项目中使用的是 openmpi,作为集群通行工具,并基于知名通信库 ucx
  8.1 编译安装 ucx
    git clone --branch v1.16.0 https://github.com/openucx/ucx.git ucx
    ./autogen.sh; ./autogen.sh
    mkdir build; cd build
    ../contrib/configure-opt --prefix=${PWD}/../ --with-rocm=${with_rocm} --without-knem --without-cuda --without-java
    make -j
    make install
    
    检查 ucx 是否编译安装成功

  8.2 编译安装 openmpi
      git clone --branch v5.0.3 --recursive https://github.com/open-mpi/ompi.git openmpi
      cd openmpi; ./autogen.pl;
      mkdir build; cd build
      ../configure --prefix=${PWD}/../ --with-ucx=${PWD}/../../ucx --without-verbs
      make -j
      make install


9, 设置 cmake 的选项
   -DCMAKE_INSTALL_PREFIX=
   -DHPL_BLAS_DIR=
   -DHPL_MPI_DIR=
   -DROCM_PATH=
   -DROCBLAS_PATH=
   -DCMAKE_BUILD_TYPE=
   通过运行 shopt -s nocasematch,告诉 Bash shell 在执行字符串匹配时不区分大小写,在解析下列三个选项的设置。
   -DHPL_VERBOSE_PRINT=
   -DHPL_PROGRESS_REPORT=
   -DHPL_DETAILED_TIMING=
   通过运行 shopt -u nocasematch,告诉 Bash shell 在执行字符串匹配时不区分大小写,在解析下列三个选项的设置。
 
10, 配置 rocHPL
    mkdir -p build/
    cd build/
    cmake + 9中设置的选项值;


11, 编译 rocHPL

    make -j

2.2 rocHPL CMakeLists.txt 解析

未完待续...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【hot100-java】【接雨水】

R8-双指针篇 转战java后端的第一天,学点java语法(手动狗头) 这题之前写过多种解法 下面我们使用前后缀分离法解决。 class Solution {public int trap(int[] height) {int n height.length;//表示height[0]到height[i]的最大值int[] pre…

【mechine learning-七-线性回归之成本函数】

监督学习之cost function 成本函数权重、偏置如何实现拟合数据成本函数是如何寻找出来w和b,使成本函数值最小化? 在线性回归中,我们说到评估模型训练中好坏的一个方法,是用成本函数来衡量,下面来详细介绍一下 成本函数…

3D技术在电商独立站中的应用有哪些?

3D技术在电商独立站中的应用日益广泛,为电商行业带来了全新的商品展示方式和购物体验。以下是3D技术在电商独立站中的具体应用及其带来的优势: 一、商品3D展示 1、沉浸式体验: 通过3D技术,商品可以在独立站上以三维形式呈现&…

Word 脚注与正文之间的空行怎么删除啊?

全网都搜索不到解决方案,难道只有我一个人遇到这个问题了吗? 无语,。、;

9月12日的学习

练习 #include "widget.h" #include "ui_widget.h" QListWidgetItem *p; Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),socket(new QTcpSocket(this))//给客户端指针实例化空间及关联父组件 {ui->setupUi(this);//初始化,ui-…

学习大数据DAY56 业务理解和第一次接入

作业1 1 了解行业名词 ERP CRM OA MES WMS RPA SAAS 了解每个系统的功能和应用 ERP 系统,(Enterprise Resource Planning,企业资源计划系统):ERP 系统 是一种用于管理企业各类资源的软件系统,包括生产管理…

2024年软件测试经典大厂面试题(全3套)【包含答案】

前言 金三银四即将过去,后面迎来的便是金九银十,一直想着说分享一些软件测试的面试题,这段时间做了一些收集和整理,下面共有三篇经典面试题,大家可以试着做一下,答案附在后面,希望能帮助到大家。…

STM32——玩转超声波传感器

目录 1.什么是超声波? 超声波的基本特点: 2.超声波传感器介绍:HC-SR04 HC-SR04 主要特点: HC-SR04 接线如下: HC-SR04 工作原理: 如何编写超声波测距代码? 编写逻辑: 编写思…

【2024】前端学习笔记4-图像标记

在 HTML 中&#xff0c;<img>标签用于在网页中插入图像。 基本语法&#xff1a; <img src"图像文件地址" alt"替代文本">src&#xff1a;指定图片的路径&#xff0c;可以是相对路径、绝对路径。alt&#xff1a;为图像提供代替文本&#xff0…

9.12日常记录

1.extern关键字 1&#xff09;诞生动机:在一个C语言项目中&#xff0c;需要再多个文件中使用同一全局变量或是函数&#xff0c;那么就需要在这些文件中再声明一遍 2&#xff09;用于声明在其他地方定义的一个变量或是函数&#xff0c;在当前位置只是声明&#xff0c;告诉编译器…

【办公类】幼儿健康数据模版批量更改日期(保健老师填写)

背景需求 今天下发通知 三个园区的保健老师需要填写 1.2023学年&#xff08;202406&#xff09;的六一体检数据 2.2024学年&#xff08;202409&#xff09;的新生入园体检数据 我先把上一轮填写过的数据模版下载下来&#xff08;套用模版&#xff09; 把EXCEL下载到原始文件…

驾驭不断发展的人工智能世界

从很多方面来看&#xff0c;历史似乎正在重演。许多企业正争相采用生成式人工智能 (Gen AI)&#xff0c;就像它们争相采用云计算一样&#xff0c;原因也是一样的&#xff1a;效率、成本节约和竞争优势。 然而&#xff0c;与云一样&#xff0c;GenAI 仍是一项发展中的技术&…

机器学习(西瓜书)第 9 章 聚类

9.1 聚类任务和距离计算 在”无监督学习“中&#xff0c;训练样本的标记信息是未知的&#xff0c;目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&#xff0c;为进一步的数据分析提供基础.此类学习任务中研究最多、应用最广的是“聚类”(clustering). 聚类试图…

咖啡果实病虫害检测系统源码分享

咖啡果实病虫害检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

【最新综述】基于深度学习的超声自动无损检测(上)

Deep learning in automated ultrasonic NDE – Developments, axioms and opportunities 传统上&#xff0c;超声无损检测数据分析一直由训练有素的操作员在基本自动化工具的支持下手动解释数据。最近&#xff0c;开始出现许多针对个别无损检测任务&#xff08;数据预处理、缺…

即插即用篇 | YOLOv10 引入矩形自校准模块RCM | ECCV 2024

本改进已同步到YOLO-Magic框架! 语义分割是许多应用的重要任务,但要在有限的计算成本下实现先进性能仍然非常具有挑战性。在本文中,我们提出了CGRSeg,一个基于上下文引导的空间特征重建的高效且具有竞争力的分割框架。我们精心设计了一个矩形自校准模块,用于空间特征重建和…

HarmonyOS开发实战( Beta5.0)橡皮擦案例实践详解

鸿蒙HarmonyOS开发往期必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 介绍 本示例通过ohos.graphics.drawing库和blendMode颜色混合实…

Obsidian git sync error / Obsidian git 同步失敗

Issue: commit due to empty commit message Solution 添加commit資訊&#xff0c;確保不留空白 我的設置&#xff1a;auto-backup: {{hostname}}/{{date}}/

ESXI8.0 vsphere vcenter 多网卡多网段配置

一般来说服务器至少两块网卡&#xff0c;安装esxi后一种方案是利用闲置网卡建立多上传链路&#xff0c;聚合&#xff0c;另一种是配置多网段进行虚拟机隔离&#xff0c;网上也没找到讲的很清楚的&#xff0c;经过多种尝试终于学会&#xff0c;记录分享一下 首先物理交换机的随…

谷歌开发者账号被封会影响AdMob吗?收款卡更换修改有什么限制?

众所周知&#xff0c;AdMob作为谷歌旗下的广告平台&#xff0c;是众多开发者的主要变现渠道之一。那在开发者账号被封的情况下&#xff0c;AdMob账号是否会也受到波及&#xff1f; 虽说通常谷歌开发者账号被封并不直接等同于AdMob账号被封&#xff0c;但还是会互相影响的。即使…