初识CUDA计算

  • 矩阵计算基础:C=AB,A−R(K,M),B−R(M,P)C=AB, A-R(K,M), B-R(M,P)C=AB,A−R(K,M),B−R(M,P)

    • 矩阵计算的内积视角

      • 将A视为行向量矩阵,B视为列向量矩阵 C(i,j)=A(i,:)B(:j)C(i,j)=A(i,:)B(:j)C(i,j)=A(i,:)B(:j)
    • 行向量视角
      • 将B视为行向量矩阵,A视为系数矩阵C(i:)=∑m−>MA(I,:)B(M:)C(i:)=\sum{m} ->M A(I,:)B(M:)C(i:)=∑m−>MA(I,:)B(M:)
    • 列向量视角
      • 将A视为列向量矩阵,B视为稀疏矩阵C(:j)=∑m−>MB(mj)A(:m)C(:j)=\sum{m} -> M B(mj)A(:m)C(:j)=∑m−>MB(mj)A(:m)
  • 并行计算理论

    • 数据并行(多核多进程)

      • 将许多可以解决问题的任务分割,然后分布在一个或者多个核上进行程序的执行。
    • 任务并行(多核多进程)
      • 将可以解决问题的数据进行分割,将分割好的数据放在一个或者多个核上进行执行;每一个核对这些数据都进行类似的操作。
  • CPU和GPU体系结构差异

    1. CPU有三级缓存,core数较少,擅长IO操作、中断操作及分支等
    2. GPU有二级缓存,core数较多,计算处理单元多,擅长计算操作
  • CUDA多设备系统

    • 设备遍历

      •  // 设置设备数int deviceCount;  // 获取设备cudaGetDeviceCount(&deviceCount);    int device;// 遍历设备for (device=0;device<deviceCount;++device){cudaDevicePorp deviceProP;cudaGetDevicePorperties(&deviceProp, device);printf("Device %d has compute capability %d %d \n",device,devicePorp.major, deviceProp.minor);}
  • 设备选择

    • size_t size = 1024 * sizeof(float);
      cudaSetDevice(0);
      float* p0;
      cudaMalloc(&p0, size);
      MyKernek<<<1000, 12>>>(p0);
      cudaSetDevice(1);
      float* p1;
      cudaMalloc(&p1, size);
      MyKernel<<<1000, 128>>>(p1);
      
  • cuda事件和cuda流

    • cudaSetDevice(0);
      cudaStream_t s0;
      cudaStreamCreate(&s0);
      MyKernel<<<100, 64, 0, s0>>>();
      cudaSetDevice(1);
      cudaStream_t s1;
      cudaStreamCreate(&s1);
      MyKernel<<<100, 64, 0, s1>>>();
      MyKernel<<<100, 64, 9, s0>>>();
      
  • 设备间互访

    • cudaSetDevice(0);
      float* p0;
      size_t size = 1024*sizeof(float);
      cudaMalloc(&p0, size);
      MyKernel<<<1000, 128>>>(p0);
      cudaSetDevice(1);
      cudaDeviceEnableFeetAccess(0, 0);
      MyKernel<<<1000, 128>>>(p0);
      
  • Trust:cuda编程体系的STL

了解CUDA计算(一)相关推荐

  1. 异构计算实验——CUDA计算矩阵幂

    CUDA计算矩阵幂 ** 一.实验内容 本次实验内容为基于CUDA的GPU实现矩阵的幂.要求分别用暴力算法和高效算法实现矩阵的幂. 对于一个 的方阵 ,计算的次幂.首先,生成一个的方阵,保证每行每列元 ...

  2. 基于tensorflow-gpu-2.6.0 + Intel CPU + GTX1660 SUPER 使用CUDA计算

    tensorflow-gpu-2.6.0 + Intel CPU + GTX1660 SUPER 使用CUDA计算 前言: 本文为基于NVIDIA GPU 进行 tensorflow计算的配置说明,如 ...

  3. 使用CUDA计算Haar小波变换

    在<Haar小波变换的快速实现>一文里我们提到了Haar小波变换的计算,在这里我们使用CUDA实现文中提到的计算方式. 01 __global__ void 02 _cuda_haar(f ...

  4. CUDA 计算pi (π)

    通过简单的程序设计熟练CUDA的使用步骤 下面是cuda代码及相关注释 #include <stdio.h> #include <iostream> #include < ...

  5. CUDA计算向量内积的程序(源自CUDA范例编程)

    __syncthreads() acts as a barrier at which all threads in the block must wait before any is allowed ...

  6. 怎么用显卡计算_初试CUDA,入门显卡实现两千倍加速

    众所周知,Nvidia的CUDA计算平台可以实现数量惊人的并行运算,因此受各个流行的机器学习框架青睐.为了尝试人工智能,我最近组装了一台机器,配备了一块入门级的GeForce GTX 1060显卡. ...

  7. 【CUDA基础练习】向量内积计算的若干种方法

    先从一个简单,直观的方法来了解如何用CUDA计算向量内积.向量内积既然是将两个向量对应元素相乘的结果再求和,我们先考虑将对应元素相乘并行化,再来考虑相加. [方法一] #include<stdi ...

  8. CUDA加速计算的基础C/C++

    本文是Nvidia 90美金的课程笔记 无论是从出色的性能,还是从易用性来看,CUDA计算平台都是加速计算的制胜法宝.CUDA 提供了一种可扩展 C.C++.Python 和 Fortran 等语言的 ...

  9. CUDA加速计算矩阵乘法进阶玩法(共享内存)

    CUDA加速计算矩阵乘法&进阶玩法~共享内存 一.基础版矩阵乘法 二.为什么可以利用共享内存加速矩阵乘法 1.CUDA内存读写速度比较 2.申请共享内存 三.改进版矩阵乘法(利用共享内存) 一 ...

最新文章

  1. Ubuntu被曝严重漏洞:切换系统语言+输入几行命令,就能获取root权限
  2. 移动设备的配置测试(译)
  3. 30分钟正则表达式指导
  4. python可以用来编写计算机网络程序吗_计算机网络(基于python做的笔记 )
  5. 逻辑回归 python_深入研究Python的逻辑回归
  6. Java复习第三天-静态方法
  7. C++ STL list 学习一
  8. 非线性优化:Ax=b求解的几种算法
  9. 计算机科学导论大一论文,《计算机科学导论论文.doc
  10. 中国电信物联网开放平台对接历程
  11. 关于《微习惯》的记录
  12. jquery仿钉钉流程图制作。
  13. 电瓶车充电桩收费平台在福建学校的应用
  14. Word2Vec实战
  15. MT7621_移植篇(3) uboot编译+配置项分析
  16. VR相关学习资源,VR学习资源,VR开发资源
  17. 学生信息管理系统---3021错误
  18. POJO VO PO DTO 和JavaBean
  19. iWO联通3G详单及套餐使用情况查询工具)更新至v0.8.2
  20. kubernetes1.8.5集群安装(带证书)

热门文章

  1. 各种不同几何形状布局布阵下的GDOP相对值图
  2. Java核心技术笔记 语言基础
  3. 一个基于Node.js的本地快速测试服务器
  4. RecyclerView源码解析 - 分割线
  5. String是一个很普通的类 - Java那些事儿
  6. 张旭豪:外卖概念的三点进化
  7. python leetcode 1
  8. iOS 获取网络状态
  9. 第1部分:Ajax 入门简介
  10. Dell在CRM的创新及该模式的推广