为了稍微跟进这里提出的问题,有人告诉我Roofline 模型是评估任何科学代码性能的一种方法。基本上,我计算算术强度(FLOPS 与 DRAM 字节的比率)并将其乘以 STREAM 带宽以获得理想的 FLOPS/s。我还可以使用 AI 来查看我与给定机器的最大性能有多接近。
也就是说,为有限元软件包(如 FEniCS 或 Deal.II)获取此 AI 的最简单方法是什么?就目前而言,我不太关心寄存器/缓存重用或为某种级别的缓存维持的有用带宽的量化。如果我使用 PETSc 编写了我自己的显式有限元实现,我可以简单地手动计算 FLOPS 的近似数量,并估计来自所有向量操作和稀疏矩阵向量乘法的加载/存储数量,如此处所述。但是,对于任何给定的实现,是否有人对这样做有任何建议?