matrix-multiplication - SoA SIMD 向量矩阵乘法
问题描述
在 SoA 安排中是否有任何标准的向量矩阵乘法方法?正如我所理解的,在 SoA 中我可以使用 3 个向量(其中每个组件都在单独的数组中),并且对于基本操作,使用 3x3 矩阵(旋转/缩放)结合向量加法进行平移。相反的是 AoS 使用 4x4 矩阵和 4 向量乘法进行整个变换(但是,为 0 或 1 浪费了一个分量)。实现后者看起来很简单(将矩阵存储在 4 个 SIMD 寄存器中,加载下一个向量,执行工作(muls/adds),存储向量)。但是,我很难用 3x3 矩阵进行乘法运算——看起来我只需要 9 个 SIMD 寄存器用于矩阵——每个矩阵分量都调整为具有相同值的 4 个向量。但是,我只有 8 个寄存器,所以我需要存储中间体(这将是更多的加载/存储指令)。所以,
解决方案
推荐阅读
- dart - 如何使 SingleChildScrollView 从底部开始?
- java - How can I check if a bean has been loaded by springboot
- sql - 显示 itemname 、 type 和实际价格,其中实际价格是所有记录的价格折扣
- wavesplatform - 关于@waves/waves-transactions 库
- css - less-loader 模块构建失败 ~ import
- c++ - int main() 和带符号的 main() 之间的区别
- visual-studio - Ankh SVN 更新到最新版本后未在 Visual Studio 中的解决方案中添加新文件
- python-3.x - 使用 bs4 从
- javascript - 使用Javascript从带有每行标题的表中获取元素
- php - 我对 laravel / HTML 中的单选按钮有疑问