一段代码搞懂 gpu memory
来源:互联网 发布:朝鲜怎样知乎 编辑:程序博客网 时间:2024/06/05 20:45
一段代码搞懂 gpu memory
GPU 的 memory 分为 三种,io速度从快到慢排序为:
- local memory
- shared memory
- global memory
其中 shared memory 的io 速度是远快于 global memory 的。
这三种 memory 的访问性质是:
- local memory: 线程私有,只能本线程访问
- shared memory: 线程块(thread block) 共享, 同一个线程块中的线程可以访问。
- global memory: 所有线程都可访问。
那么在编程的过程中,这三种 memory 是从什么地方体现出来的呢?
#include <stdio.h>__global__ void memory_demo(float* array){ // array 指针是在 local memory 上的,但是它指向的 memory 是 global memory // i, index 都是 local variable,每个 线程 私有。 int i, index = threadIdx.x; // __shared__ variable 对 block 中的 线程可见 // 并 和 thread block 有相同的 生命周期。 __shared__ float sh_arr[128]; // 将 global memory 的值 拷贝到 shared memory 上。 sh_arr[index] = array[index]; // barrier here __syncthreads(); // 之后对 shared memory 的 IO 要快的多 // do something}int main(){ float h_arr[128]; float *d_arr; // cudaMalloc 分配的 memory 是在 global memory 上的。 cudaMalloc((void **)&d_arr, sizeof(float)*128); cudaMemcpy((void*) d_arr, (void*) h_arr, sizeof(float)*128, cudaMemcpyHostToDevice); // 启动 kernel memory_demo<<<1, 128>>>(d_arr); // .. do other stuff}
阅读全文
0 0
- 一段代码搞懂 gpu memory
- 一段代码, 搞明白Java中的for语句
- GPU memory 结构
- memory out (GPU)
- 一段代码
- 一段代码
- 一段代码
- 一段代码。。。
- 一段代码
- 一段代码
- 一段代码
- 一段代码
- 一段代码
- 一段代码
- 一段代码
- Beware of GPU memory bandwidth!!
- gpu/cuda-03-cuda memory
- Get GPU memory usage progamatically
- D
- lnmp 环境安装pdo拓展
- 手机端1px显示比较粗的方法
- KMP总结
- 接口
- 一段代码搞懂 gpu memory
- hdu1874 畅通工程续
- 常见服务器向用户返回的状态码和提示信息
- javaScript中的instanceOf的用法
- 代理模式的实际运用-以mybatis拦截器实现原理为例
- C#中ShowDialog() == DialogResult.OK
- 命运
- 欧拉函数【模板】
- 构造函数为什么不能为虚函数