软件优化的原理与实践系列之一向量化计算

简介: 向量化计算 软件优化的原理与实践系列之一 前言 用过MATLAB仿真语言的同学,都有这样的经验。要尽量多用向量化运算,而不要自己手写循环语句,否则代码的执行效率会相当低下。如果你熟悉python,涉及到数值计算的时候,也要尽量的调用成熟的数值计算的库,比如numpy,而不是自己用循环去实现。一个众所周知的理由是,别人成熟的库已经经过了高度的优化,我们没有必要重复造轮子。 事实上,还有另外一

向量化计算

软件优化的原理与实践系列之一

前言

用过MATLAB仿真语言的同学,都有这样的经验。要尽量多用向量化运算,而不要自己手写循环语句,否则代码的执行效率会相当低下。如果你熟悉python,涉及到数值计算的时候,也要尽量的调用成熟的数值计算的库,比如numpy,而不是自己用循环去实现。一个众所周知的理由是,别人成熟的库已经经过了高度的优化,我们没有必要重复造轮子。

事实上,还有另外一个根本性的原因是,向量化计算,就即使没有经过任何优化的代码,也会比非向量化运算要快。本篇博文将试图解释其根本性原因。

背景

现代计算机大都采用了分层的存储器结构:寄存器,cache,主存,磁盘。CPU的计算单元直接和寄存器交换信息,计算时需要把数据逐级传递到寄存器,计算得到的结果也要将结果逐级放回存储器。基于这种存储体系结构,程序员在编制软件的时候,要尽量的减少和cache,主存,磁盘这些存储器交换数据。我们把整个软件的执行实行划分为两部分,CPU真正执行运算的时间和寄存器与存储器交换数据的时间,即:

 常见线性代数运算操作的q值

小结

把计算流程用向量,矩阵的数学语言重新描述,在此基础上实施的计算,总是比标量计算的效率高,即使代码没有经过任何优化。

目录
相关文章
|
机器学习/深度学习 存储 并行计算
一篇就够:高性能推理引擎理论与实践 (TensorRT)
本文分享了关于 NVIDIA 推出的高性能的深度学习推理引擎 TensorRT 的背后理论知识和实践操作指南。
10530 8
一篇就够:高性能推理引擎理论与实践 (TensorRT)
|
2月前
|
数据采集 自然语言处理 调度
一文详谈RAG优化方案与实践
RAG通过检索现有的大量知识,结合强大的生成模型,为复杂的问答、文本摘要和生成任务带来了全新的解决方案。本文详细的介绍了RAG遇到的挑战、通用范式、工程实践、优化实现策略等。
|
5月前
|
存储 并行计算 编译器
向量化代码实践与思考:如何借助向量化技术给代码提速
在不堆机器的情况下,要想使代码完全发挥出硬件性能,就需要做加速。其中比较常见的操作是并发处理,本文将深入向量化计算技术,为大家讲解SIMD指令,以及如何写出规范的可向量化的代码。
|
5月前
|
机器学习/深度学习 存储 并行计算
深入解析多目标优化技术:理论、实践与优化
深入解析多目标优化技术:理论、实践与优化
969 0
|
编解码 自然语言处理 数据可视化
MIM方法为什么简单高效?可视化和大规模实验给出了答案
MIM方法为什么简单高效?可视化和大规模实验给出了答案
199 0
MIM方法为什么简单高效?可视化和大规模实验给出了答案
|
分布式计算 关系型数据库 BI
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
134 0
|
机器学习/深度学习 人工智能 并行计算
PAI-Blade 通用推理优化:系统优化实践(上)|学习笔记
快速学习 PAI-Blade 通用推理优化:系统优化实践(上)。
218 0
PAI-Blade 通用推理优化:系统优化实践(上)|学习笔记
|
人工智能 并行计算 PyTorch
PAI-Blade 通用推理优化:系统优化实践(下)|学习笔记
快速学习 PAI-Blade 通用推理优化:系统优化实践(下)。
164 0
PAI-Blade 通用推理优化:系统优化实践(下)|学习笔记
|
机器学习/深度学习 数据采集 自然语言处理
高级能力和算法效果优化(二)| 学习笔记
快速学习高级能力和算法效果优化。
172 0
高级能力和算法效果优化(二)| 学习笔记
|
自然语言处理 算法 机器人
高级能力和算法效果优化(一)| 学习笔记
快速学习高级能力和算法效果优化。
174 0
高级能力和算法效果优化(一)| 学习笔记
下一篇
无影云桌面