如何在ARM平台编译NAMD

本文介绍如何在ARM64架构上编译和安装NAMD分子动力学软件,包括准备必要组件如Charm++、FFTW库及TCL库,详细步骤和注意事项。

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

简介

NAMD是一种平行分子动力学代码,设计用于大型生物分子系统的高性能模拟。 利用Charm ++并行编程框架,NAMD可以扩展到几个核心,用于典型的仿真,超过500,000个核心,用于最大的仿真。

使用此系统编写的程序在具有或不具有共享内存的MIMD计算机上运行不变。 它提供了高级机制和策略,以促进开发甚至高度复杂的并行应用程序的任务。

有关Charm ++或NAMD的更多信息,请分别访问 Charm++NAMD 网站。

版本信息

这些说明着重于为多节点,多核平台构建NAMD。出于此构建的目的,使用以下组件:

组件版本
NAMDVersion 2.12
Charm++Version 6.7.1
GNU CompilerVersion 4.9.3
MPICHVersion 3.2.1

编译器配置

# GNU COMPILER
export PATH=/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/bin:$LD_LIBRARY_PATH

# MPI
export PATH=/usr/local/mpi3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mpi3/lib:$LD_LIBRARY_PATH

# environment
export CC=gcc
export CXX=g++
export FC=gfortran

下载源码包

BUILD_DIR=~/NAMD
cd $BUILD_DIR
wget http://www.ks.uiuc.edu/Research/namd/2.12/download/832164/NAMD_2.12_Source.tar.gz 
tar -xf NAMD_2.12_Source.tar.gz
cd NAMD_2.12_Source

构建和安装Charm

CHARMARCH=mpi-linux-aarch64
tar xvf charm-6.7.1.tar
cd charm-6.7.1
cd src/arch
mkdir $CHARMARCH
cp mpi-linux/conv-mach.* $CHARMARCH 
cd $CHARMARCH

sed -i "s/i386-gcc/generic64-light/" conv-mach.sh
sed -i "/#endif/i #define CMK_64BIT         1" conv-mach.h

cd ../../..

# build
./build charm++ $CHARMARCH --with-production -j8
cd ..

说明:因为针对ARM64,没有现成的ARCH配置,故自己拷贝一个类似的,然后修改。编译过程大约几分钟。

构建和安装NAMD

配置FFTW库(使用官方的版本)

下载FFTW库

wget http://www.ks.uiuc.edu/Research/namd/libraries/fftw-linux-arm64.tar.gz 
tar xvf fftw-linux-arm64.tar.gz 

也可以手动下载源码,并拷贝到NAMD解压后的目录。

sed -i "s%\$(HOME)%`pwd`%" arch/Linux-ARM64.tcl

如果系统中已安装了fftw库,也可以直接使用,例如自己手动修改配置文件 arch/Linux-ARM64.tcl ,改为以下内容:

FFTDIR=/usr/local/fftw
FFTINCL=-I$(FFTDIR)/include
FFTLIB=-L$(FFTDIR)/lib -lfftw3f 
FFTFLAGS=-DNAMD_FFTW -DNAMD_FFTW_3
FFT=$(FFTINCL) $(FFTFLAGS)

说明:FFTWDIR=/usr/local/fftw,指的是fftw库安装的根目录,请修改为自己的目录。

配置TCL库的变量

下载TCL库

wget http://www.ks.uiuc.edu/Research/namd/libraries/tcl8.5.9-linux-arm64-threaded.tar.gz
tar xvf tcl8.5.9-linux-arm64-threaded.tar.gz 

也可以手动下载源码,并拷贝到NAMD解压后的目录。

修改配置文件:

sed -i "s%\$(HOME)%`pwd`%" arch/Linux-ARM64.tcl

配置NAMD ARCH的变量

sed -i "s/multicore-arm7/mpi-linux-aarch64/" arch/Linux-ARM64-g++.arch

编译NAMD

./config  Linux-ARM64-g++ --charm-arch mpi-linux-aarch64 \
 --with-fftw --with-tcl
cd Linux-ARM64-g++
time make -j8 2>&1 | tee m.log
cd ..

编译过程大约几分钟。

配置运行环境

安装后的NAMD可以将其拷贝到目标目录,并设置PATH路径

INSTALL_DIR=$HOME/software/namd/2.12
mkdir -p $INSTALL_DIR
cp Linux-ARM64-g++/charmrun $INSTALL_DIR
cp Linux-ARM64-g++/namd2 $INSTALL_DIR
export PATH=$INSTALL_DIR:$PATH

测试

The Apoa1 example is a standard NAMD cross-platform benchmark. For more information on the Apoa1 example, see the NAMD website.

wget http://www.ks.uiuc.edu/Research/namd/utilities/apoa1.tar.gz
tar -xf apoa1.tar.gz
mpirun -np 16 namd2  apoa1/apoa1.namd 

更多

  1. 官网关于单节点多核版本的安装说明
  2. 有关NAMD的更多信息,请访问 NAMD 官网。
  3. 关于ARM平台应用程序移植和优化,请访问 Mr.ZhengGang
提示错误[root@localhost speccpu2017]# runcpu --config=arm64.cfg --copies=1 --threads=1 - -reportable -n 3 fprate & [1] 19484 [root@localhost speccpu2017]# SPEC CPU(r) 2017 Benchmark Suites Copyright 1995-2019 Standard Performance Evaluation Corporation (SPEC) runcpu v6612 Using 'linux-aarch64' tools Reading file manifests... read 32349 entries from 2 files in 0.13s (240098 files /s) Loading runcpu modules................. Locating benchmarks...found 47 benchmarks in 73 benchsets. Reading config file '/opt/speccpu2017/config/arm64.cfg' 1 configuration selected: Action Run Mode Workload Report Type Benchmarks -------- -------- -------- --------------- ---------------------------- validate rate refrate SPECrate2017_fp fprate Downloading update information for version check... NOTICE: Could not retrieve update metadata;got Could not connect to 'www.spec.org:80': Name or service not known ...Version check failed. A connection to the internet is useful, but is NOT required in order to run CPU2017. If one is available, several components will be checked to see if they are current. If you need to use an HTTP proxy to access the Internet, please see the 'http_proxy' entry in config.html. ---------------------------------- The run will continue in 5 seconds ---------------------------------- Reportable runs must include a 'test' run; adding to run list Reportable runs must include a 'train' run; adding to run list ------------------------------------------------------------------------------- Setting up environment for running fprate... Starting runcpu for fprate... Running "specperl /opt/speccpu2017/bin/sysinfo" to gather system information. sysinfo: r6732 of 2022-11-07 (fe91c89b7ed5c36ae2c92cc097bec197) sysinfo: ...getting basic information about kernel, users, and limits sysinfo: Getting system information for Linux... sysinfo: ...getting CPU info sysinfo: ...getting info from numactl sysinfo: ...getting memory info sysinfo: ...getting info from systemd sysinfo: ...getting power info sysinfo: ...getting system tuning info sysinfo: ...getting OS info sysinfo: ...getting disk info sysinfo: ...getting info from /sys/devices/virtual/dmi/id sysinfo: ...getting info from dmidecode Retrieving flags file (/opt/speccpu2017/config/flags/gcc.xml)... Reportable runs must include a 'test' run; adding to run list Reportable runs must include a 'train' run; adding to run list Benchmarks selected: 503.bwaves_r, 507.cactuBSSN_r, 508.namd_r, 510.parest_r, 51 1.povray_r, 519.lbm_r, 521.wrf_r, 526.blender_r, 527.cam4_r, 538.imagick_r, 544. nab_r, 549.fotonik3d_r, 554.roms_r, 997.specrand_fr Notice: Errors may not be ignored for reportable runs. Compiling Binaries Building 503.bwaves_r base mytest-64: (build_base_mytest-64.0000) [2025-07-24 08:48:41] Building 507.cactuBSSN_r base mytest-64: (build_base_mytest-64.0000) [2025-07- 24 08:48:43]
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值