1.1 计算机体系结构基础
核心内容:
- ✅ CPU架构基础
- 流水线技术
- 乱序执行
- 分支预测
- 多发射技术
- ✅ GPU架构基础
- SIMD vs SIMT架构
- Warp/Thread Block概念
- GPU内存层次
- 并行计算模型
- ✅ 缓存层次结构
- L1/L2/L3缓存
- 缓存一致性协议(MESI、MOESI)
- 缓存替换策略
- ✅ 内存系统
- 虚拟内存
- 内存映射
- 内存带宽与延迟
- ✅ 总线与互联网络
- PCIe总线
- 片上网络(NoC)
- 一致性互联
学习资料:
- 📚 必读 :《Computer Architecture: A Quantitative Approach》(第6版)
- 第1章:Fundamentals of Quantitative Design and Analysis
- 第2章:Memory Hierarchy Design
- 第4章:Data-Level Parallelism in Vector, SIMD, and GPU Architectures
- 📺 视频:YouTube - "Computer Architecture" by David Wentzlaff(普林斯顿大学)
- 🌐 在线课程 :https://www.coursera.org/learn/comparch
- 📖 中文推荐:《深入理解计算机系统》(CSAPP)- 第6章存储器层次结构
实践建议:
- 绘制CPU和GPU架构对比图
- 实现简单的缓存模拟器
- 阅读Intel/AMD/NVIDIA架构白皮书
1.2 C++/Python编程基础
核心内容:
- ✅ C++面向对象编程
- 类与对象
- 继承与多态
- 模板与STL
- 智能指针
- ✅ Python脚本编写
- 基础语法
- 文件操作
- 正则表达式
- 数据处理(pandas, numpy)
- ✅ SCons构建系统
- SConscript语法
- 依赖管理
- 多架构编译
- ✅ 指针与内存管理
- 动态内存分配
- 内存泄漏检测
- 性能优化
学习资料:
- 📚 C++ :《C++ Primer》(第5版)
- 第1-10章:基础语法
- 第12-16章:面向对象
- 第17-19章:模板与泛型
- 📚 Python:《Python Crash Course》或官方文档
- 🌐 SCons :https://docs.scons.org/
- 📺 视频:YouTube - "Python for Beginners" by freeCodeCamp
1.3 CUDA编程基础
核心内容:
- ✅ CUDA线程层次
- Grid/Block/Thread组织
- 线程索引计算
- 线程同步
- ✅ CUDA内存层次
- Global Memory
- Shared Memory
- Local Memory
- Constant/Texture Memory
- ✅ CUDA编程模型
- Kernel函数
- Host/Device数据传输
- 流(Stream)与事件(Event)
- ✅ 性能优化
- 内存合并访问
- 共享内存使用
- warp发散避免
学习资料:
- 📚 官方必读 :《CUDA C Programming Guide》
- 第2章:Programming Model
- 第3章:Programming Interface
- 第5章:Performance Guidelines
- 🌐 官方资源 :https://developer.nvidia.com/cuda-zone
- 📺 视频:YouTube - "CUDA Programming" by NVIDIA
- 📖 实践书籍:《CUDA by Example》by Jason Sanders
代码示例:
// CUDA Hello World
#include <stdio.h>
__global__ void helloKernel() {
printf("Hello from GPU thread %d\n", threadIdx.x);
}
int main() {
helloKernel<<<1, 5>>>();
cudaDeviceSynchronize();
return 0;
}
// 矩阵乘法示例
__global__ void matrixMul(float* A, float* B, float* C, int N) {
int row = blockIdx.y * blockDim.y + threadIdx.y;
int col = blockIdx.x * blockDim.x + threadIdx.x;
if (row < N && col < N) {
float sum = 0;
for (int k = 0; k < N; k++) {
sum += A[row * N + k] * B[k * N + col];
}
C[row * N + col] = sum;
}
}
实践建议:
- 安装CUDA Toolkit(建议11.x版本)
- 运行CUDA Samples中的示例
- 实现简单的并行算法(向量加法、矩阵乘法)