【LAMMPS学习】七、加速性能(5)加速器包比较

7. 加速性能

7.1.基准测试

7.2.测试性能

7.3.通用技巧

7.4.加速器包

7.5.加速器包比较

接下来将比较和对比各种加速器选项,因为有多种方法可以执行 OpenMP 线程、在 GPU 上运行、优化 CPU 上的向量单元以及在英特尔至强融核(协)处理器上运行。

所有这些包都可以利用硬件功能加速 LAMMPS 计算,但它们以不同的方式实现,并且并不总是保证加速。

因此,对于特定硬件上的特定模拟,一个包可能比另一个包更快。我们在下面给出了一些指导原则,但确定哪个包对于您的输入脚本来说更快的最佳方法是在您的计算机上尝试多个包并尝试可用的性能调整设置。请参阅下面的基准测试部分,了解已完成此操作的示例。

最佳使用每个包的指南:
  • GPU 和 KOKKOS 包都允许您将多个 MPI 级别(= CPU 核心)分配给同一 GPU。对于 GPU 包,这可以通过更好地利用 GPU(通过重叠计算和数据传输)以及通过 MPI 并行化更有效地计算 LAMMPS 的非 GPU 加速部分来实现加速,因为所有系统数据都会得到维护和更新在主机上。对于 KOKKOS 来说,由于其不同的内存管理模型(试图将数据保留在 GPU 上),因此几乎没有任何好处。
  • GPU 包在每个时间步在 CPU 和 GPU 之间移动每个原子数据(坐标、力和(可选)邻居列表数据,如果不是在 GPU 上计算的话)。 KOKKOS/CUDA 包仅在需要 CPU 计算时在时间步上执行此操作(例如,调用非 GPU 化的修复或计算)。因此,如果您可以将输入脚本制定为仅使用 GPU 化的修复和计算,并避免过于频繁地执行 I/O(热输出、转储文件快照、重新启动文件),那么 KOKKOS/CUDA 包的数据传输成本可以非常低,导致它比 GPU 包运行得更快。
  • 当每个 GPU 的原子数量较小时,GPU 包通常比 KOKKOS/CUDA 包更快。就原子/GPU 而言,KOKKOS/CUDA 包变得更快的交叉点很大程度上取决于配对类型。例如,对于简单的 Lennard Jones 系统,交叉(单精度)通常约为每个 GPU 50K-100K 原子。执行双精度计算时,交叉点可能会小得多。
  • KOKKOS 和 GPU 包都计算 CPU 上的键合相互作用(键合、角度等)。如果 GPU 包运行时将多个 MPI 进程分配给一个 GPU,则计算绑定交互的成本会分摊到更多 CPU 上,因此 GPU 包在这些情况下可以运行得更快。
  • 当使用分配给同一 GPU 的多个 MPI 等级的 LAMMPS 时,其性能在某种程度上取决于 CPU 和 GPU 之间的可用带宽。根据可用的总线技术、主机 CPU 和主板的功能、总线的接线以及是否使用交换机来增加可用总线插槽的数量,或者 GPU 是否安装在外部外壳中,这可能会有很大差异。这可能会变得相当复杂。
  • 为了通过 GPU 实现显着加速,KOKKOS 和 GPU 包都需要具有快速设备内存和高效数据传输速率的强大 GPU。这需要有能力的中高级到高端(桌面)GPU。使用性能较低的 GPU(例如在笔记本电脑上)可能会导致速度减慢。
  • 对于 GPU 包,特别是与 MPI 并行运行时,如果从 GPU 加速中排除 PPPM kspace 样式并在 CPU 上运行(与 GPU 加速对样式同时运行)通常会更有效。这通常可以通过在 kspace_style pppm 命令之前放置一个 suffix off 命令并在 kspace_style pppm 命令之后放置一个 suffix on 命令来轻松实现。
  • KOKKOS/OpenMP 和 OPENMP 包具有不同的线程管理策略,这应该会导致 OPENMP 对于少量线程来说更加高效,并且随着每个 MPI 等级的线程数增加,开销也会增加。在这种情况下,KOKKOS/OpenMP 内核的开销较小,但线程较少时性能较低。
  • INTEL 软件包包含许多用于在 Intel 硬件(CPU 和加速卡)上实现额外性能的选项和设置,但要释放这种潜力,需要 Intel 编译器。包代码将使用 GNU gcc 编译,但效率不高。

GPU 和 KOKKOS 包之间的差异:

  • GPU 包仅加速对力、邻居列表和(部分)PPPM 计算。 KOKKOS 包尝试在 GPU 上运行大部分计算,但可以透明地支持非加速代码(由于主机和 GPU 之间存在数据传输而导致性能损失)。
  • 当使用排除列表或三斜模拟框时,GPU 包需要在 CPU 上构建邻居列表。
  • GPU 包可以针对 CUDA 或 OpenCL 进行编译,因此可以很好地支持 NVIDIA 和 AMD GPU。在 NVIDIA 硬件上,使用 CUDA 通常会获得与 OpenCL 相同或更好的性能。
  • GPU 包中的 OpenCL 理论上也支持 Intel CPU 或 Intel Xeon Phi,但对 KOKKOS(或 INTEL)中的原生支持更为出色。

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

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

相关文章

爬虫之数据神器4---Peewee事务管理和连接池用法

前言: 继续上一章节:爬虫之数据神器3---Peewee模型定义详解-CSDN博客 事务管理和连接池的重要性 事务管理和连接池是在开发和维护数据库应用程序时非常重要的概念和技术。 事务管理:事务是指作为一个逻辑单元执行的一系列数据库操作。事务具…

图像处理ASIC设计方法 笔记13 图像旋转ASIC的输入输出电路

文章目录 1 DPRAM:双端口 RAM2 IDT Integrated Device Technology, Inc. 公司介绍3 IDT70T633S10DDI4 TMS320C64145 旋转ASIC的输入输出框图图像旋转ASIC的输入输出电路案例用到的芯片相关介绍如下。 1 DPRAM:双端口 RAM DPRAM 的特点是可以通过两个端口同时访问,具有两套完全…

数据结构入门系列-栈的结构及栈的实现

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 栈 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一段进行插入和删除元素操作,进行数据输入和删除操作的一端称为栈顶,另…

如何在TestNG中获取运行时的测试用例细节?

这篇文章将讨论如何在运行时获取测试用例的细节。我们可能在不同的场景中需要这些信息,比如创建定制的报告或者开发一个实时跟踪系统来监视测试用例的进度。 让我们从使用TestNG运行测试套件开始开始。然后,我们将尝试检索每个测试用例的细节&#xff0…

【授时防火墙】GPS北斗卫星授时信号安全防护装置系统

【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 1、装置概述 卫星信号安全防护装置(以下简称“防护装置”)是一款专门针对卫星导航授时安全的设备。该设备能接收 BD 系统和 GPS 系统卫星信号&am…

InternLM2-Chat-1.8B 模型测试

在interStudio进行InternLM2-Chat-1.8B模型访问,进入开发机后 配置基础环境 新建conda环境并且进入 conda create -n demo python3.10 -y conda activate demo 下载pytorch等相关包 conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.…

ChernoCPP 2

视频链接&#xff1a;【62】【Cherno C】【中字】C的线程_哔哩哔哩_bilibili 参考文章&#xff1a;TheChernoCppTutorial_the cherno-CSDN博客 Cherno的C教学视频笔记&#xff08;已完结&#xff09; - 知乎 (zhihu.com) C 的线程 #include<iostream> #include<th…

四、MySQL读写分离之MyCAT

一、读写分离概述 1、什么是读写分离&#xff1a; 读写分离&#xff1a;就是将读写操作分发到不同的服务器&#xff0c;读操作分发到对应的服务器 &#xff08;slave&#xff09;&#xff0c;写操作分发到对应的服务器&#xff08;master&#xff09; ① M-S (主从) 架构下&…

Java设计模式:外观模式之优雅门面(九)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在软件工程中&#xff0c;设计模式是解决常见设计问题的经验总结&#xff0c;它为开发者提供了一种通用的、可复用的解决方案。外…

书生浦语训练营2期-第二节课笔记作业

目录 一、前置准备 1.1 电脑操作系统&#xff1a;windows 11 1.2 前置服务安装&#xff08;避免访问127.0.0.1被拒绝&#xff09; 1.2.1 iis安装并重启 1.2.2 openssh安装 1.2.3 openssh服务更改为自动模式 1.2.4 书生浦语平台 ssh配置 1.3 补充&#xff08;前置服务ok…

Thread的基本用法

目录 正文&#xff1a; 1.线程创建 2.线程休眠 3.获取线程实例 4.线程中断 5.线程等待join() 总结&#xff1a; 正文&#xff1a; 1.线程创建 线程创建是多线程编程的第一步&#xff0c;它涉及到创建一个可以并行执行的新线程。在Java中&#xff0c;有几种不同的方法可…

【Laravel】08 RESTful风格

【Laravel】08 视图模板动态渲染数据 1. RESTful风格 1. RESTful风格 (base) ➜ example-app php artisan make:model Blog -mc Model created successfully. Created Migration: 2024_04_01_143040_create_blogs_table Controller created successfully.(base) ➜ example-…

深入理解微信小程序的自定义组件模型

微信小程序作为一个独立的应用开发平台,提供了丰富的组件库供开发者使用。但在某些复杂的业务场景下,我们需要根据自身的需求来定制化组件。小程序为我们提供了自定义组件的能力,让我们可以更灵活地构建应用界面。 如果对微信小程序自定义组件还不太清楚的&#xff0c;请参考 …

简述JMeter实现分布式并发及操作

为什么要分布式并发&#xff1f; JMeter性能实践过程中&#xff0c;一旦进行高并发操作时就会出现以下尴尬场景&#xff0c;JMeter客户端卡死、请求错误或是超时等&#xff0c;导致很难得出准确的性能测试结论。 目前知道的有两个方法可以解决JMeter支撑高并发&#xff1a; …

pta 1036 跟奥巴马一起编程

1036 跟奥巴马一起编程 分数 15 全屏浏览 切换布局 作者 CHEN, Yue 单位 浙江大学 美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启…

阿里 对象存储OSS 云存储服务

1.简介 对象存储服务(Object Storage Service ,OSS) 是一种 海量、安全、低成本、高可靠的云存储服务&#xff0c;适合存放任意类型的文件。容量和处理能力弹性扩展&#xff0c;多种存储类型供选择&#xff0c;全面优化存储成本。 2.如何使用。参考文档 看文档&#xff0c;说的…

【python从入门到精通】-- 第四战:语句汇总

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

数据库安装的一些内容

这两天在研究整理上课数据库和web要求安装操作的软件 晚点再写下去 1.SQL server 2012 安装的过程中出现不少问题&#xff0c;根据网上的教程以及老师发的实验指导书首先安装SQL server (1)在安装规则检测之后&#xff0c;没有按照步骤进入下一步——设置角色&#xff1b; …

docker从入门到熟悉

一、什么是docker&#xff1f; Docker是一个用于开发&#xff0c;交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开&#xff0c;从而可以快速交付软件。借助Docker&#xff0c;您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付…

GPT3, llama2, InternLM2技术报告对比

GPT3&#xff08;September 22, 2020&#xff09;是大语言应用的一个milestone级别的作品&#xff0c;Llama2&#xff08;February 2023&#xff09;则是目前开源大模型中最有影响力的作品&#xff0c;InternLM2&#xff08;2023.09.20&#xff09;则是中文比较有影响力的作品。…