• 浅析spack较受关注的场景


    前几天,与技术好友做了一个spack的分享会。收集到了一些比较关注的场景:

    spack建议安装在本地还是NFS?

    按照自己的公司规模与管理规范来。如是小公司,机器数量不多,计算服务器有本地硬盘,可以用spack将包安装到本地,访问速度更快。反之如果是大公司,拥有性能好的NFS,机器数量多,则将其安装到NFS。

    对比于传统的包管理器如yum、apt、pip、conda等,spack它有什么优势?

    前者做出的一些相当常见(但值得怀疑)的假设:

    • 每个平台上,源码与二进制文件是1:1的关系。有利于重现,不利于性能优化。
    • 二进制文件尽可能可移植。大多数发行版是这样做的,同样不利于性能优化。
    • 工具链在整个生态系统是相同的。一个编译器、一组运行时库,解释性语言的话没有编译器。

    高性能计算与上述假设相违背:

    • 代码通常以源码分发。供应商的库、编译器除外。
    • 同一个包,经常会以不同的选项进行构建:开发者间的构建存在很大差异,当机器是新的时候,需要做首次的大量构建。
    • 代码被优化适配于处理器与GPU:这可以高效地利用硬件,最高可以带来10-100x的性能提升。
    • 很依赖于系统包:需要使用随机器的优化过的库,需要使用主机GPU库与网络。
    • 多语言:C, C++, Fortran, Python等,全部都在同一个生态里。

    spack可以管理多平台、多版本共存、多种编译选项的同版本包共存。

    spack可以管理这么多包,但这些包不在spack服务器里面,那它的依赖是如何解决的?

    spack管理的每一个包,都在各自的package.py文件里面,定义好了该包获取的路径校验码,以及依赖包。但此处定义的依赖包关系则不会指定路径。依赖包的路径,又由对应的依赖包的package.py文件里面定义其获取包的路径。由此递归。

    spack可以支持管理哪些包?

  • 相关阅读:
    SpringMVC入门案例和@RequestMapping注解
    面试知识储备--打包工具篇(webpack和vite)
    linux 进程管理命令
    力扣细节题:判断是否为平衡二叉树
    计算机毕业设计(附源码)python中原图书供应商图书管理系统
    MATLAB与Excel的数据交互
    C 语言设计模式(结构型)
    kubernetes-nvidia-plugin设计解读
    K8S Pod控制器详细讲解
    智慧燃气,如何能够防患于未“燃”!
  • 原文地址:https://blog.csdn.net/thesre/article/details/127644933