您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 如何在AMD Ryzen Threadripper上运行优化的HPL Linpack基准
  所属分类: 群集服务
  开发工具:
  文件大小: 905kb
  下载次数: 0
  上传时间: 2019-08-17
  提 供 者: stude******
 详细说明:如何在AMD Ryzen Threadripper上运行优化的HPL Linpack基准2019/8117 如何在 AMD Ryzen Threadrippe上运行优化的 HPL Linpack基准-2990W×32核性能 Threadripper 2 32-Core Layout (Unofficial) 2x16 PCle 2x16 PCle x Zen L2 L2 Zen Zen L2 L2 Zen 8M 8M 为zenL/<3 L3 L2 Zen i Zen L2L2 Zen F Zen L2. L2 Zen Zen L2 L2 Zen 8M 8M n zen 42/43 n L2 Zen t G Zen L2 L3 L2 Zen Coherent Links Coherent Links tX了 Coherent Links Coherent Links Zen L2 L2 Zen Zen L2 L2 Zen x 8M 8M L3 Zen L2 L2 Zen n Zen L2/L3 L2 Zena Zen L2 L2 Zen 产zenL2L2zen 8M 8M Zen L2/43 L2 Zen i Zen L2/L3 2 Zeni 2x16 PCle 2x16 PCle 我非常喜欢这张图片,它展示了核心集群气L3缓存布局之间的关系。这立即提出了运行 Linpack的策略。看起来 将指令和数据映射到L3缓存中,然后为每个缓存使用4个线程应该非常有效。我们将使用MP进程映射到缓存, 然后为每个进程打开MP线程。这是8MP啡排名”,每个都有4个步骤。这确实提供了我能够实现的最佳并行 Linpack性能。 Threadrippel 测试平台 我使用的系统是一个带有以下主要组件的试验台构建, 硬件 AMD Ryzen Threadripper 2990WX 321 3.00GHz 技嘉X399 AORUS XTREME-CF主板 128 GB DDR42666MHz内存 三星970PRO512GBM2SSD https://www.pugetsystems.com/abs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadripper----2990wx-32-core-...3/17 2019/8117 如何在 AMD Ryzen Threadrippe上运行优化的 HPL Linpack基准-2990W×32核性能 · NVIDIA TItan v gpu(是的,我在测试期间把它放在那里用于我的显示器,因为我有它可用。这是明确的 “过度杀死而且,不,我没有测试 LInpack就可以了应该这样做有时…) 软件 ● Ubuntu18.04 LTS OS gc坂本730 AMD BLIS Library12版 打开MP版本3.1 ·hpl2.2 逐步指导在 AMD Threadripper上构建和运行HPL Linpack基准测试 进行构建和测试的基本大纲是,(重复我所做的) 安装 Ubuntu18.04并构建依赖项 编译并安装 Open MP 下载并设置 AMD BLIS库 下载并编译HPL 设置作业配置文件并运行基准测试 当我试图让所有这些东西都起作用时,我做了很多实验(并且失败了)。我安装在各个地方。对于本方法,我将 尝试将所有内容保存在用户主目录中的单个目录中,以使其尽可能便携,并且可以更轻松地尝试已安装的系统而 不会弄得一团糟。 我们开始做吧! 步骤1)- Ubuntu1804安装和依赖 我在新的 Ubuntu18.04.1安装上进行了测试。我不打算详细介绍安装。它在测试硬件上没有仼何困难。我使用我 的“普通”方法进行安装,如使用NVDA驱动程序和任何桌面风格安装 Ubuntu1804的最佳方式中所述 我安装了一些额外的软件包(当然包括 emacs) 需要的依赖项和额外的包 sudo apt-get install build-essential emacs sudo apt-get install hwloc libhwloc-dev libevent-dev sudo apt-get install autoconf automake gfortran 上面的第二行包含重要的实用程序,以使MPl能够将进程本地化到硬件位置。 Portable Hardware Locality(hwoc)软件包提供了现代架构分层拓扑的可移植抽象(跨操作系统,版本,体系 结构……),包括NUMA内存节点,套接字,共亨缓存,内核和同时多线程。”这就是我们如何将进程映射到 Threadripperi核心集群上的L3緩存 软件构建和安装目录 我会尝试在这篇文章中保持整洁(我的构建有点乱,因为我尝试了很多不同的方法)。我们必须设置指向主安装 目录中正确位置的环境变量。 我为下载的源文件创建了一个构建目录, mkdir --/projects/ hpl-build 并且,安装的目录目标 https://www.pugetsystems.com/labs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadripper----2990wx-32-core...4/17 2019/8117 如何在 AMD Ryzen Threadripper上运行优化的 HPL Linpack基准-2990WX32核性能 mkdir N/AMD-HPL 步骤2)构建并安装 Open MP 除非您使用过 Linux集群,否则这可能是您不习惯的。MP表示消息传递接口"。这是现代超级计算(分布式并行 集群计算)的基本工具。它提供了具有消息传递功能的通信库,可以将其包含在并行代码中,以允许在网络结构 上的不同计算节点(服务器)上执行。它也适用于多核处理器上的各个内核,并且通常可以提供一种令人惊讶的 多线程替代方案。它还可以与线程一起以混合方式使用;以获得良好的效果,以利用硬件架构。这就是我们将要 做的,MP+ OpenMP线程。 转到https:/Www.oper-mpi.org/software/ompi/3.1并下载OpenMP|3.1的源代 码 openmpi-3.1.3.tar,gz。将该文件放在 projects/hp1-buid/目录中。 注意∶我尝试了 Open MP的“刚发布嘬版本4.0。构建并测试好但无法与 AMD BLIS库一起使用。3.1.3版本也是当 前版本,刚刚于2018年10月20日更新。 展开tar文件 tar xf openmpi-3.1.3. tar. gz cd openmpi-3.1.3/ 配置-制作-安装 CFLAGS="-Ofast -march=native"./configure --prefix=HOME/AMP-HPL make -j 32 make install 当你这样做时会有很多消息。MP版本有很多选项。请记住,这是程序在大型超级计算机集群上并行运行的主要 方式之一。我们的配置只是一个简单的设置,用于运行安装在主目录中的 HPL Linpack。 创建MP环境脚本 由于我们刚刚在不在任何系统路径上的目录中安装了MP,因此可以方便地创建—个脚本来设置几个环境变量 以便我们可以使用它。 mpi-env.sh在 AMD-HPL中创建文件 export MPI HOME=$HOME/AMD-HPLopenmpi-31 export PATH=PATH: $MPI_ HOME/bin export LD LIBRARY PATH=SLD LIBRARY PATH: $MPI HOME/lib 做一个简单的MP测试 源您创建的环境脚本, source w/AMD-HPL/mpi-env, sh 现在,创建以下程序 simple-mpi-test.c, https://www.pugetsystems.com/labs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadripper----2990wx-32-core...5/17 2019/8117 如何在 AMD Ryzen Threadripper上运行优化的 HPL Linpack基准-2990WX32核性能 #include /* PROVIDES THE BASIC MPI dEFINiTIoN AND TYPes */ include int main(int argc, char *xargv)i MPI Init(&argc, &argv);/*START MPI * // Get the rank of the process int rank; MPI Comm rank(MPI COMM WORLD, &rank); printf( Hello world from MPI RANk %d\n",rank); MPI_ Finalize (; /* EXIT MPI * 编译该程序 mpicc -o simple-mpi-test simple-mpi-test 并运行它, irun-np 4./simple-mpi-test Hello world from mPi rank 0 Hello world from MPi rank 2 Hello world from MPI rAnK 3 Hello world from mpi rank 1 您可以将进程数设置为可用的核心数。在这个 Threadripper CPU上,我们正在进行测试-np32。 注意:MP流程不一定按顺序返回。 注意:我尝试了刚网发布的 Open MPl4.0版。构建并测试好但无法与 AMD BL|S库一起使用。3.13版本也是当前 版本,刚刚于2018年10月20日更新 恭喜,您刚编写并在您的系统上运行并行程序! 步骤3)设置 AMD BLIS库 要在 AMD Threadripper上获得良好性能,您需要一个针对硬件优化的BLAS'库。对于基于Zen核心的AMD处理 器,最好的库可能是他们的自定义库,称为"BLS"。 转到hts:/ developer. amd. com/amd-cpu- libraries/ blas-library并获取该文 件AM-BLIS-MT- Linux-1.2.tar.gz。将该文件放在 projects/hp1- build目录中。这是AMD的库的二进制 版本。源代码也可用,您可以自己编译,但实际上并不需要这样做。 注意:这是多线程库,我们将在混合方法中使用σ penMP线程和MP进程(排名)。我发现这给了一个非常好的 结果。还有一个单线程版本的库可以很好地使用MPl进程进行并行处理。它会给出一个非常好的结果,但不如我 们的混合方法那么好。还有一个诱人的文件, insta1 run hp1-blis.tar.gz我尝试使用它,但有困难。我能够 将它用于单线程构建和运行,但是,它在多线程配置中失败了。 展开tar文件 https://www.pugetsystems.com/labs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadripPer----2990wx-32-core-...6/17 2019/8117 如何在 AMD Ryzen Threadripper上运行优化的 HPL Linpack基准-2990WX32核性能 tar xf AMD-BLIS-MT-Linux-1.2.tar. g cd amd-blis-mt-1. 2/ 安装BL|S库 这很简单,因为我们使用的是AMD的预编译二进制文件。只需将目录复制到AMD-HPL目录并重命名即可。 mv amd -blis-mt-1.2 /AMD-HPL/blis-mt 当我们构建hp基准测试时,它需要链接到库中$HoME/AMD-HPL/blis-nt/lib。 步骤4)编译HPL基准 现在转到实际的基准代码 访问htp:/www.netlib.org/benchmark/hp并下载HPL22版的源代码hp1-2.2.tar,gz。将该文件放 在 projects/hp1- build/目录中。 展开tar文件 tar xf hpl-2.2.tar. gz cdhp1-2.2/ 为Arch= LinUX AMD_BLS创建一个 Makefile 您需要有一个"make"文件来为我们想要链接到hp可执行文件的库设置路径。我将为您提供一个完整的 Make.LinuⅹX_AMD_BLS,您可以将其复制到具有该名称的文件中。它是对h源包含的架构make文件之一的修 改 我只在此文件中进行了一些修改,以设置我们安装所有內容的位置的路径。为了方便起见,我已将整个文件包含 在内,抱歉有点长。 将以下文本放入文件中 projects/hp1- build/hp1-2.2/ Make, Linux AMD blis https://www.pugetsystems.com/labs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadripper----2990wx-32-core...7117 2019/8117 如何在 AMD Ryzen Threadripper上运行优化的 HPL Linpack基准-2990WX32核性能 ##### High Performance Computing Linpack Benchmark (HPL) HPL -2.2 February 24, 2016 Antoine p. petites University of Tennessee, Knoxville Innovative Computing Laboratory # (C)Copyright 2000-2008 All Rights Reserved #- Copyright notice and licensing terms Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions f are met 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer # 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution # t 3. All advertising materials mentioning features or use of this software must display the following acknowledgement This product includes software developed at the University of Tennessee, Knoxville, Innovative Computing Laboratory 4. The name of the University, the name of the Laboratory, or the #t names of its contributors may not be used to endorse or promote products derived from this software without specific written permission ####井 Disclaimer t THIs SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT f LIMITED TO. THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR t A PartiCUlar PUrPoSe ARE DiSClaIMed. IN No EVEnt SHAll THE UNIVErSiTy OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ThEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT #(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE t OF ThIs SOF TWARE EVEN IF ADVISEd OF THE POSSIBilITY OF SUCH DAMAGE ####################################################################### # # SHELL /bin/sh CD CP LN S In -s MKDIR mkdir /bin/rm -f https://www.pugetsystems.com/abs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadrippeR----2990wx-32-core-...8/17 2019/8117 如何在 AMD Ryzen Threadripper上运行优化的 HPL Linpack基准-2990WX32核性能 TOUCH touch # t Platform identifier ARCH =Linuⅹ AMD BLIS # # HPL Directory Structure/ HPL library # # ToPdir $(HOME)/projects/hpl-build/hpl-22 INDir S(TOPdir)/include Bindir $(TOPdir)/bin/(ARCH) INdir $(TOPdir)/lib/S(ARCH) # HPLIib S(LIBdir)/libhpla MPi directories library ----- # #f MPinc tells the c compiler where to find the Message Passing library header files, MPlib is defined to be the name of the library to be used. the variable mpdir is only used for defining minc and mplib MEdic $(HOME )/AMD-HPL/openmpi-31 MInc -IS(MPdir)/include MPlab $(MPdir)/lib/libmpiso # #- Linear algebra library (BLas or VSIPL) LInc tells the c compiler where to find the Linear algebra library #f header files, LAlib is defined to be the name of the library to be used. The variable LAdir is only used for defining LInc and LAlib Adir $(HOME )/AMD-HPL/b1is-mt LInc LAlit S(LAdir)/lib/libblis-mta # -F77/c interface You can skip this section if and only if you are not planning to use a blas library featuring a fortran 77 interface. otherwise, it is necessary to fill out the F2CDEFs variable with the appropriate options. **One and only one** option should be chosen in **each** of the 3 following categories: # 1) name space (How c calls a Fortran 77 routine) # -DAdd all lower case and a suffixed underscore(Suns, # Intel [default] #-DNoChange all lower case (IBM RS6000) # -DUpcase all upper case (Cray), #t -DAdd the FORTRAN compiler in use is f2c https://www.pugetsystems.com/labs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadripper----2990wx-32-core...9/17 2019/8117 如何在 AMD Ryzen Threadrippe上运行优化的 HPL Linpack基准-2990W×32核性能 #t 2)c and Fortran 77 integer mapping # -df// INTEGER=int fortran // integer is a c int [default] #-DF77 INTEGER=long Fortran 77 INTeGER is ac long t -DF77 INTEGER=short fortran 77 integer is a c short #f 3)Fortran 77 string handling # -STring Sunstyle the string address is passed at the string loca tion on the stack, and the string length is then # passed as an F77 INTEGER after all explicit stack arguments, [default t -DStringStructptr The address of a structure is passed by Fortran 77 string, and the structure is of the form: struct ichar *cp; F77- INTEGER len #-DStringStructval a structure is passed by value for each Fortran # 77 string, and the st e is of the form. struct [char *cp; F77 INTEGER len -STring Style: Special option for Cray machines, which uses Cray fcd (fortran character descriptor) for interoperation # F2CDEFS DAdd-DF77 INTEGER=int -DStringSunStyle # - HPL includes libraries specifics -------------- HPL_INCLUDES =-IS(INcdir)-Is(INCdir)/$(ARCH )$(LAinc)$(MPinc) HPL LIBS = $(HPLlib)$(LAlib)$(MPlib)-lm # # -Compile time options t -DHPL COPY L force the copy of the panel l before bcast; t -DHPL CALL CBLAS call the cblas interface; t -DHPL CALL VSIPL call the vsip library t -DHPL DETAILEd Timing enable detailed timers By default HPl will: *)not copy L before broadcast, # call the Fortran 77 BLAs interface not display detailed timing information # HPL OPTS DHPL CALL CBLAS # # HPL DEFS $(F2CDEFS)$(HPL OPTS)$(HPL INCLUDES) # - Compilers linkers- Optimization flags # CC /usr/bin/gcc CCNOOPT S(HPL DEFS) CCFLAGS $(HPL DEFS )-std=C99 -march=native -fomit-frame-pointer-03-funroll-loops-W Wall -openmp https://www.pugetsystems.com/labs/hpc/how-to-run-an-optimized-hpl-linpack-benchmark-on-amd-ryzen-threadRipper----2990wx-32-coRe...10/17
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: