nuget server logo nuget api documents
↑

API Docs / Microsoft.VisualBasic.Runtime / SimdCapabilities

SimdCapabilities

Full name Microsoft.VisualBasic.Math.SIMD.SimdCapabilities Assembly Microsoft.VisualBasic.Runtime Members 32

当前处理器/运行时的 SIMD 能力探测结果。所有的探测值都在类型初始化阶段 计算一次并被缓存下来,之后的查询都是常量时间的字段读取。

00 Remarks

这个类型只做能力读取,不做任何分派决策;决定实际计算路径的策略集中在 SIMDEnvironment.IsEnabled 与各个内核实现之中。

01 Syntax

Microsoft.VisualBasic.Math.SIMD.SimdCapabilities

02 Methods

NameOverloadsSummary
VectorSize 1 针对类型 T 的一个向量寄存器可以容纳的元素个数。
IsVectorizable 1 针对类型 T 是否值得走向量化路径(宽度大于 1 且硬件已加速)。
VectorSize 1
IsVectorizable 1

03 Fields

NameOverloadsSummary
IsHardwareAccelerated 2 Vector.IsHardwareAccelerated,既 Vector 的运算是否由硬件加速。在 JIT 无法使用硬件向量时会返回 False(此时 Vector 会退化为软件实现,通常比纯标量更慢)。
Architecture 2 当前进程的处理器架构,例如 X64 / Arm64。
IsSse2 2 SSE2 支持(x86/x64 上的向量化基线)。
IsSse42 2 SSE4.2 支持。
IsAvx 2 AVX 支持(256 位浮点向量)。
IsAvx2 2 AVX2 才具有整数类型的 256 位理论吞吐;对 Double 而言 与 SimdCapabilities.IsAvx 等价。
IsFma 2 FMA(Fused Multiply-Add)融合乘加指令支持。开启之后 a * b + c 可以在一条指令内完成,是点积/平方和类运算的主要加速点。
IsAdvSimd 2 ARM Advanced SIMD(NEON)支持。
countDouble 2 Vector(Of Double).Count,即一个向量寄存器可以容纳的 Double 个数。
countFloat 2 Vector(Of Single).Count
countInteger 2 Vector(Of Integer).Count
countLong 2 Vector(Of Long).Count
countShort 2 Vector(Of Short).Count
Description 2 人类可读的能力描述,主要用于基准测试与诊断日志输出。

04 Members

method VectorSize #
VectorSize``1

针对类型 T 的一个向量寄存器可以容纳的元素个数。

method IsVectorizable #
IsVectorizable``1

针对类型 T 是否值得走向量化路径(宽度大于 1 且硬件已加速)。

field IsHardwareAccelerated #
IsHardwareAccelerated

Vector.IsHardwareAccelerated,既 Vector 的运算是否由硬件加速。在 JIT 无法使用硬件向量时会返回 False(此时 Vector 会退化为软件实现,通常比纯标量更慢)。

field Architecture #
Architecture

当前进程的处理器架构,例如 X64 / Arm64。

field IsSse2 #
IsSse2

SSE2 支持(x86/x64 上的向量化基线)。

field IsSse42 #
IsSse42

SSE4.2 支持。

field IsAvx #
IsAvx

AVX 支持(256 位浮点向量)。

field IsAvx2 #
IsAvx2

AVX2 才具有整数类型的 256 位理论吞吐;对 Double 而言 与 SimdCapabilities.IsAvx 等价。

field IsFma #
IsFma

FMA(Fused Multiply-Add)融合乘加指令支持。开启之后 a * b + c 可以在一条指令内完成,是点积/平方和类运算的主要加速点。

field IsAdvSimd #
IsAdvSimd

ARM Advanced SIMD(NEON)支持。

field countDouble #
countDouble

Vector(Of Double).Count,即一个向量寄存器可以容纳的 Double 个数。

field countFloat #
countFloat

Vector(Of Single).Count

field countInteger #
countInteger

Vector(Of Integer).Count

field countLong #
countLong

Vector(Of Long).Count

field countShort #
countShort

Vector(Of Short).Count

field Description #
Description

人类可读的能力描述,主要用于基准测试与诊断日志输出。

field IsHardwareAccelerated overload 2 #
IsHardwareAccelerated
field Architecture overload 2 #
Architecture
field IsSse2 overload 2 #
IsSse2
field IsSse42 overload 2 #
IsSse42
field IsAvx overload 2 #
IsAvx
field IsAvx2 overload 2 #
IsAvx2
field IsFma overload 2 #
IsFma
field IsAdvSimd overload 2 #
IsAdvSimd
field countDouble overload 2 #
countDouble
field countFloat overload 2 #
countFloat
field countInteger overload 2 #
countInteger
field countLong overload 2 #
countLong
field countShort overload 2 #
countShort
field Description overload 2 #
Description
method VectorSize #
VectorSize()
method IsVectorizable #
IsVectorizable()