Kokkos

在这里插入图片描述


一、关于 Kokkos



Kokkos 是美国能源部百亿亿次级项目的一部分,该项目是美国为 HPC 社区迎接下一代超级计算平台而开展的一项领先工作。

Kokkos Core 用 C++ 实现了一个编程模型,用于编写 面向所有主要 HPC 平台 的 高性能可移植应用程序。以与硬件无关的方式 编写现代 C++ 应用程序。
为此,它为代码的并行执行和数据管理提供了抽象。
Kokkos 旨在针对具有 N 级内存层次结构和多种执行资源的复杂节点架构。
它目前可以使用 CUDA、HIP、SYCL、HPX、OpenMP 和 C++ 线程作为后端编程模型,并进行其他几个后端开发。

该生态系统由多个库组成,解决了以可移植方式开发和维护应用程序的主要问题。

三个主要组件是 Kokkos 核心编程模型、Kokkos 内核数学库和 Kokkos 分析和调试工具。

img


Kokkos生态系统

包括:

姓名信息
kokkos(此库)编程模型 - 并行执行和内存抽象GitHub 链接
kokkos-kernels稀疏、密集、分批数学内核GitHub 链接
kokkos-tools分析和调试工具GitHub 链接
pykokkos为 Kokkos 性能可移植并行编程提供 Python 绑定。GitHub 链接
kokkos-remote-spaces跨多个进程的共享内存语义GitHub 链接
kokkos-resilienceKokkos 的弹性和检查点扩展GitHub 链接

C++ 标准库的相关工作

相关及相关的努力包括:

姓名信息提议
mdspan针对 C++23 的 mdspan 参考实现P0009GitHub 链接
stdBLASstdBLAS 的参考实现P1673GitHub 链接

Kokkos Core

https://kokkos.org/about/core/

Kokkos Core 是一种并行算法编程模型,它使用 多核芯片 并在这些核心之间 共享内存。
该编程模型包括常用并行计算模式的计算抽象、提供这些计算模式应用细节的策略 以及表示在哪些核心上执行并行计算的执行空间。
该编程模型还包括常见数据结构的模式、提供这些数据结构在内存中布局细节的策略以及表示数据驻留在哪个内存中的内存空间。
Kokkos Core 编程模型的工作原理是要求应用程序开发团队根据 Kokkos 的模式、策略和空间来实现他们的算法。
然后,Kokkos Core 可以根据实现最佳性能所必需的体系结构特定规则将这些算法映射到目标体系结构上。虽然其他编程模型支持执行模式、执行策略、执行空间和内存空间;但只有 Kokkos 支持数据模式和策略,而这些对于性能可移植性是必不可少的。

Kokkos Core 用 C++ 实现了一个编程模型,用于编写面向所有主要 HPC 平台的高性能可移植应用程序。
为此,它为代码的并行执行和数据管理提供了抽象。
Kokkos 旨在针对具有 N 级内存层次结构和多种执行资源的复杂节点架构。
它目前可以使用 CUDA、HIP、SYCL、HPX、OpenMP 和 C++ 线程作为后端编程模型,其他几个后端正在开发中。

Kokkos Core 是Kokkos C++ 性能可移植性编程生态系统的一部分。

Kokkos 是Linux 基金会的一个项目。

img


Kokkos Kernels

https://kokkos.org/about/kernels/
https://github.com/kokkos/kokkos-kernels

Kokkos Kernels是一个线性代数和图形算法的软件库,可用于许多 HPC 应用程序,以在每种架构上实现最佳(而不仅仅是良好)性能。
该库的基准版本是使用 Kokkos Core 编程模型编写的,以实现可移植性和良好的性能。
该库具有针对架构的优化,或在需要时 使用这些数学算法的供应商特定版本。
这减少了应用程序团队可能需要开发的针对架构的软件数量,从而进一步降低了他们实现“一流”性能的(修改成本)。


Kokkos Tools

https://kokkos.org/about/tools/

Kokkos Tools是一种创新的“插入式”软件接口,以及一组不断增长的性能测量和调试工具,这些工具可插入该接口,供应用程序开发团队分析其软件的执行和内存性能。
团队使用此性能分析和调试信息来确定他们设计和实施算法的程度,并确定其软件中应改进或行为错误的部分。
Kokkos Tools 接口利用 Kokkos Core 编程模型接口,通过使用用户提供的标签来识别数据结构和计算,从而显著改善应用程序开发人员的体验。


二、PyKokkos

https://github.com/kokkos/pykokkos
https://kokkos.github.io/pykokkos/index.html

PyKokkos 是一个用于编写与 Numba 类似的高性能 Python 代码的框架。
与 Numba 相比,PyKokkos 内核主要采用并行方式,并且性能可移植,这意味着它们可以在不同的硬件(CPU、NVIDIA GPU 和 AMD GPU)上高效运行,无需进行任何更改。

安装:https://kokkos.github.io/pykokkos/installation.html



三、快速开始


1、下载最新版本

请熟悉Kokkos 要求,并验证您的机器具有所有必要的编译器、后端 GPU SDK(例如 CUDA、ROCM、Intel oneAPI 等)和构建系统组件。

最新发布:https://github.com/kokkos/kokkos/releases/latest

curl -OJ -L https://github.com/kokkos/kokkos/archive/refs/tags/4.3.00.tar.gz
# Or with wget
wget https://github.com/kokkos/kokkos/archive/refs/tags/4.3.00.tar.gz

要从 GitHub 克隆 Kokkos 的最新开发版本:

git clone -b develop  https://github.com/kokkos/kokkos.git

解压,进入文件夹

# Uncomment according to the type of file you've downloaded (zip or tar)
unzip kokkos-x.y.z.zip

# tar -xzf kokkos-x.y.z.tar.gz
cd kokkos-x.y.z

2、建造 Kokkos

要构建 Kokkos,您需要一个支持 C++17 或更高版本的 C++ 编译器。
所有要求(包括最低和主要测试的编译器版本)可在此处 找到。

构建和安装说明 : https://kokkos.org/kokkos-core-wiki/building.html

您还可以使用Spack安装 Kokkos spack install kokkos:。可以使用 显示可用的配置选项spack info kokkos

完整文档请访问:https://kokkos.org/kokkos-core-wiki/


3、基本配置、构建、安装配方


OpenMP(CPU 并行)
cmake -B <build-directory> -DKokkos_ENABLE_OPENMP=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<install-directory> -S <source-directory>
cmake --build <build-directory>
cmake --install <build-directory>

Kokkos 将尝试自动检测 GPU 微架构,但也可以指定所需的GPU 架构

在启用设备(GPU)后端(例如 CUDA、HIP)的情况下,Kokkos 将默认在主机(CPU)上进行串行执行。


CUDA
cmake -B <build-directory> -DKokkos_ENABLE_CUDA=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<install-directory> -S <source-directory>
cmake --build <build-directory>
cmake --install <build-directory>

HIP
cmake -B <build-directory> -DKokkos_ENABLE_HIP=ON -DCMAKE_CXX_COMPILER=hipcc -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<install-directory> -S <source-directory>
cmake --build <build-directory>
cmake --install <build-directory>

4、构建并链接 Kokkos 的“Hello World”

需要设置 Kokkos_ROOT 和目标后端SDK的根目录(即CUDA_ROOT、ROCM_PATH)。Kokkos_ROOT应设置为Kokkos安装的路径。

在模块环境中,SDK变量通常会在模块加载时自动设置(例如,模块加载 rocm/5.7.1 )。

有关其他详细信息,请参阅生成、安装和使用。下面详细介绍的示例位于Kokkos Core示例目录中。

git clone https://github.com/kokkos/kokkos.git

cd example/build_cmake_installed

cmake -B <build-directory> -S . -DKokkos_ROOT=<install-directory>
cd <build-directory>
cmake --build .
./example

2024-05-28(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI工程仔

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值