HPCC 全称 HPC Challenge Benchmark,由一组benchmark组成,共计7个,分别测试了系统7个方面的性能,这7个分别为:

  • stream:测试内存带宽
  • Random Access:测试内存刷新速率
  • PTRANS:通过多处理器结构中两两之间的通信,来衡量在整个网络的通信能力
  • Latency/Bandwidth: 测试延时与带宽
    • Latency:8 byte 数据从一个节点到另一个节点所需时间
    • Bandwidth:节点间网络通信的带宽
  • HPL:测试系统在解线性方程组时进行浮点运算的性能
  • FFT:测试双精度一维离散傅里叶变换浮点运算的速度
  • DGEMM:测试双精度矩阵乘法浮点运算的速度

本文将在Ubuntu-22.04-LTS上编译HPCC

一、安装依赖包

sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gfortran

二、下载源码

下载mpich安装包mpich-4.1.1.tar.gz,下载地址:http://www.mpich.org/downloads
下载lapack安装包lapack-3.11.0.tar.gz,下载地址:https://netlib.org/lapack/#_lapack_version_3_11_0

三、编译MPICH

mpich安装到/usr/mpich文件夹

sudo mkdir /usr/mpich                            # 创建安装文件夹
sudo cp mpich-4.1.1.tar.gz /usr/mpich           # 将安装包复制到目标文件夹
cd /usr/mpich                                   # 进入安装文件夹
sudo tar zxvf mpich-4.1.1.tar.gz                # 解压
cd mpich-4.1.1
sudo ./configure --prefix=/usr/mpich
sudo make                                       # 编译
sudo make install                               # 安装

配置环境变量

sudo vim ~/.bashrc
export PATH=/usr/mpich/bin:$PATH
export INCLUDE=/usr/mpich/include:$INCLUDE
export LD_LIBRARY_PATH=/usr/mpich/lib:$LD_LIBRARY_PATH
source ~/.bashrc             # 使此设置永久有效,不然每次打开终端都需要重新设置

检查环境变量是否正确

which mpicc

出现/usr/mpich/bin/mpicc即为正确。

四、编译lapack

1、编译源文件

lapack的安装包已经包含了blascblaslapacke

sudo tar zxvf lapack-3.11.0.tar.gz
cd lapack-3.11.0
cp make.inc.example make.inc
make blaslib
make cblaslib
make lapacklib
make lapackelib

编译完成后,会在lapack-3.11.0目录下生成librefblas.alibcblas.aliblapack.aliblapacke.a四个静态库。

2、静态库和头文件

为了后续使用时不用每次都指定头文件和静态库的路径,可将静态库和头文件加入系统。

# 静态库
cd lapack-3.11.0
sudo cp librefblas.a /usr/local/lib
sudo cp libcblas.a /usr/local/lib
sudo cp liblapack.a /usr/local/lib
sudo cp liblapacke.a /usr/local/lib
# 头文件
cd lapack-3.11.0/CBLAS/include
sudo cp * /usr/local/include
cd lapack-3.11.0/LAPACKE/include
sudo cp * /usr/local/include

3、BLAS使用

  • 新建文件test.c
#include <stdio.h>
#include "cblas.h"int main(){const int dim = 2;double a[4] = {1.0, 1.0, 1.0, 1.0}, b[4] = {2.0, 2.0, 2.0, 2.0}, c[4];int m = dim, n = dim, k = dim, lda = dim, ldb = dim, ldc = dim;double al = 1.0, be = 0.0;cblas_dgemm(101, 111, 111, m, n, k, al, a, lda, b, ldb, be, c, ldc);printf("the matrix c is:%f,%f\n%f,%f\n", c[0], c[1], c[2], c[3]);return 0;
}
  • 编译
    编译时注意,更换静态库的链接顺序,可能会报错。
gcc test.c -o test -lcblas -lrefblas -lm -lgfortran
  • 运行 ./test,预期输出
the matrix c is:4.000000,4.000000
4.000000,4.000000

4、LAPACK使用

  • 新建文件test.c
/* Calling DGELS using row-major order */#include <stdio.h>
#include <lapacke.h>int main (int argc, const char * argv[]){double a[5][3] = {1, 1, 1, 2, 3, 4, 3, 5, 2, 4, 2, 5, 5, 4, 3};double b[5][2] = {-10, -3, 12, 14, 14, 12, 16, 16, 18, 16};lapack_int info, m, n, lda, ldb, nrhs;int i, j;m = 5;n = 3;nrhs = 2;lda = 3;ldb = 2;info = LAPACKE_dgels(LAPACK_ROW_MAJOR, 'N', m, n, nrhs, *a, lda, *b, ldb);for(i = 0; i < n; i ++){for(j=0;j<nrhs;j++){printf("%lf ",b[i][j]);}printf("\n");}return(info);
}
  • 编译
    编译时注意,更换静态库的链接顺序,可能会报错。
gcc test.c -o test -llapacke -llapack -lcblas  -lrefblas  -lm -lgfortran
  • 运行 ./test,预期输出
2.000000 1.000000
1.000000 1.000000
1.000000 2.000000

五、编辑Makefile文件

cd hpcc-1.5.0
# 复制hpl/setup/Make.Linux_PII_CBLAS文件到hpl/目录下,并重命名为Make.LINUX
cp hpl/setup/Make.Linux_PII_CBLAS hpl/Make.LINUX
vim hpl/Make.LINUX                                  # 修改Make.LINUX文件

1、修改MPdirMPincMPlib

MPdir        = /usr/mpich
MPinc        = -I$(MPdir)/include
MPlib        = $(MPdir)/lib/libmpich.so

2、修改HPL_LIBS

HPL_LIBS     = $(HPLlib) $(MPlib) -lm -L/usr/local/lib -lcblas -lblas

3、修改CC

CC = /usr/mpich/bin/mpicc

可使用which mpicc命令检查mpicc的路径。

4、修改LINKER

LINKER = /usr/mpich/bin/mpif77

可使用which mpif77命令检查mpif77的路径。

六、编译HPCC

修改Makefile文件

cd hpcc-1.5.0
vim Makefile

修改第三行为:

arch = LINUX
  • 编译
cd hpcc-1.5.0
sudo make
cp _hpccinf.txt hpccinf.txt     # 将_hpccinf.txt重命名为hpccinf.txt
mpirun -np 4 ./hpcc             # 运行HPCC

运行结束后结果会写入hpccoutf.txt文件。

后记

网上找到的在Ubuntu上运行HPCC的方式都是先安装BLAS库和CBLAS库。但是在编译CBLAS时总是出错,互联网上也没有解决方法。但是在搜索解决方法时发现可以通过lapack来编译CBLAS,尝试了一下,结果可行。

Ubuntu22.04安装HPCC相关推荐

  1. Ubuntu22.04安装惠普P1108打印机并在局域网内共享

    Ubuntu22.04安装惠普P1108打印机 注:前期安装了smbsa用于文件共享. 一.安装打印机 1.1 版本 端口:USB 打印机型号:HP_LaserJet_Professional_P11 ...

  2. Ubuntu 系列学习(五)ubuntu22.04安装flameshot火焰截图(图文)

    文章目录 ubuntu22.04安装flameshot v11(火焰截图) 1 火焰截图flameshot安装 1.1 方法一 克隆项目编译安装 1.2 方法二 .deb包安装 1.3 添加依赖时的报 ...

  3. Ubuntu22.04 安装禅道

    Ubuntu22.04 安装禅道 Ubuntu22.04 在线安装 LAMP Ubuntu22.04 在线安装 MySQL8 MySQL APT存储库的下载页面 wget https://repo.m ...

  4. Ubuntu22.04安装与配置记录

    Ubuntu22.04安装与配置记录 原文地址:Ubuntu22.04安装与配置记录 2022年4月21日,ubuntu发布了22.04版本,该版本是一个LTS长期支持版本,技术支持5年,22.04版 ...

  5. Ubuntu22.04安装VMware16[解决各种安装问题]

    Ubuntu22.04安装VMware[快速解决各种安装问题] 0. 前言 1. 下载安装包 2. 安装依赖 2.1 安装gcc 2.2 安装make 2.3 安装lib 2.4 安装git 2.5 ...

  6. ubuntu22.04安装显卡驱动、CUDA及cudnn

    安装显卡驱动.CUDA及cudnn 显卡驱动 自行下载安装 Software & Updates安装 使用命令安行安装 Ubuntu22.04系统安装CUDA 一.CUDA 是什么 先查看有没 ...

  7. ubuntu22.04安装pytorch(一遍过)

    本文介绍ubuntu22.04安装pytorch(本地安装),关于win10安装pytorch-gpu请关注小编的上一篇文章- 1.进入Anaconda资源包下载链接 https://conda.an ...

  8. ubuntu22.04安装显卡驱动+cuda+cudnn

    ubuntu22.04安装显卡驱动+cuda+cudnn 1. 下载驱动和卸载.禁用自带驱动程序 1.1 查看系统显卡型号 1.2 从NVIDIA官网下载相应驱动 1.3 卸载Ubuntu自带的驱动程 ...

  9. Ubuntu22.04安装wine微信

    Ubuntu22.04安装wine微信 1.前言 这里只做解决方案记载,节省大家找资料的时间,方便下次快速搭建开发环境使用的.理论知识可能会是了涉及,但是肯定是以解决方案为主. 基本上大部分的软件使用 ...

最新文章

  1. 开源项目-基于Intel VT技术的Linux内核调试器
  2. 阿里云DDoS高防 - 访问与攻击日志实时分析(二)
  3. Shell中的数据重定向--输入/输出重定向
  4. [ORACLE错误]oracle 不能更新 PL/SQL 点击“edit data”报“ these query results are not updateable”...
  5. PhpStorm 中文设置教程
  6. AI最后--热门游戏引擎(CN地区)
  7. TensorFlow 多任务学习
  8. leetcode - 647. 回文子串
  9. 学习拾遗--用RadioButtonList 或者DropDownList 进行动态赋值问题
  10. 利用openssl进行base64的编码与解码
  11. python 读取pdf图片_Python提取PDF第一页为封面图片【批量提取】
  12. 5 个关键点!优化你的 UI 原型设计
  13. 使用Python合并excel表格的两列
  14. R中设置图形参数--函数par()详解
  15. 文件删不掉需要管理员权限?分享解决方法
  16. 当今计算机的排名,目前电脑处理器排行榜(2020处理器性能排名对比)
  17. c语言如何判定是32位系统还是64位系统
  18. win10笔记本上插耳机没有声音,插耳机不被检测
  19. FDM打印机使用总结(三)
  20. 2022“杭电杯”中国大学生算法设计超级联赛(4)

热门文章

  1. 光耦继电器和普通继电器的区别概述
  2. 基于S32K144 移植 FreeRTOS 10.1.1
  3. html计算器的基本功能实现,JS实现基本的网页计算器功能示例
  4. lm386实用原理图
  5. Unity3d的WebGL发布和IIS部署
  6. 【网络工程管理 第三章】 各类网络设备 交换机 VLAN配置实验
  7. 【bzoj1324】Exca王者之剑(8-9 方格取数问题)
  8. uos系统中windows格utf8编码文件转GBK
  9. python与物理结合_Python物理学高效计算(完整版高清带目录)_IT教程网
  10. 【Java】使用模板生成word文档到服务器,并下载