众所周知,ATLAS 使用矩阵计算算法的“分块”或“平铺”版本,这大大提高了性能。
ATLAS 似乎也有一些架构默认值,这些默认值是手动计算的。并且可以进行搜索以确定NB
(#define
我认为代表块数的宏)的其他值。
但它是如何工作的?数值是如何确定的?算法是否只是以不同的值(蒙特卡洛风格)运行多次,直到找到某种最优值?
这也是一个假设。假设您将一个阻塞的 ATLAS 算法复制到 C++ 模板中,并且有一个 128 位的有理类型。您能否NB
以某种方式从算法NB
的双重版本中的 ATLAS 调整值推导出算法的理性版本?