Skip to main content
欢迎来到PAWPAW技术文档网站了解更多信息

Mixed-Precision Vector API

void mat_mul_s8_x_s16_yield_s32()

将一个8位矩阵乘以一个16位向量,得到一个32位结果向量。

该函数将一个8位 M×NM \times N 矩阵 Wˉ\bar{W} 乘以一个16位的 NN 元列向量 vˉ\bar{v},并将结果作为一个32位的 MM 元向量 aˉ\bar{a} 返回。

参数:

  • int32_t output[] – [inout] 输出向量 aˉ\bar{a}

  • const int8_t matrix[] – [in] 权重矩阵 Wˉ\bar{W}

  • const int16_t input_vect[] – [in] 输入向量 vˉ\bar{v}

  • const unsigned M_rows – [in] 矩阵 Wˉ\bar{W} 的行数 MM

  • const unsigned N_cols – [in] 矩阵 Wˉ\bar{W} 的列数 NN

  • int8_t scratch[] – [in] 该函数使用的需要字对齐的缓冲区

异常:

参考性能:

mat_mul_s8_x_s16_yield_s32


unsigned vect_sXX_add_scalar()

向向量添加标量。

向向量添加标量。适用于8位、16位或32位的实数或复数。

length_bytes 是要输出的总字节数。因此,对于16位向量,length_bytes 是元素数量的两倍,而对于复数32位向量,length_bytes 是元素数量的8倍。

cd 是用于填充内部缓冲区的值,将其添加到输入向量中,规则如下:在内部分配一个8个字(32字节)的缓冲区(在堆栈上)。偶数索引的字填充为 c,奇数索引的字填充为 d。对于实数向量,cd 应该是相同的值 - d 的原因是为了使这个函数也适用于复数32位向量。这也意味着对于16位向量,需要将要添加的值复制到字的高2字节和低2字节中。

mode_bits 应为 0x0000(32位模式),0x0100(16位模式)或 0x0200(8位模式)。

参数:

  • int32_t a[] – [inout] 输出向量

  • const int32_t b[] – [in] 输入向量

  • const unsigned length_bytes – [in] 要输出的总字节数

  • const int32_t c – [in] 用于填充内部缓冲区的偶数索引字的值

  • const int32_t d – [in] 用于填充内部缓冲区的奇数索引字的值

  • const right_shift_t b_shr – [in] 输入向量 b 的移位量

  • const unsigned mode_bits – [in] 模式位,用于确定位模式(32位、16位或8位)

参考性能:

vect_sXX_add_scalar