当前位置: 首页 > news >正文

网站建设的广告语天下信息网

网站建设的广告语,天下信息网,欧美平面设计网站,做本地网站需要的软件设备术语 Host:CPU 和 内存 (host memory)Device:GPU 和显存 (device memory) CUDA 线程层次 CUDA 线程层次分为: Thread 所有线程执行相同的核函数并行执行 Thread Block 执行在一个 Streaming Multiprocessor (SM&#xff09…

设备术语

  • Host:CPU 和 内存 (host memory)
  • Device:GPU 和显存 (device memory)

在这里插入图片描述

CUDA 线程层次

CUDA 线程层次分为:

  • Thread
    • 所有线程执行相同的核函数
    • 并行执行
  • Thread Block
    • 执行在一个 Streaming Multiprocessor (SM)
    • 同一个 Block 中的线程可以协作
  • Thread Grid
    • 一个 Grid当中的 Block 可以在多个 SM 中执行

CUDA执行顺序

  1. 加载核函数
  2. 将 Grid 分配到一个 Device
  3. 根据 <<<..>>> 内的执行设置的第一个参数,Giga threads engine 将 block 分配到 SM 中。一个 Block 内的线程一定会在同一个 SM 内,一个 SM 可以有很多个 Block
  4. 根据 <<<..>>> 内的执行设置的第二个参数,Warp 调度器会将调用线程
  5. Warp 调度器为了提高运行效率,会将每 32 个线程分为一组,称作-个 warp
  6. 每个 warp 会被分配到 32 个 core 上运行

在这里插入图片描述

CUDA 的一切精髓就是并行加速冲冲冲!

如何计算索引

首先来看看基本概念:

  • threadIdx.[x y z]是执行当前kernel函数的线程在block中的索引值(threadIdx.x是1,threadIdx.y是0)

  • blockIdx.[x y z]是指执行当前kernel函数的线程所在block,在grid中的索引值(blockIdx.x是1,blockIdx.y是1)

  • blockDim.[x y z]表示一个block中包含多少个线程(blockDim.x是5,blockDim.y是3)

  • gridDim.[x y z]表示一个grid中包含多少个block(gridDim.x是3,gridDim.y是2)

在这里插入图片描述
计算矩阵运算的时候,将矩阵中的一行取出来,但是因为 CUDA 是多个线程并行的,就是每个线程里面都会同时获取到矩阵行中的某个元素,我们就需要在核函数里面计算出来这个元素在原来矩阵行中的索引,下面是个例子:
在这里插入图片描述

Demo

接下来,我们通过完成一个向量加法的实例来实践一下: 。

为了完成这个程序,我们先要将数据传输给GPU,并在GPU完成计算的时候,将数据从GPU中传输给CPU内存。这时我们就需要考虑如何申请GPU存储单元,以及内存和显存之前的数据传输。

我们利用cudaMalloc()来进行GPU存储单元的申请,利用cudaMemcpy()来完成数据的传输

代码如下:

#include <math.h>
#include <stdio.h>void __global__ add(const double *x, const double *y, double *z, int count)
{const int n = blockDim.x * blockIdx.x + threadIdx.x;if( n < count){z[n] = x[n] + y[n];}}
void check(const double *z, const int N)
{bool error = false;for (int n = 0; n < N; ++n){if (fabs(z[n] - 3) > (1.0e-10)){error = true;}}printf("%s\n", error ? "Errors" : "Pass");
}int main(void)
{const int N = 1000;const int M = sizeof(double) * N;double *h_x = (double*) malloc(M);double *h_y = (double*) malloc(M);double *h_z = (double*) malloc(M);for (int n = 0; n < N; ++n){h_x[n] = 1;h_y[n] = 2;}double *d_x, *d_y, *d_z;cudaMalloc((void **)&d_x, M);cudaMalloc((void **)&d_y, M);cudaMalloc((void **)&d_z, M);cudaMemcpy(d_x, h_x, M, cudaMemcpyHostToDevice);cudaMemcpy(d_y, h_y, M, cudaMemcpyHostToDevice);const int block_size = 128;const int grid_size = (N + block_size - 1) / block_size;add<<<grid_size, block_size>>>(d_x, d_y, d_z, N);cudaMemcpy(h_z, d_z, M, cudaMemcpyDeviceToHost);check(h_z, N);free(h_x);free(h_y);free(h_z);cudaFree(d_x);cudaFree(d_y);cudaFree(d_z);return 0;
}
http://www.yayakq.cn/news/438044/

相关文章:

  • 上海定制网站建设费用网站系统模版
  • 新闻cms静态网站模板建设公司网站广告语
  • 网站 支付宝 接口h5网站系统
  • 刚开始做网站要传数据库吗it培训机构口碑排名
  • 北仑网站建设东莞常平有高铁站吗
  • 崇信县门户网站广告投放平台排名
  • 海口专业做网站怎么编辑wordpress主题代码
  • 上海英文网站建设公司现在网站后台有哪几种模板形式
  • 新手做地方门户网站深圳市做网站公司
  • 网站线上运营购买网站域名空间
  • 北京网站建设上北京九五至尊网络深圳网站建设知了网络
  • wp网站建设教程黄贝建设网站建设
  • 企业请别人做网站成都网站开发工作室
  • 网站建设云服务器成都app
  • 公司页面网站设计模板网页界面设计ppt
  • 网站佣金怎么做会计分录西宁网络公司哪家好
  • 关于网站建设意见和建议新媒体8大营销方式
  • 什么网站可以发布有偿做项目seo快速排名外包
  • 做网站必须会ppt模板在哪里找
  • 网站建设规划书的目的推广普通话手抄报内容文字
  • 可以做代销的网站京津冀协同发展战略的主要内容
  • 精美网站模板下载上海天华室内设计有限公司
  • 用dw做的网站怎么发到网上网站虚拟主机销售
  • 3有免费建网站网站没备案如何做淘宝客
  • 聊天室网站开发百度推广方式
  • 佛山网站优化什么价格google网站打不开了
  • 物流网站如何设计网站建设开发ppt模板
  • 葫芦岛网站网站建设中电建铁路建设公司网站
  • 住房和城市建设厅网站网站建设报告书总结
  • 四川省铁路建设有限公司网站公司部门聚餐计入什么科目