Cuda10.1总结1-概述

2023-10-30

概述

参考文献

  • 官方在线文档:https://docs.nvidia.com/cuda/archive/10.1/。

    由于网页加载速度比较慢,可以参考如下文档。

  • CUDA_C_Programming_Guide:C编程指南。

  • CUDA_C_Best_Practices_Guide:代码优化指南。

  • CUDA_Runtime_API:CUDA API。

  • CUDA_Driver_API:驱动API。

概念

  • Runtime API:可以理解为cuda的顶层API。使用简单,但效率较低。
  • Driver API:可以理解为cuda的底层API。使用复杂,但是效率较高。

编译

编译工具

  • 在visual studio中,要想编译win32 的cuda10.1程序,必须是visual studio 2013或更低的版本。所以这种情况下使用visual studio 2013。
  • 在visual studio 2013创建工程时,分为Nvidia项目和Visual C++项目。如果没有cu文件,创建Visual C++项目即可,但必须有cuda头文件目录\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include,链接必须输入如下目录的库\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib。

在win32下,visual studio 2013编译为ptx文件时候,Compiler Output(obj/cubin)应该输入data/%(Filename)32.ptx,而不是data/%(Filename)64.ptx。这样就可以编译运行了。

PTX

参考https://zhuanlan.zhihu.com/p/432674688。

PTX编译的一个中间文件,类似于Java的虚拟机。具体流程入下图。
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwIzfzPy-1678019381784)(Images/编译PTX说明图.png)]

  1. 编译器将cu文件编译成ptx文件。
  2. 在执行过程中,根据具体的GPU类型,将其编译为cubin文件。
  3. 执行cubin文件。

直接从内存中加载PTX文件

在生成环境中,如果多一个ptx文件,会增加目录设置的工作。可以从内存中直接加载ptx文件的二进制数据,而不是读取ptx文件。

  1. 读取ptx文件,输出其二进制数据。

    //计算二进制文件的长度并读取
    fxoFile.seekg(0, std::ios_base::end);
    int32_t size = (int)fxoFile.tellg();
    fxoFile.seekg(0, std::ios_base::beg);
    char *fxoData = new char[size];
    fxoFile.read(fxoData, size);
    
    //输出这些二进制数据
    int32_t i = 0;
    for (i = 0; i < size; i++) {
    	cout << left << setw(4) << int32_t(fxoData[i]) << ", ";
    	if (i != 0 && (i + 1) % 10 == 0)
    		cout << endl;
    }
    
    //输出其长度,核对正确性。
    cout << "size = " << size << endl;
    
  2. 在程序中添加头文件。在其中输入char类型的数组,将输出的ptx二进制数据填入到这个数据中。

    const char g_ptxBin[] = 
    {
        ......
    };
    
  3. 在实际加载中,使用g_ptxBin地址即可。

性能

  • 在最工作中,使用cuda10.1实现了部分图像处理。这说明cuda10.1的并行性非常的好。以前使用cuda4.1实现实现处理,由于并行性差而没有使用。

  • 在最工作中,使用cuda10.1实现了部分图像处理。这说明cuda10.1的并行性非常的好。以前使用cuda4.1实现实现处理,由于并行性差而没有使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cuda10.1总结1-概述 的相关文章

随机推荐

  • js数组分类,一维数组转二维数组

    原始数组 var arrayFirst code 1 datas a网吧 code 1 datas b网吧 code 2 datas a酒店 code 2 datas b酒店 code 3 datas a学校 code 3 datas b学
  • Flume系统搭建和使用的一些经验总结-搭建篇

    对于很多公司来说 日志的收集和集中管理是一个必然要经历的阶段 我们公司在经历了一拖再拖之后 终于不得不开始搭建日志收集系统了 对于日志收集系统 我们的首选就是Flume 为何这么坚决呢 难道没有其他工具能做个这个事情么 当然有 不过 考虑到
  • 神经网络 01(介绍)

    一 神经网络 人工神经网络 Artificial Neural Network 简写为ANN 也简称为神经网络 NN 是一种模仿生物神经网络结构和功能的 计算模型 人脑可以看做是一个生物神经网络 由众多的神经元连接而成 各个神经元传递复杂的
  • 【夜莺监控方案】01-n9e-v5-server部署

    文章目录 前言 1 在线一键安装 不推荐 2 自主安装 推荐 官方安装脚本 2 1 mysql 2 2 prometheus 2 3 n9e server 2 4 启动和开机自启 2 5 web查看 3 配置LDAP 前言 相关文档如下 0
  • Python自制音乐下载器,实现听歌自由

    前言 今天发的就是最实用的文章 让你用Python实现听歌自由 不用再担心自己的钱包了 文章末尾名片可直接领取代码 代码实现 导入模块 import os import re from urllib import parse import
  • [人工智能-深度学习-75]:环境 - Windows配置Github、Gitee共存的Git环境

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122261638 目录 前言 前置条件
  • 获取response里的数据

    String out null try ServletOutputStream os servletResponse getOutputStream Field ob ReflectionUtils findField os getClas
  • VS2015/QT creator + Qt5.8.0

    PS 两个版本IDE都试过 VS的报错更详细 方便找bug QT creator的界面更可爱 输入时有绿色的Q弹的图标嘻嘻 QT版本 qt opensource windows x86 msvc2015 64 5 8 0 win10 vs2
  • 微信小程序实例系列

    实战 微信小程序 redux 在原生微信小程序的使用实例 微信小程序 weapp redux的使用文档 微信小程序 Promise then success fail 执行顺序的问题 微信小程序 监听页面停止滚动 微信小程序 CustomB
  • PIM协议原理与配置

    PIM协议原理 PIM Protocol Independent Multicast 协议无关组播 目前常用版本是PIMv2 PIM报文直接封装在IP报文中 协议号为103 PIMv2组播地址为224 0 0 13 在PIM组播域中 以组播
  • LOAM_velodyne学习(三)

    终于到第三个模块了 我们先来回顾下之前的工作 点云数据进来后 经过前两个节点的处理可以完成一个完整但粗糙的里程计 可以概略地估计出Lidar的相对运动 如果不受任何测量噪声的影响 这个运动估计的结果足够精确 没有任何漂移 那我们可以直接利用
  • jenkins报“”Build step 'Execute Windows batch command' marked build as failure“”

    报错信息如下 解决方法
  • JVM垃圾回收器

    1 垃圾回收器的位置 2 垃圾回收器的基本概念 什么是垃圾回收器 JVM 为 Java 提供了垃圾回收机制 是一种偏自动的内存管理机制 简单来说 垃圾回收器会自动追踪所有正在使用的对象 并将其余未被使用的对象标记为垃圾 JVM会自动进行垃圾
  • 前端知识

    http www yyyweb com 5136 html 当经历所有大厂的实习后 小鱼 发布于 2018 08 15 分类 程序人生 阅读 43 评论 0 七月虽然不是一个丰收的季节 但却是一个十分酷热的月份 不知有多少小伙伴跟我一样 顶
  • MySQL server和workbench安装使用

    1 安装Notepad 运行下载的 npp 7 9 Installer x64 exe 2 安装MySQL 将mysql 8 0 22 winx64 zip解压缩 我将其放置D盘根目录下 进入文件夹 在目录中新建文件夹data和文件my i
  • docker登录私有镜像仓库时报错: x509: certificate signed by unknown authority

    文章目录 描述 报错 解决步骤 描述 由于机器在内网无法使用yum或rpm安装docker 所以使用的是离线安装 安装完成后 发现无法登录镜像地址 报错 Error response from daemon Get https swr cn
  • 队列的应用——(一)广度优先搜索

    在队列中 同样可以用于走迷宫 而且会出现一个与之前不同的情形 代码如下 C myqueue h include
  • OTA-apache本地服务器的搭建以及配置说明

    1 下载适配到本机型的Apache msi软件 这里我的电脑是32位的 下载的是apache 2 2 8 win32 x86 no ssl msi 2 apache环境变量的搭建 在计算机系统 gt 高级 gt 环境变量下的PATH后面添加
  • 一次注册表事故--无法打开exe文件

    下载了腾讯手游助手之后发现exe 的安装程序打不开 这就很郁闷了 下载了不同版本的都是打不开 难道是安装包有问题 为什么别人的电脑就能安装 我的电脑exe文件都能打开 为什么就腾讯手游助手不能打开呢 去网上搜集解决方法 百度经验上看到 说是
  • Cuda10.1总结1-概述

    概述 参考文献 官方在线文档 https docs nvidia com cuda archive 10 1 由于网页加载速度比较慢 可以参考如下文档 CUDA C Programming Guide C编程指南 CUDA C Best P