{ 杂项 }

  • 如何加速矩阵乘法——优化GEMM (CPU单线程篇)

    | /

    矩阵乘法GEMM(General matrix multiply)是一个被广泛使用的基础算法,各种领域都需要应用,例如神经网络的核心计算任务就是矩阵乘法,交易中的各种信号计算也可能用到矩阵乘法。因此矩阵乘法的效率是极其关键的。

    关于如何优化矩阵乘法,我准备写一个较短的系列博文,包括CPU单线程篇、CPU多线程篇、GPU篇。原本计划还有一个稀疏矩阵乘法篇,由于这学期毕业前也没有时间把GPU篇做到满意,因此,稀疏矩阵篇就没了,GPU篇也很不完整。如果日后有时间且有那冲动可能会补上(大概率没有)。


    这是矩阵乘法优化第一篇,CPU单线程篇。

    矩阵乘法对于同样的抽象算法,不同的优化带来的性能差异极大,现代的部分CPU上最朴素的矩阵乘法实现和最优实现甚至可以有百倍以上的性能差距,这比一些有更低时间复杂度的矩阵乘法算法的优化效果都有效。而这都是针对现代CPU的体系结构作出的针对性优化带来的,SIMD向量指令更是增加了CPU的处理大批量数据时的效率。在本文中,我们将介绍如何针对CPU进行单线程GEMM实现的优化。

  • 在程序中重定向标准输入和标准输出的多种方法及原理

    | /

    如何在程序中重定向标准输入和标准输出呢?本文将记录多种方法并介绍背后的原理。

    前一阵子在看一段代码时,虽然猜到那段代码的作用大概是重定向了stdout,但是一时没看明白是怎么完成的重定向。后来一阵学习才发现对stdin和stdout的重定向还有种种方法,而且对这些方法的完全理解需要了解操作系统中的文件描述符的一些实现。

    如果对linux上的重定向很熟悉的话,那么这篇文章的内容就不需要看了。

  • 将Time Machine备份转移到新磁盘

    | /

    由于之前用来作为Time Machine备份的硬盘只有1t,能记录的快照日期有限,我又购置了一个2t的移动硬盘来作为新的备份磁盘。但是在迁移旧备份到新磁盘的过程却并不简单。

    我先后尝试了官网推荐的拷贝粘贴法、rsync法、磁盘工具的恢复磁盘法、dd法。