码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于GPU的kokkos加速安装


    关注 M r . m a t e r i a l   , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩!


    主要专栏内容包括:
      †《LAMMPS小技巧》: ‾ \textbf{ \underline{\dag《LAMMPS小技巧》:}}  †《LAMMPS小技巧》:​ 主要介绍采用分子动力学( L a m m p s Lammps Lammps)模拟相关安装教程、原理以及模拟小技巧(难度: ★ \bigstar ★)
      ††《LAMMPS实例教程—In文件详解》: ‾ \textbf{ \underline{\dag\dag《LAMMPS实例教程—In文件详解》:}}  ††《LAMMPS实例教程—In文件详解》:​ 主要介绍采用分子动力学( L a m m p s Lammps Lammps)模拟相关物理过程模拟。(包含:热导率计算、定压比热容计算,难度: ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★)
      †††《Lammps编程技巧及后处理程序技巧》: ‾ \textbf{ \underline{\dag\dag\dag《Lammps编程技巧及后处理程序技巧》:}}  †††《Lammps编程技巧及后处理程序技巧》:​ 主要介绍针对分子模拟的动力学过程(轨迹文件)进行后相关的处理分析(需要一定编程能力。难度: ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★)。
      ††††《分子动力学后处理集成函数—Matlab》: ‾ \textbf{ \underline{\dag\dag\dag\dag《分子动力学后处理集成函数—Matlab》:}}  ††††《分子动力学后处理集成函数—Matlab》:​ 主要介绍针对后处理过程中指定函数,进行包装,方便使用者直接调用(需要一定编程能力,难度: ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★)。
      †††††《SCI论文绘图—Python绘图常用模板及技巧》: ‾ \textbf{ \underline{\dag\dag\dag\dag\dag《SCI论文绘图—Python绘图常用模板及技巧》:}}  †††††《SCI论文绘图—Python绘图常用模板及技巧》:​ 主要介绍针对处理后的数据可视化,并提供对应的绘图模板(需要一定编程能力,难度: ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★ ★ \bigstar ★)。
      ††††††《分子模拟—Ovito渲染案例教程》: ‾ \textbf{ \underline{\dag\dag\dag\dag\dag\dag《分子模拟—Ovito渲染案例教程》:}}  ††††††《分子模拟—Ovito渲染案例教程》:​ 主要采用 O v i t o \rm Ovito Ovito软件,对 L a m m p s \rm Lammps Lammps 生成的轨迹文件进行渲染(难度: ★ \bigstar ★ ★ \bigstar ★)。

      专栏说明(订阅后可浏览对应专栏全部博文): ‾ \color{red}{\textbf{ \underline{专栏说明(订阅后可浏览对应专栏全部博文):}}}  专栏说明(订阅后可浏览对应专栏全部博文):​
    注意: \color{red} 注意: 注意:如需只订阅某个单独博文,请联系博主邮箱咨询。 l a m m p s _ m a t e r i a l s @ 163. c o m \rm lammps\_materials@163.com lammps_materials@163.com

    ♠ \spadesuit ♠ † \dag † 开源后处理集成程序:请关注专栏《LAMMPS后处理——MATLAB子函数合集整理》
    ♠ \spadesuit ♠ † \dag † † \dag † 需要付费定制后处理程序请邮件联系: l a m m p s _ m a t e r i a l s @ 163. c o m \rm lammps\_materials@163.com lammps_materials@163.com


    基于GPU的kokkos加速安装

    • 基于GPU的kokkos加速安装
    • 1. 安装lammps
    • 2. 安装cmake
    • 3. cmake相关文件修改
    • 4. cmake编译
    • 5. 测试
    • 6. 安装VORONOI库
      • 1. 安装voro++
      • 2. 软链接
      • 3. 编译lammps
      • 4. 测试
      • 5. 注意

    安装lammps及相关库的步骤网上很多,这里介绍在前期步骤准备好的情况下,如果in文件中包含反应力 场以及需要通过voronoi库计算应力,如何通过基于gpu架构的kokkos+openmp实现计算加速

    基于GPU的kokkos加速安装

    1. 安装lammps

    下载lammps稳定版本安装包,在同目录下键入命令行:tar -xvzf lammpsxxx.tar.gz

    2. 安装cmake

    具体方法参照 ubuntu安装cmake_yuanzhoulvpi的博客-CSDN博客_ubuntu安装cmake
    安装完成后cmake --version查看安装版本,which cmake 查看安装路径

    3. cmake相关文件修改

    在解压好的lammps目录下执行如下命令行:

    mkdir build_kokkos_cuda 
    cd build_kokkos_cuda 
    
    • 1
    • 2

    修改 / c m a k e / p r e s e t s \rm /cmake/presets /cmake/presets 文件夹中的 b a s i c . m a k e \rm basic.make basic.make文件,根据自己需要安装的 p a c k a g e \rm package package 在文件中 进行修改,也可以不修改,后面在命令行中添加即可。将 k o k k o s − c u d a . c m a k e \rm kokkos-cuda.cmake kokkos−cuda.cmake文件中带有 A R C H _ G P U A R C H \rm ARCH\_GPUARCH ARCH_GPUARCH那一行删

    4. cmake编译

    在build_kokkos_cuda目录下进行编译,对于多核+gpu,
    参考官方网址
    3.7. Packages with extra build options — LAMMPS documentation,
    编译需要设置如下变量:
    在这里插入图片描述
    在这里插入图片描述
    其中HOSTARCH以及GPUARCH需要根据自己机器型号参考官网给出的表进行修改, 机器具体型号可参考官网:https://ark.intel.com/content/www/us/en/ark.html#@Processors

    在这里插入图片描述
    使用如下命令行设置上述相关变量:

    cmake -C ../cmake/presets/basic.cmake -C ../cmake/presets/kokkos-cuda.cmake DKokkos_ENABLE_OPENMP=on -DKokkos_ARCH_SKX=on -DBUILD_OMP=on ../cmake
    
    cmake -C ../cmake/presets/basic.cmake -C ../cmake/presets/kokkos-cuda.cmake DKokkos_ARCH_AMPERE86=on -DKokkos_ENABLE_CUDA=on -DCMAKE_CXX_COMPILER= ${HOME}/lammps/lib/kokkos/bin/nvcc_wrapper ../cmake 
    
    • 1
    • 2
    • 3

    注意这里的 n v c c _ w r a p p e r nvcc\_wrapper nvcc_wrapper 需要写绝对路径,一般在安装好的 l a m m p s / l i b / k o k k o s / b i n \rm lammps/lib/kokkos/bin lammps/lib/kokkos/bin 目录下变量设置完成后使用如下命令行进行编译,后面的20为编译时使用的核数:

    cmake --build . -- -j20 
    
    • 1

    编译完成后会在 b u i l d _ k o k k o s _ c u d a \rm build\_kokkos\_cuda build_kokkos_cuda 目录下生成可执行文件 l m p \rm lmp lmp

    5. 测试

    使用 l a m m p s lammps lammps 自带的 e x a m p l e example example 进行测试,找到 / e x a m p l e s / r e a x f f \rm /examples/reaxff /examples/reaxff 目录,将 i n . r e a x f f . r d x \rm in.reaxff.rdx in.reaxff.rdx 文件 中的 p a i r _ s t y l e \rm pair\_style pair_style 改成 r e a x f f / k k \rm reaxff/kk reaxff/kk,在此目录下键入如下命令

    mpirun -np 2 /home/groupc/lammps-new/lammps-3Nov2022/build_kokkos_cuda/lmp -k on g 1 sf kk -pk kokkos newton on neigh half -in in.reaxff.rdx
    
    • 1

    6. 安装VORONOI库

    1. 安装voro++

    进入安装好的 l a m m p s \rm lammps lammps 的 l i b / v o r o n o i \rm lib/voronoi lib/voronoi 文件夹

    在 V o r o + + − D o w n l o a d ( l b l . g o v ) \rm Voro++ - Download (lbl.gov) Voro++−Download(lbl.gov)下载voro++压 缩安装包
    也可以用wget+网址命令进行下载。下载好后

    tar -xvzf voro++-0.4.6.tar.gz
    
    • 1

    进入解压好的voro++文件夹,执行make,完成后执行sudo make install

    2. 软链接

    cd …退回lib/voronoi目录,键入如下命令:

     ln -s voro++-0.4.6/src includelink
     ln -s voro++-0.4.6/src liblink 
    
    • 1
    • 2

    会生成两个软链接includelink和liblink

    3. 编译lammps

    进入安装好的lammps/src目录,在此目录下安装需要的package,根据自己的需要安装 package。每个package关联的命令见6.1. Available Packages — LAMMPS documentation。这 里不建议通过make yes-all,make no-lib,make no-ext三个命令将所有不需要外接库的 包直接装上,建议make yes-package安装自己需要的那些包,不然后续编译可能会出错。 这里除了需要的简单包,还需要make yes-voronoi,即安装上我们需要的voronoi包。通 过命令make package-status查看包的安装情况。安装完成后执行命令make mpi即可,编 译完成后会在src目录下生成lmp_mpi文件

    4. 测试

    进入 l a m m p s / e x a m p l e s / v o r o n o i \rm lammps/examples/voronoi lammps/examples/voronoi 文件夹,运行 m p i r u n − n p   N   l m p _ m p i ( p a t h )   − i n   i n . v o r o n o i \rm mpirun -np\ N\ lmp\_mpi(path)\ -in\ in.voronoi mpirun−np N lmp_mpi(path) −in in.voronoi,测试是否安装上。这里 l m p _ m p i ( p a t h ) \rm lmp\_mpi(path) lmp_mpi(path) 指的是需要写出可执行文件的路径, 如果不想这么麻烦,可以把这个路径写到系统变量中即可。

    5. 注意

    这里编译完成后有两个可执行文件,一个是 b u i l d _ k o k k o s _ c u d a \rm build\_kokkos\_cuda build_kokkos_cuda 目录下有一个 l m p \rm lmp lmp文件,另一个 是 l a m m p s / s r c \rm lammps/src lammps/src 目录下有一个
    l m p _ m p i \rm lmp\_mpi lmp_mpi 文件。如果你的 in 文件中使用的是反应力场,并且包含 c o m p u t e v o r o n o i / a t o m \rm compute voronoi/atom computevoronoi/atom 命令,我建议使用如下方式进行加速并调用 v o r o n o i \rm voronoi voronoi 库进行计算,这么 做的原因一方面是因为 k o k k o s \rm kokkos kokkos 加速主要在gpu完成计算(我的 g p u \rm gpu gpu 使用率达到97%),而 v o r o n o i \rm voronoi voronoi 库的计算主要在cpu上完成,这么做可以发挥gpu及cpu的最大性能;另一方面是因为我 暂时还不知道如何在 k o k k o s + o p e n m p \rm kokkos+openmp kokkos+openmp 编译时同时实现 v o r o n o i \rm voronoi voronoi 的编译,方式如下:

    1. 先通过 k o k k o s \rm kokkos kokkos 加速完成整个运算并输出轨迹文件,这里运算可执行文件路径写 b u i l d _ k o k k o s _ c u d a \rm build\_kokkos\_cuda build_kokkos_cuda 下的 l m p \rm lmp lmp 文件路径。建议轨迹文件的输出步长尽量小一些;
    2. 完成后重新书写一个in文件,在in文件中使用 r e r u n \rm rerun rerun 命令读取上一步骤输出的轨迹文件并进 行 v o r o n o i \rm voronoi voronoi 计算输出数据,设置好后运行 i n \rm in in 文件。运行时采用纯 c p u \rm cpu cpu 计算,可执行文件路径 写 s r c \rm src src 目录下的 l m p _ m p i \rm lmp\_mpi lmp_mpi 文件路径。 i n \rm in in 文件的设置可以参考如下:

    在这里插入图片描述

  • 相关阅读:
    业务安全详解
    C++ STL简介
    Visual Studio 2022 版本 17.5 预览版 正式上线,有你期待的功能吗?
    COCI2022-2023#1 Neboderi
    Java——二叉搜索树
    java删除目录及删不掉问题分析
    PMP考试前两个月开始备考时间足够吗?
    嵌入式工程师面试-常问问题集
    ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
    【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色
  • 原文地址:https://blog.csdn.net/qq_43689832/article/details/127948630
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号