前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GPU版GAMESS的快速安装

GPU版GAMESS的快速安装

作者头像
用户7592569
发布于 2021-07-16 09:09:57
发布于 2021-07-16 09:09:57
1.1K00
代码可运行
举报
文章被收录于专栏:量子化学量子化学
运行总次数:0
代码可运行

本文讲介绍如何用容器技术(Docker)快速安装GPU版GAMESS,并演示如何进行实际计算。

1. GPU版本的GAMESS

GPU版GAMESS其实是加装了量子化学计算库LibCChem的GAMESS。据介绍,LibCChem库只承担了量化计算中很耗时的部分,例如积分计算、临时数据存储等。自洽场迭代收敛等一些框架仍然由GAMESS主体控制。 LibCChem不仅有GPU加速的代码,也用Global array(GA)的共享内存机制进行并行代码编写。同时,也采用了HDF5文件存储方式,可以并行I/O以及在内存中写临时文件。总之,LibCChem利用了很多新的编程技术对GAMESS进行加速。LibCChem手册中介绍,他们对HF, MP2以及CCSD(T)计算进行了加速。

这些新的技术,意味着用户需要额外安装一些库。例如,用户需要安装HDF5,Boost(C++的一个大库),eigen(C++线性代数库)。当然GAMESS也需要Fortran编译器、数学库、并行环境等。安装这么多库是很耗费精力的,特别是在没有外部联网的情况下。

容器技术解决了上述难题。

2. 容器技术简介

开发者会尝试将一套工具完整打包并且分发给用户,让用户直接使用。这种打包就是容器技术。打包过程中,程序本身,所依赖的库,甚至是操作系统的部分组件都被打成一个包。用户拿到这个包,直接用就可以。打包可以用Docker、Singularity等工具实现。本文将介绍用Docker安装LibCChem+GAMESS。

GPU的软件环境不太容易容器化。Docker在19版本之后,加入了对Nvidia运行环境的支持,容器中的程序也可以轻松跑GPU了。但用户仍需要提前安装显卡驱动(不安装,显卡也没法用)。

用户只需关注怎么下载这个包(被称为镜像,image)以及这个包怎么用。

3. 镜像的下载与使用

安装前,用户需要满足以下条件:

  • 比较新的docker(20.10版本最佳。不能早于19)
  • Nvidia显卡(AMD显卡没有相关资料),并且知道显卡架构。
  • CUDA driver version >= 384.81 ,建议新一些的版本,我用的是455.32版本。

很多镜像被打包后,都会选择存在DockerHub里。LibCChem+GAMESS也存在这里面,是被一个叫afandiadib的开发者打包并上传的。我用的显卡是Kepler架构的GTX 780显卡,需要Kepler架构的版本,下载指令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker pull afandiadib/gamess:cuda-9.0-Kepler

如果您用的是Pascal以及Volta架构,建议从Nvidia官方镜像库中下载,Nvidia也许会专门针对不同架构进行进一步优化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker pull nvcr.io/hpc/gamess:17.09-r2-libcchem

如果您用的是其他架构的显卡如Ampere,Turing,可以尝试早一些架构的版本,也许能兼容。

afandiadib/gamess镜像压缩前有2.81GB,解压后足足有7.79GB。

以afandiadib/gamess为例进行讲解,如何用镜像进行计算。我们可以进入容器(container),在容器中运行GAMESS。运行如下指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --gpus all  -it afandiadib/gamess:cuda-9.0-kepler bash

--gpus all 代表启动所有显卡,-it 代表交互式启动容器,执行容器的bash 命令,即进入容器bash。进入容器后,看到左下角,是root身份。值得注意的是,此时,容器内部与外部的文件并不互通,是完全隔离的。发布者将软件安装到了/opt下,可以在里面找到GAMESS。同时发布者将原先的rungms改为了gms-cchemgms-cpu两个指令。gms-cchem 启动GPU版本的GAMESS+LibCChem,gms-cpu 启动传统GAMESS。我们准备好输入文件TEST.inp。如果我们要用4个核心,只需执行,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gms-cchem TEST 01 4

01是版本号,只有01版本。4代表核心数。LibCChem采用MPI/OpenMP混合并行方式,建议指定NUM_OMP_THREADS,export NUM_OMP_THREADS=$N。运行后,可以执行nvidia-smi监控显卡运行状态。

除了进入容器内运行GAMESS外。我们也可以用容器内的GAMESS执行外部的输入文件。例如输入文件存在当前工作目录下,它叫TEST.inp,我们执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --gpus all -v $(pwd):/root --rm -it afandiadib/gamess:cuda-9.0-kepler bash -c 'cd /root && gms-cchem TEST 01 4' > out

-v $(pwd):/root 表示将当前目录投射到镜像内部的/root路径中。bash -c 'cd /root && gms-cchem TEST 01 4' 表示在镜像中执行一串指令,即先进入/root ,再运行gms-cchem 。结果重定向到out文件中。

请不要被上述一连串指令与标签吓到,简单学习Docker后便可以轻松上手。

4.性能对比

GPU的加速效果比较明显的。我对比了纯GAMESS,GPU加持的LibCChem(LibCChem+GPU),以及无GPU的GAMESS+LibCChem(LibCChem+CPU)的计算总时间(wall time)。处理器是Xeon 2696V2,显卡是GTX780。HF计算的测试中,所有计算都使用八个进程,每个进程开启一个线程。MP2与CCSD(T)计算的测试中,原生GAMESS采取八个进程并行,libCChem计算采用一个进程,每个进程带8个线程。

测试结果上看,libCChem对三种类型计算都有一定的加速,对HF计算的加速最明显。显卡会减少计算时间,HF计算,减少的时间更明显。

5.讨论

5.1 LibCChem的问题

很多人用GAMESS通常是为了进行能量分解或者EFP、FMO、CIM计算等。如果上述功能依赖老版本GAMESS的ddikick并行机制,那么可能没法使用LibCChem进行加速。我测试能量分解遇到这样问题。对于HF、MP2以及CCSD(T),用一块普通显卡节省一定的计算时间还是划算的。LibCChem并没有对XC积分进行加速,这也是一点遗憾。

MP2能量计算部分,不是MPI多进程并行,需要使用者注意,尽量用多指定线程而少开启进程。

在测试中发现,LibCChem并没用完全用尽显卡的性能,显存只用了500MB左右。

5.2 Docker 容器中运行效率问题

我没有自己编译GAMESS+libCChem,因此没有对比Docker容器中运行程序的效率问题。从原理上讲,Docker不会比自己编译版本慢很多。另外如果打包镜像的人仔细搭配了编译器或软件库,那么容器中效率也许会比自己编译的效率高。IBM的一个研究文档讨论过Docker效率问题。例如下图的Linpack测试和随机内存读写测试,Docker效率跟Native运行没有区别,虚拟机KVM则慢了不少。

IBM研究文档地址:https://dominoweb.draco.res.ibm.com/reports/rc25482.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子化学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在 Kubernetes 上调度 GPU 资源
Kubernetes 实现了 Device Plugins[1] 以允许 Pod 访问类似 GPU 这类特殊的硬件功能特性。作为运维管理人员,你要在节点上安装来自对应硬件厂商的 GPU 驱动程序,并运行来自 GPU 厂商的对应的设备插件。
我是阳明
2021/10/20
2.6K1
Docker容器如何优雅使用NVIDIA GPU
Docker 容器不会自动看到您系统的 GPU。这会导致依赖 GPU 的工作负载(例如机器学习框架)的性能降低。以下是将主机的 NVIDIA GPU 公开给容器的方法。
我的小碗汤
2021/12/24
56.1K0
Docker容器如何优雅使用NVIDIA GPU
K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定
最近一年我都在依赖大模型辅助工作,比如 DeepSeek、豆包、Qwen等等。线上大模型确实方便,敲几个字就能生成文案、写代码、做表格,极大提高了效率。但对于企业来说:公司内部数据敏感、使用外部大模型会有数据泄露的风险。
Rainbond开源
2025/04/17
2730
使用人脸识别的打卡程序
6月初北京的疫情响应已经降到了三级,没想到中旬时疫情又卷土重来,每天都有10~30个确诊病例的新增,按专家的说法秋冬季还会更严重。公司之前一直使用基于指纹的上下班签到机制,疫情期间为了减少人员接触开始改用人脸打卡。当时以为只是应急用一下,疫情有一两个月就结束了,使用的第三方的人脸打卡程序。但目前已经过去5个月了,疫情还没有结束的迹象。继续使用第三方的打卡程序:一是数据不安全人脸&位置数据全被第三方收集走了,另一方面第三方没有提供接口无法和公司现有的考勤程序进行数据对接。公司希望实现自己的基于人脸打卡程序,这个重任当然就落到了我们开发部上,虽然没经验但咱们做为一个涉身职场多年的老将不能说不行啊。
海哥@开发
2022/04/06
2K0
使用人脸识别的打卡程序
H800_3.2T RDMA测试指导文档
从"共享镜像"标签中选择“img-ixkhtmde H800_CVM_GPU镜像”。
Yellowsun
2024/10/22
4980
TensorFlow 安装GPU版本
TensorFlow 有两个版本:CPU 版本和 GPU 版本。GPU 版本需要 CUDA 和 cuDNN 的支持,CPU 版本不需要。如果你要安装 GPU 版本,请先确认你的显卡支持 CUDA。我安装的是 GPU 版本,采用 pip 安装方式,所以就以 GPU 安装为例,CPU 版本只不过不需要安装 CUDA 和 cuDNN。
Centy Zhao
2019/12/26
1.6K0
基于 Docker 的深度学习环境:入门篇
这段时间,不论是 NLP 模型,还是 CV 模型,都得到了极大的发展。有不少模型甚至可以愉快的在本地运行,并且有着不错的效果。所以,经常有小伙伴对于硬件选择,基础环境准备有这样、那样的问题。
soulteary
2023/03/22
1.7K0
一日多技,技能-Linux-Python 006
创建镜像后如果快速运行镜像,docker run 有很多参数,只有少部分会修改,如果每天创建很多容器,每次都完整输入一次命令就很麻烦,容易出错,这时我们可以写一个 shell 脚本,把会修改的值变成参数,然后运行脚本的时候传递会变的参数即可。
老表
2022/10/31
8300
一日多技,技能-Linux-Python 006
Pycharm代码docker容器运行调试 | 机器学习系列
常规的本地化运行机器学习代码,安装Anaconda+cuda显卡驱动支持,许多文章都有介绍,不在此多做赘述了。本文主要是为了解决在工作环境中,本机电脑没有显卡,需要将程序运行在带显卡的远程服务器上。
全栈程序员站长
2022/09/27
1.9K0
Pycharm代码docker容器运行调试 | 机器学习系列
使用Docker安装TensorFlow ,并设置GPU/CPU支持
一、Ubunutu20.4系统设置root登录及密钥登录 1、进入服务器主界面,将系统更换为Ubuntu20.4 https://console.cloud.tencent.com/cvm/insta
用户5481900
2022/05/26
1.9K0
接入 NVIDIA A100、吞吐量提高 10 倍!Milvus GPU 版本使用指南
作为为数不多的支持 GPU 的向量数据库产品,Milvus 2.3 在吞吐量和低延迟方面都带来了显著的变化,尤其是与此前的 CPU 版本相比,不仅吞吐量提高了 10 倍,还能将延迟控制在极低的水准。
Zilliz RDS
2023/09/09
2K0
接入 NVIDIA A100、吞吐量提高 10 倍!Milvus GPU 版本使用指南
显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn区别?
在使用深度学习框架的过程中一定会经常碰到这些东西,虽然anaconda有时会帮助我们自动地解决这些设置,但是有些特殊的库却还是需要我们手动配置环境,但是我对标题上的这些名词其实并不十分清楚,所以老是被网上的教程绕得云里雾里,所以觉得有必要写下一篇文章当做笔记供之后参考。
marsggbo
2019/11/11
14.8K0
使用 Docker 快速上手官方版 LLaMA2 开源大模型
本篇文章,我们聊聊如何使用 Docker 容器快速上手 Meta AI 出品的 LLaMA2 开源大模型。
soulteary
2023/09/04
6730
使用 Docker 快速上手官方版 LLaMA2 开源大模型
CentOS本地部署语言模型
2.屏蔽linux系统自带的开源英伟达显卡驱动nouveau。编辑/lib/modprobe.d/dist-blacklist.conf文件。
小新笔记坊
2025/02/13
1260
容器内如何使用GPU卡
         目前容器化部署服务已经成为微服务管理的趋势,大家知道docker目前cgroup支持cpu,内存的隔离,在gpu隔离上目前还做不到,业界gpu卡基本都是英伟达的,目前英伟达提供了插件来支持容器内获取gpu卡信息,并且能做到隔离。
jouislu
2019/08/27
4.1K0
NVIDIA Docker CUDA容器化原理分析
在AI应用容器化时,会碰到cuda failure 35错误,查了下是跟CUDA驱动版本有关。但有时同一个镜像在不同环境运行仍会有问题,查了下宿主机的显卡驱动版本,也没发现什么问题。为了彻底解决这类问题,了解了CUDA API的体系结构,并对NVIDIA Docker实现CUDA容器化原理进行了分析。
langwu 吴英文
2019/09/01
9K0
使用 Docker 快速上手官方版 LLaMA2 开源大模型
本篇文章,我们聊聊如何使用 Docker 容器快速上手 Meta AI 出品的 LLaMA2 开源大模型。
soulteary
2023/07/21
1.6K0
从零到一使用 Ollama、Dify 和 Docker 构建 Llama 3.1 模型服务
本篇文章聊聊,如何使用 Ollama、Dify 和 Docker 来完成本地 Llama 3.1 模型服务的搭建。
soulteary
2024/07/28
2.2K0
从零到一使用 Ollama、Dify 和 Docker 构建 Llama 3.1 模型服务
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
Milvus 2.3.0 不仅包含大量的社区呼声很高的新功能,还带来了诸如 GPU 支持、Query 架构升级、更强的负载均衡、调度能力、新的消息队列Arm 版本镜像、可观测性、运维工具升级等能力,这标志着 Milvus 2.x 系列从 production ready,走向成熟、可靠、生态繁荣、运维更友好的发展路径。
汀丶人工智能
2023/11/21
8190
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
通过Docker部署深度学习项目环境
深度学习环境部署的方法有很多种,其中Docker化深度学习环境和项目是一个很不错的选择。这里写过一些深度学习主机安装和部署的文章,这篇文章记录一下相关的通过Docker来部署和测试深度学习项目的一些经验(Ubuntu16.04)。
AINLP
2019/08/21
2.4K0
通过Docker部署深度学习项目环境
相关推荐
在 Kubernetes 上调度 GPU 资源
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验