第一阶段:基础知识准备

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》或官方文档
  • 🌐 SConshttps://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中的示例
  • 实现简单的并行算法(向量加法、矩阵乘法)
相关推荐
Deitymoon2 小时前
STM32——蜂鸣器
stm32·单片机·嵌入式硬件
光子物联单片机2 小时前
STM32传感器模块编程实践(二十)ESP8266实现MQTT连接OneNET上传温湿度数据
c语言·stm32·单片机·嵌入式硬件·mqtt
项目題供诗2 小时前
STM32-EXIT外部中断(七)
stm32·单片机·嵌入式硬件
三品吉他手会点灯2 小时前
STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(下)
笔记·stm32·单片机·嵌入式硬件·学习
时空自由民.2 小时前
嵌入式-CI(Continuous Integration)介绍
linux·单片机·ci/cd
LingLong_roar12 小时前
STM32 启动流程
stm32·单片机·嵌入式硬件
weixin_5206498712 小时前
短距离硬件通信
单片机·嵌入式硬件
振南的单片机世界15 小时前
HAL慢、ODR中、BSRR快:GPIO翻转速度的三重境界
单片机·嵌入式硬件
实在太懒于是不想取名17 小时前
STM32N6的开发日记(8):在N6中部署自训练的火焰检测模型
stm32·单片机·嵌入式硬件