CUDA 编程实验室
CudaLab
GPU 并行编程入门实验室。通过向量加法、标量乘法、矩阵转置等挑战,学习 CUDA 核函数、线程层次和内存管理。
CUDA 挑战: 0 / 5
挑战 1: 向量加法
实现 GPU 上的向量加法 C = A + B
CUDA 核函数
__global__ void vectorAdd(float *A, float *B, float *C, int n) {
int tid = blockIdx.x * blockDim.x + threadIdx.x;
if (tid < n) {
C[tid] = A[tid] + B[tid];
}
}线程配置
2
Grid (块数)
4
Block (线程/块)
8
总线程数
Block 大小:4
线程网格:
Block 0
0
1
2
3
Block 1
0
1
2
3
数据传输与计算
Host 内存 - 输入 A
1
2
3
4
5
6
7
8
Host 内存 - 输入 B
10
20
30
40
50
60
70
80
Host → Device (cudaMemcpy)↓GPU 计算↓Device → Host (cudaMemcpy)
Device 内存 - 输出 C
?
?
?
?
?
?
?
?
💡 CUDA 编程核心概念
CUDA(Compute Unified Device Architecture)是 NVIDIA 的通用 GPU 编程平台。 核心概念包括:核函数(__global__)、线程层次(Grid → Block → Thread)、 内存管理(Host/Device 数据传输)、共享内存、线程同步。
线程 ID 计算
tid = blockIdx.x * blockDim.x + threadIdx.x
内存传输
cudaMemcpy(dst, src, size, direction)
关联教材
以下教材与本沙盒涉及的抽象层级相关,建议系统学习:
关联教材章节
以下教材章节与本沙盒涉及的抽象层级相关,建议配合阅读:
第1章深入理解计算机系统
计算机系统漫游
勿以浮沙筑高台
系统概览抽象层次Amdahl定律
第3章深入理解计算机系统
程序的机器级表示
有时候你要学会像机器一样思考
x86-64汇编寻址模式栈帧过程调用
第4章深入理解计算机系统
处理器体系结构
万丈高楼平地起
Y86-64流水线控制逻辑流水线冒险
第5章深入理解计算机系统
优化程序性能
我们可以做的更好
编译器优化循环展开并行性存储器山
第6章深入理解计算机系统
存储器层次结构
万能的金字塔模型
SRAM/DRAM缓存局部性存储器山
第7章深入理解计算机系统
链接
欢迎来到灰色地带
静态链接目标文件符号解析重定位
第8章深入理解计算机系统
异常控制流
操作系统:唯一的使命就是帮助程序运行
异常进程系统调用信号
第9章深入理解计算机系统
虚拟内存
假装我们有用不完的物理内存
虚拟地址页表TLB内存映射
第4章计算机系统要素
机器语言
CPU 能理解的指令
指令集寻址模式汇编
第5章计算机系统要素
计算机体系结构
把一切组装起来
CPU设计总线存储映射
第6章计算机系统要素
汇编器
从助记符到机器码
符号解析代码生成
第3章操作系统导论
CPU调度
谁先运行?
FIFOSJFRRMLFQ
学习路径推荐
建议按以下顺序学习,循序渐进掌握计算机科学:
前置沙盒(建议先学习)
使用说明
- •调整参数观察行为变化,实时反馈
- •状态自动编码到 URL,可直接分享给他人
- •支持键盘操作(Tab 切换、方向键调整)