Skip to content

Commit 337f0c0

Browse files
chore(content): sync from Feishu
1 parent 8ca18ad commit 337f0c0

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

docs/.vitepress/data/generated/feishu.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"order": 2,
4141
"documentId": "H5x1dK6LzoVFmuxUzDicmuQ1nbb",
4242
"objectType": "docx",
43-
"revisionId": 1025
43+
"revisionId": 1335
4444
}
4545
]
4646
}

docs/wiki/WHFXw13vEiD8Hikfp3ScU33JnXe.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,46 @@ VecAdd<<<1, N>>>(A, B, C);
166166
```
167167

168168
### CUDA 内存管理 API
169+
170+
CUDA 中 CPU 和 GPU 拥有独立内存,因此需要显式管理数据传输。下面的代码中给出了 CUDA 的内存管理 API:
171+
172+
```C++
173+
int main()
174+
{
175+
int n = 1000000;
176+
size_t bytes = n * sizeof(float);
177+
float *h_a = (float*)maloc(bytes);
178+
for (int i = 0; i < n; i++) h_a[i] = 1.0f;
179+
float *d_a;
180+
cudaMalloc(&d_a, bytes);
181+
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);
182+
cudaMemcpy(h_a, d_a, bytes, cudaMemcpyDeviceToHost);
183+
cudaFree(d_a);
184+
free(h_a);
185+
}
186+
```
187+
188+
### Kernel 启动参数
189+
190+
Kernel 的调用形式是:
191+
192+
```C++
193+
kernel<<<gridDim, blockDim>>>();
194+
```
195+
196+
其中 grid 的维数就是 block 的数量,block 的维数就是 block 带 thread 数量。可以是 `int` 或者 `dim3` 类型,可以支持1-3维的分块。例如矩阵计算通常使用二维:
197+
198+
```C++
199+
dim3 block(16, 16); // 16x16 共计256个 block
200+
```
201+
202+
### Kernel 中的内置变量
203+
204+
Kernel 中可以直接访问线程和 block 信息:
205+
206+
| 变量 | 含义 | |
207+
|-|-|-|
208+
| threadIdx | | |
209+
| blockIdx | | |
210+
| blockDim | | |
211+
| gridDim | | |

0 commit comments

Comments
 (0)