语言 API

类型

tensor

表示一个 N 维的值或指针数组。

shared_memory_descriptor

表示 Gluon IR 中共享内存分配的句柄。

distributed_type

编程模型

program_id

返回当前程序实例在给定 axis(轴)上的 ID。

num_programs

返回在给定 axis(轴)上启动的程序实例数量。

num_warps

返回执行当前上下文的 warp 数量(包括在 warp 专用区域中的数量)。

num_ctas

返回当前内核中的 CTA 数量。

warp_specialize

创建 warp 专用执行区域,在 warp 之间分配工作。

barrier

插入栅栏以同步 CTA 内或跨集群的线程。

创建操作

allocate_shared_memory

为具有给定元素类型、形状和布局的张量分配共享内存。

arange

使用指定的布局生成一个范围在 [start, end) 的序列张量。

cast

将张量转换为给定的 dtype

full

创建一个填充了标量值的张量,并具有指定的形状、数据类型和布局。

full_like

创建一个与给定张量属性相同、并填充了指定值的张量。

zeros

创建一个填充零的张量。

zeros_like

创建一个与给定张量属性相同、并填充零的张量。

to_tensor

布局操作

bank_conflicts

使用 ld.shared/st.shared 指令从共享内存描述符读取或写入分布式张量时,计算每个指令的 wavefront 产生的 bank 冲突数。

convert_layout

将张量转换为不同的分布式布局。

set_auto_layout

将具有 AutoLayout 的张量设置为具体布局。

to_linear_layout

形状操作

broadcast

尝试将两个给定的块广播为兼容的公共形状。

expand_dims

通过插入新的长度为 1 的维度来扩展张量的形状。

join

在一个新的次要维度上连接给定的张量。

map_elementwise

在张量上映射标量函数。

permute

置换张量的维度。

ravel

返回 x 的连续扁平视图。

reshape

返回一个与输入元素数量相同但形状不同的张量。

split

沿最后一个维度将张量一分为二,该维度的大小必须为 2。

内存操作

load

返回一个张量,其值是从 pointer 定义的内存位置加载的。

store

将一个张量存入 pointer 定义的内存位置。

原子操作

atomic_add

pointer 指定的内存位置执行原子加法。

atomic_and

pointer 指定的内存位置执行原子逻辑与(atomic logical and)操作。

atomic_cas

pointer 指定的内存位置执行原子比较并交换(compare-and-swap)。

atomic_max

pointer 指定的内存位置执行原子取最大值。

atomic_min

pointer 指定的内存位置执行原子取最小值。

atomic_or

pointer 指定的内存位置执行原子逻辑或(logical or)。

atomic_xchg

pointer 指定的内存位置执行原子交换操作。

atomic_xor

pointer 指定的内存位置执行原子逻辑异或(logical xor)。

线性代数操作

dot_fma

索引操作

gather

沿给定维度从张量中收集(gather)数据。

where

根据 condition 返回从 xy 中选取的元素组成的张量。

数学操作

abs

计算 x 的逐元素绝对值。

add

cdiv

计算 x 除以 div 的向上取整除法。

ceil

计算 x 的逐元素向上取整值。

clamp

将输入张量 x 限制在范围 [min, max] 内。

cos

计算 x 的逐元素余弦值。

div_rn

计算 xy 的逐元素精确除法(根据 IEEE 标准舍入到最近值)。

erf

计算 x 的逐元素误差函数。

exp

计算 x 的逐元素指数。

exp2

计算 x 的逐元素指数(以 2 为底)。

fdiv

计算 xy 的逐元素快速除法。

floor

计算 x 的逐元素向下取整值。

fma

计算 xyz 的逐元素融合乘加(fused multiply-add)。

fp4_to_fp

将张量从 fp4 (e2m1) 提升转换为另一种浮点类型。

log

计算 x 的逐元素自然对数。

log2

计算 x 的逐元素以 2 为底的对数。

maximum

计算 xy 的逐元素最大值。

minimum

计算 xy 的逐元素最小值。

mul

rsqrt

计算 x 的逐元素平方根倒数。

sin

计算 x 的逐元素正弦值。

sqrt

计算 x 的逐元素快速平方根。

sqrt_rn

计算 x 的逐元素精确平方根(根据 IEEE 标准舍入到最近值)。

sub

umulhi

计算 xy 的 2N 位乘积中最重要的 N 位。

归约操作

reduce

沿提供的 axis(轴)将 combine_fn 应用于 input 张量中的所有元素。

reduce_or

返回 input 张量中所有元素沿给定 axis 的 reduce_or 结果

sum

返回 input 张量中沿给定 axis 的所有元素的和。

最大值 (max)

返回 input 张量中沿给定 axis 的所有元素的最大值。

最小值 (min)

返回 input 张量中沿给定 axis 的所有元素的最小值。

xor_sum

返回 input 张量中沿给定 axis 的所有元素的异或和。

扫描操作

associative_scan

沿提供的 axis(轴)将 combine_fn 应用于每个带有进位(carry)的 input 张量元素,并更新进位。

histogram

计算一维整数张量的直方图。

布局类

AutoLayout

BlockedLayout

表示一种块状布局,将张量分布在线程、warp 和 CTA 之间。

CoalescedLayout

DotOperandLayout

表示点积运算操作数的布局。

DistributedLinearLayout

表示一种线性分布式布局,在寄存器、lane、warp 和 block 级别具有显式基准。

NVMMADistributedLayout

表示用于 NVIDIA MMA(张量核心)操作的布局。

NVMMASharedLayout

表示适用于 NVIDIA MMA 操作的共享内存布局。

PaddedSharedLayout

表示访问共享内存的布局。

SharedLinearLayout

表示通过显式 LinearLayout 定义的共享内存布局。

SliceLayout

表示对应于沿一个维度切片分布式张量的布局。

SwizzledSharedLayout

表示一种通用的重排(swizzled)共享内存布局。

迭代器

static_range

永远向上计数的迭代器。

内联汇编

inline_asm_elementwise

对张量执行内联汇编。

编译器提示与调试

assume

允许编译器假定 cond 为 True。

max_constancy

让编译器知道 input 中前 value 个值是恒定的。

max_contiguous

让编译器知道 input 中前 value 个值是连续的。

multiple_of

让编译器知道 input 中的值都是 value 的倍数。

static_assert

在编译时断言条件。

static_print

在编译时打印值。

device_assert

在运行时从设备端断言条件。

device_print

在运行时从设备端打印值。