Chapter 8 Speedup Your Program
Intro
多说两句,这一节课其实很有用,但是安排在这里有点难以理解。其实按照同一个任务算法加速的理念,计算机组成与设计这本书也是介绍了如何通过硬件或者编程来加速代码。这一节我没有完全听懂,希望未来看到这个文章的时候,去看完计算机组成与设计。目前忙于ai agent的一些调查。
C/C++ with ARM
Intel vs ARM
intel占据pc的巨大份额,但是服务器等其他平台也在飞速增长。
ARM
RISC-V
Raspberry Pi 4
一个小电脑,里面啥都有。
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
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
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
一般放在外面,这样分拆之后的任务还是有一定工作量的,要不然拆之后的任务太简单,就没有拆开的意义了。
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
Avoid Memory Copy
What’s an image?
注意这一小节是关于老师的一些项目经验,pdf上的内容不全,直接看这里