开发者
spack编译器设置
spack编译器设置
发表于2023/09/28
2.2k11

上次简单介绍了一下spack

spack入门:https://www.hikunpeng.com/forum/thread-0279130669678253026-1-1.html

这次重点介绍一下spack关于编译器方面的配置。 spack是一个脚本软件,会将软件源码从远程下载下来进行编译安装。使用的编译器是我们自己可以决定的。 需要注意的是,spack只支持gcc, intel, pgi, clang, xl, nag, fj, aocc。其他编译器暂不支持。但这些已经足够我们平常使用了。毕昇编译器是属于clang。

添加编译器

spack compiler find
这个命令可以自己查找到环境中存在的编译器。
spack compiler add <编译器安装路径>
这个命令则无需加载环境,直接通过安装路径即可找到。

如果上面的两种方式都无法让spack找到编译器。就要考虑编译器是否是spack支持的。如果是spack支持的编译器。还可以通过以下方式添加: 修改~/.spack/linux/compilers.yaml文件

compilers:
- compiler:
    spec: gcc@=7.3.0
    paths:
      cc: /usr/bin/gcc
      cxx: /usr/bin/g++
      f77: /usr/bin/gfortran
      fc: /usr/bin/gfortran
    flags: {}
    operating_system: kylinV10
    target: aarch64
    modules: []
    environment: {}
    extra_rpaths: []

仿照上述格式,再次添加- compiler:模块内容,修改编译器及版本和命令位置即可。需要注意的是yaml文件的缩进和空格,否则会报错。然后就是示例为麒麟V10系统。不同系统的值并不固定,所以kylinV10需要根据实际进行修改。

查看编译器

1、查看所有spack可用编译器

spack compilers

2、查看编译器详情

spack compiler info <编译器名称>
注意毕昇名称为clang

删除编译器

执行spack compiler find 命令可能会找到我们并不需要的编译器。 可执行以下命令将编译器从spack中移除(并不会卸载)

spack compiler remove <编译器名称>@<版本号>
@<版本号>可不加。但这样指定更具体,避免多版本编译器全部移除的情况。

注意事项

添加编译器之后有可能无法查找到全部命令。需要修改~/.spack/linux/compilers.yaml文件将部分命令路径补全。可通过编译器详情查看命令是否添加完整。

使用编译器

通过上述方式将编译器调整好之后就可以进行使用

执行命令时添加%&lt;编译器名称&gt;就可指定需要使用的编译器 例如:

spack install hdf5%clang
使用毕昇编译器(clang)
spack install hdf5%gcc
使用gcc编译器
spack install hdf5%gcc@7.3.0
指定编译器版本

执行安装命令可以不指定编译器,这样spack会使用默认编译器

spack的默认编译器为~/.spack/linux/compilers.yaml文件最上面的编译器,因此和编译器添加顺序是相关的,即第一个添加的编译器为后面默认编译器,所以如果想要使用的默认编译器不是系统自带的编译器,添加编译器时最好使用spack compiler add &lt;编译器安装路径&gt;命令添加第一个编译器。

如果没有添加编译器直接执行安装命令,spack会先查找当前环境中的编译器。

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞