当前位置: 首页 > 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.hotlads.com/news/5711.html

相关文章:

  • 做网站维护难吗bt磁力搜索引擎在线
  • 青岛网站建设 青岛博采网络最近新闻大事
  • 青岛市城乡建设委员会官方网站南宁网络推广培训机构
  • 做网站的详细流程狼雨的seo教程
  • 一流的镇江网站优化西安seo代运营
  • 做视频的免费素材网站排名优化公司
  • 网站维护 案例shodan搜索引擎
  • wordpress防破解福州短视频seo机会
  • 吉林大学建设工程学院 旧网站搜索引擎关键词竞价排名
  • 公司黄页88网深圳百度推广优化
  • 哪个网站找到做箱包厂外发的网站制作设计
  • 有没有直接做网站的软件手机怎么创建网站
  • 做棋牌辅助网站软考培训机构哪家好一点
  • 网站建设常识神马seo服务
  • php做电影网站有哪些百度学术论文查重免费
  • 移动宽带续费怎么办理谷歌优化seo
  • 哪些是b2b类的网站网上学电脑培训中心
  • 网站的意思品牌seo培训
  • 网站建设谈客户武汉网络关键词排名
  • 陕西西安网站建设电商seo什么意思
  • 0基础如何做网站核心关键词如何优化
  • 南京网站设计公司今日国际新闻头条
  • 网站怎么推广怎么做的电脑培训学校
  • 久久建筑网的账号岳阳seo公司
  • 阳泉购物网站开发设计关键词代发排名
  • 极验验证 wordpress网站seo优化培训
  • 网站竞争对手电话营销系统
  • 怎样用javaweb做网站市场调研报告ppt模板
  • 杭州自适应网站建设长沙专业竞价优化公司
  • 软件工程师证书有用吗aso排名优化