ORNL SHOC(CUDA & OpenCL) 编译简记

本文记录了在Linux环境下编译ORNL SHOC(CUDA & OpenCL)基准程序的过程,尽管CUDA编译未成功,OpenCL编译顺利。ORNL SHOC是一个用于测试GPU系统性能和稳定性的基准套件,支持CUDA和OpenCL,以及MPI集群测试。文章详细介绍了编译步骤,并展示了成功运行OpenCL版本后的性能测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说结果,我编译结果是CUDA未编译成功,OpenCL反而成功了。若有编译CUDA成功的可以交流一下。
不过貌似这不大影响我测试NVIDIA GPU及集群的结果吧。

一、ORNL简介:

    ORNL是橡树岭国家实验室(Oak Ridge National Laboratory,简称ORNL)是美国能源部所属最大的科学和能源研究实验室,成立于1943年,现由田那西大学和Battelle纪念研究所共同管理。20世纪50、60年代,ORNL主要从事核能、物理及生命科学的相关研究。70年代成立了能源部后,使得ORNL的研究计划扩展到能源产生、传输和保存领域等。

    目前,ORNL的任务是开展基础和应用项目的研发,提供知识和技术上的创新方法,增强美国在主要科学领域里的领先地位;提高洁净能源的利用率;恢复和保护环境以及为国家安全作贡献。ORNL在许多科学领域中都处于国际领先地位。它主要从事6个科学领域方面的研究,包括中子科学、能源、高性能计算、复杂生物系统、先进材料和国家安全。

    我关注的站点是其中一个子项目中的内容(ORNL Future Technologies Group):http://ft.ornl.gov/doku/ft/start


二、ORNL SHOC简介

    地址:http://ft.ornl.gov/doku/shoc/start

    SHOC(Scalable HeterOgeneous Computing (SHOC) Benchmark Suite),中文我暂时翻译为“可扩展的异构计算基准套件”。
    SHOC是基准程序的集合,用来测试系统的性能、稳定性以及测试编写这些在系统的软件。注意,这些系统采用的是非传统架构并用于通用计算。
    说的很拗口吧,其实目前而言,针对的就是GPU(CUDA和OpenCL)的程序及系统,不仅单机,还可用于他们的集群测试 。

    SHOC编译完成后,有CUDA的编译版本和OpenCL的编译版本。


三、特点

  1. 用OpenCL和CUDA编写的多个基准测试程序。
  2. 支持MPI的集群级并行
  3. 支持每节点多GPU的节点级并行
  4. 易用,测试报告清晰(与excel兼容)
  5. 可做大规模集群弹性测试(resiliency testing)的稳定性评测


四、基准程序

    SHOC基准程序集主要分为两个类别:压力测试和性能测试。

    压力测试用computationally demanding kernels来确定OpenCL设备是否有内存问题、冷却不足、或其他部件的问题。

    性能测试根据复杂度和设备的性能本身细分为level 0,level 1和level 2,有点类似BLAS API。具体看看下面解释,我就不翻译了。

    Level 0: Very low level device characteristics (so-called “feeds and speeds”) such as bandwidth across the bus connecting the GPU to the host or peak floating point operations per second(每秒浮点峰值)
    Level 1: Device performance for low-level operations such as vector dot products and sorting operations(点积或者排序等稍微低端的操作)
    Level 2: Device performance for real application kernels(应用级)


五、编译简记

    整个过程可以参考:http://ft.ornl.gov/doku/shoc/gettingstarted。本身不是多复杂,比CMAQ的编译要简单太多。。。
    我翻译一部分,用自己的话写一点。

Step 1: 解压源文件

这步应该都会。

tar -xvzf shoc-1.1.0.tar.gz

Step 2: 配置编译环境

这里主要可以选择是只编译CUDA,OpenCL,还是都编译,要不要MPI版本,或者全部都编译等等。
我们一般应该都是Linux吧,有其他系统的在对应的config目录里修改模板文件即可。一般来说不用修改。

比如我在Linux下编译,就要执行:
sh ./config/conf-linux-openmpi.sh

编译是自动根据默认路径设置来寻找系统中是CUDA还是OpenCL,还是都有等。MPI默认是mpicc,mpic++等。

这步没什么问题

若有问题就加参数 --with-opencl
或者加上CPPFLAGS="-I/usr/local/cuda/include",因为有时会提示
configure: WARNING: cuda.h: present but cannot be compiled
之类的错误。

Step 3: 编译基准程序

开始make:
make

在我的Linux服务器中,编译出现这个问题:

nvcc fatal &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值