Chapter 8 Speedup Your Program

Intro

多说两句,这一节课其实很有用,但是安排在这里有点难以理解。其实按照同一个任务算法加速的理念,计算机组成与设计这本书也是介绍了如何通过硬件或者编程来加速代码。这一节我没有完全听懂,希望未来看到这个文章的时候,去看完计算机组成与设计。目前忙于ai agent的一些调查。

C/C++ with ARM

Intel vs ARM

Pasted image 20241012103134.png
intel占据pc的巨大份额,但是服务器等其他平台也在飞速增长。

ARM

Pasted image 20241012103234.png

RISC-V

Pasted image 20241012103904.png

Raspberry Pi 4

一个小电脑,里面啥都有。
Pasted image 20241012103953.png

How to develop programs with ARM Development boards

Almost the same with an X86 PC with Linux OS.
• gcc/g++
• Makefile
• cmake

Speedup Your Program

Principle for Programming

Pasted image 20241012105400.png

Some Tips on Optimization

• Choose an appropriate algorithm
• Clear and simple code for the compiler to optimize
• Optimize code for memory
• Do not copy large memory
• No printf()/cout in loops
• Table lookup (sin(), cos() ...) 查表法。
• SIMD, OpenMP

SIMD: Single instruction, multiple data

Pasted image 20241012110338.png
https://software.intel.com/sites/landingpage/IntrinsicsGuide/

OpenMP

An Overview of OpenMP – Ruud van der Pas – Sun Microsystems https://www.openmp.org/wp-content/uploads/ntu-vanderpas.pdf
Pasted image 20241012111445.png

Pasted image 20241012111644.png
一般放在外面,这样分拆之后的任务还是有一定工作量的,要不然拆之后的任务太简单,就没有拆开的意义了。

An Example with SIMD and OpenMP

这一节太略了,深入的话需要学习别的内容。

ARM Cloud Server

环境描述
• Huawei ARM Cloud Server
• Kunpeng 920 (2 cores of many)
• RAM: 3GB
• openEuler Linux

Functions for dot product

Pasted image 20241012114343.png

Avoid Memory Copy

What’s an image?

Pasted image 20241012114456.png
注意这一小节是关于老师的一些项目经验,pdf上的内容不全,直接看这里