为什么应该使用 CUDA 驱动程序 API 而不是 CUDA 运行时 API?

2023-12-11

为什么我应该使用 CUDA Driver API,在哪些情况下我不能使用 CUDA Runtime API(这比 Driver API 更方便)?


运行时 API 是比驱动程序 API 更高级别的抽象,并且通常更易于使用(性能差距应该很小)。驱动程序 API 是基于句柄的 API,提供更高程度的控制。相反,运行时 API 更容易使用(例如,您可以使用kernel<<<>>>启动语法)。

That "更高程度的控制”意味着使用驱动程序 API,您必须以更详细的方式处理模块初始化和内存管理,但这允许您做更多的事情,例如禁用内核代码的驱动程序 JIT 优化:

CU_JIT_OPTIMIZATION_LEVEL - 应用于生成代码的优化级别 (0 - 4),其中 4 是默认且最高的优化级别。 选项类型:无符号整型

From http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDA__TYPES_gfaa9995214a4f3341f48c5830cea0d8a.html

目前无法通过使用运行时 API 的代码实现这一点。更精细的控制意味着您可能会使事物损坏或变慢,如果您不知道它们是什么,请不要使用它。

尽管您通常应该在应用程序中只使用运行时 API 或驱动程序 API,使用较新的 CUDA 版本,运行时 API 代码可以与驱动程序 API 代码和平共存 (http://docs.nvidia.com/cuda/pdf/CUDA_C_Programming_Guide.pdf)

应用程序可以将运行时 API 代码与驱动程序 API 代码混合在一起。

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

为什么应该使用 CUDA 驱动程序 API 而不是 CUDA 运行时 API? 的相关文章

  • 如何使用 Tensorflow-GPU 和 Keras 修复低易失性 GPU-Util?

    我有一台 4 GPU 机器 在上面运行带有 Keras 的 Tensorflow GPU 我的一些分类问题需要几个小时才能完成 nvidia smi returns Volatile GPU Util which never exceeds
  • “gld/st_throughput”和“dram_read/write_throughput”指标之间有什么区别?

    在 CUDA 可视化分析器版本 5 中 我知道 gld st requested throughput 是应用程序请求的内存吞吐量 然而 当我试图找到硬件的实际吞吐量时 我很困惑 因为有两对似乎合格的指标 它们是 gld st throug
  • OS X 10.8 上的 PyCuda / 多处理问题

    我正在开发一个项目 将计算任务分配给多个 python 进程 每个进程都与其自己的 CUDA 设备关联 生成子进程时 我使用以下代码 import pycuda driver as cuda class ComputeServer obje
  • 大型跨平台软件项目的技巧/资源

    我将开始一个大型软件项目 涉及跨平台 GUI 和大量的数字运算 我计划用 C 和 CUDA 编写大部分应用程序后端 并用 Qt4 编写 GUI 我计划使用 Make 作为我的构建系统 这将是一个只有两名开发人员的项目 一旦我相对深入地了解它
  • Bank 在字长方面存在冲突

    我读过一些关于共享内存的好文章 但我对银行冲突有初步疑问 据说 如果线程 1 和线程 2 从存储体 0 访问字 0 则不存在存储体冲突 但如果他们访问不同的单词 就会出现银行冲突 但我的问题是不同的单词如何可以驻留在一个银行中 由于bank
  • 为什么 cuCtxCreate 返回旧上下文?

    我已经安装了 CUDA SDK 4 2 64 CUDA工具包4 2 64 CUDA 驱动程序 4 2 64 我检查了 windows 中的每个 nvcuda dll 所有这些都是 4 2 版本 但是当我使用驱动程序 api 创建上下文并使用
  • 如何在CUDA应用程序中正确应用线程同步?

    一般来说 我在应用程序中偶尔会使用线程同步 因为我并不经常需要此功能 我并不是真正的高级 C C 程序员 但我也不是初学者 我开始学习 CUDA C 对当今 GPU 与 CPU 的能力相比感到兴奋 我意识到 CUDA 编程主要是关于并行线程
  • 是否可以保证 WaveFront (OpenCL) 中的所有线程始终同步?

    众所周知 有WARP 在CUDA中 和WaveFront 在OpenCL中 http courses cs washington edu courses cse471 13sp lectures GPUsStudents pdf http
  • CUDA 的嵌套循环

    我想将我的 C 代码移植到 CUDA 主要计算部分包含3个for嵌套循环 for int i 0 i lt Nx i for int j 0 j
  • GPU上动态分配内存

    是否可以在内核内的 GPU 全局内存上动态分配内存 我不知道我的答案有多大 因此我需要一种方法为答案的每个部分分配内存 CUDA 4 0 允许我们使用 RAM 这是一个好主意还是会降低速度 可以在内核中使用 malloc 检查以下内容 摘自
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • 在 CUDA 中的设备内存上分配 2D 数组

    如何在 Cuda 中的设备内存中分配和传输 往返于主机 2D 数组 我找到了解决这个问题的方法 我不必展平阵列 内置的cudaMallocPitch 函数完成了这项工作 我可以使用以下命令将阵列传输到设备或从设备传输阵列cudaMemcpy
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • 对 CUDA 操作进行计时

    我需要计算 CUDA 内核执行的时间 最佳实践指南说我们可以使用事件或标准计时函数 例如clock 在Windows中 我的问题是使用这两个函数给出了完全不同的结果 事实上 与实践中的实际速度相比 事件给出的结果似乎是巨大的 我实际上需要这
  • 完全禁用 NVCC 优化

    我正在尝试测量 GPU 上的峰值单精度触发器 为此我正在修改 PTX 文件以在寄存器上执行连续的 MAD 指令 不幸的是 编译器正在删除所有代码 因为它实际上没有做任何有用的事情 因为我没有执行任何数据的加载 存储 是否有编译器标志或编译指
  • CUDA 代码会损坏 GPU 吗?

    在测试包含内存错误的 CUDA 时 我的屏幕被冻结了 重新启动后我无法再检测到显卡 我的代码是否有可能物理损坏该卡 这发生在 Ubuntu 14 04 下 我不知道该卡的型号 因为我无法检测到它 但我记得它是一张相当新的卡 感谢所有的评论我
  • 一维纹理内存访问比一维全局内存访问更快吗?

    我正在测量标准纹理和 1Dtexture 内存访问之间的差异 为此 我创建了两个内核 global void texture1D float doarray int size int index calculate each thread
  • CUDA 中的 JPEG 库

    我正在尝试在 CUDA 中压缩和解压缩图像 到目前为止我已经找到了这个库 http sourceforge net projects cuj2k source navbar http sourceforge net projects cuj
  • 了解流式多处理器 (SM) 和流式处理器 (SP)

    我正在尝试了解 GPU 的基本架构 我已经阅读了很多材料 包括这个非常好的答案 https stackoverflow com a 2213744 2386113 但我仍然很困惑 无法得到一个好的图片 我的理解 GPU 包含两个或多个流式多
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u

随机推荐

  • 如何检测UDP数据包是否丢失? (C#)

    我正在开发 SNTP 客户端 它通过 UDP 从 NTP 服务器获取时间戳 一切正常 我可以下载时间戳并更新 Windows 时钟 但如果 UDP 数据包丢失 我想收到一条消息 如何检测数据包何时丢失 我需要这些信息 因为如果数据丢失我想获
  • 使用 awk 忽略 CSV 文件字段中的逗号

    我试图从 CSV 文件最后一行的第二个字段中获取一个数字 到目前为止 我有这个 awk F END print 2 file path fileName csv 除非最后一行中的第一个字段中有逗号 否则这是有效的 所以对于看起来像这样的行
  • 修改无窗口 QLabel 的 Alpha 通道透明度

    我有一个非常小的 Qt 应用程序 它使用标签来显示 jpeg 图像 而无需先将其放入窗口中 我得到了很多帮助使用 QtGui 显示 QImage 现在我想更改此 jpeg 的 Alpha 通道以使图像部分透明 我尝试过以下操作 但没有任何运
  • 在 Spring 测试中忽略 MongoDB 套接字连接

    我在 spring 项目中使用 mongo 但无法连接到 mongo 服务器 任何人都知道在执行测试时忽略这个 bean 的方法 因为有时我没有 mongo 服务器 并且我不希望此构建失败 我真的很想知道我是否可以使用 SpringRunn
  • NHibernate级联保存

    这是试图将 null 插入 Comment BlogArticleID 出现以下 GenericADOException 无法插入 NHibernate OneToMany BO Comment SQL INSERT INTO Commen
  • C++ 将对象向量中的元素复制到包含该元素的向量中

    我想复制a值来自foos将向量转换为另一个向量 只需int价值 最快的方法是什么 include
  • “内联”关键字和“内联”优化是不同的概念吗?

    我问这个基本问题是为了澄清事实 已提及这个问题 and 目前接受的答案 这没有说服力 但是 那得票数第二高的答案提供了更好的洞察力 但也不完美 在阅读下面的内容时 尝试区分inline keyword和 内联 concept 这是我的看法
  • Bootstrap 4 导航栏未显示[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Bootstrap 4 创建导航栏 这是我的 package json 文件的内容 name NAME here version 1 0 0 description Descripttion ge
  • 为 iPad 和 iPhone 设置输入按钮的样式

    我使用 CSS 来设置网站上输入按钮的样式 但在 IOS 设备上 样式被 Mac 的默认按钮所取代 有没有一种方法可以为 iOS 设计按钮样式 或者可以制作一个行为类似于提交按钮的超链接 您可能正在寻找 webkit appearance
  • Java EE 6 编程安全性、glassfish 和 JDBC 领域

    我正在探索基于 glassfish 服务器的 jdbc 领域的纯 Java EE 方法来实现编程安全性 特别是登录用户 基本上 在我的登录 servlet 中我正在做 String username request getParameter
  • Laravel 4:如何运行原始 SQL?

    我想重命名 Laravel 4 中的表 但不知道该怎么做 SQL 是alter table photos rename to images 如果有 Eloquent 解决方案 我还想知道如何运行原始 SQL 因为有时别无选择 In the
  • R:如何让我的包使用另一个包?

    这是一个非常简单的问题 我正在延长某人的包裹 它当前使用包 A B 它们列在说明文件中 如果我需要包 C 中的函数 将包添加到依赖项 我是否只需在描述文件中添加包就足够了 进入哪个部分 依赖或导入 还需要采取更多其他步骤吗 一旦我的代码需要
  • Google Apps 脚本中的格式化日期

    我试图在提交表单时获取包含简单格式化日期的电子表格 但所有日期 包括时间戳 都被发布为 1969 年 12 月 31 日下午 2 00 我做错了什么 任何帮助将不胜感激 function formSubmitReply e var shee
  • 有没有一个工具可以将swf反编译为actionscript? [复制]

    这个问题在这里已经有答案了 可能的重复 如何反编译 swf 文件 有人知道有这样的工具吗 硕思的反编译器是一个很好的起点
  • 从 pojo 生成 JsonSchema:如何自动添加“描述”?

    我正在尝试从项目中的 pojos 自动生成 JsonSchema 代码如下所示 ObjectMapper mapper new ObjectMapper SchemaFactoryWrapper visitor new SchemaFact
  • 只想比较 TIME 值 MomentJS

    在浏览了一些其他 MomentJS 问题和答案之后 我仍然对如何使用 moment 进行简单比较感到困惑两个不同的时间 我不需要 想要 考虑日期 日期 我的用例是这样的 我正在从配置文件中读取时间表 开始 结束时间 这是使用 Node js
  • 有多少 iPhone 应用程序可以在 Linux 上开发和测试?

    我为客户开发一些 iPhone 应用程序 但我更喜欢在 Linux 机器上工作 我知道您需要在运行 OS X 的计算机上执行某些操作 例如构建最终发行版 在模拟器中运行 iPhone 应用程序等 但我想知道你可以使用普通的 Objectiv
  • 获取图像缩略图文件路径

    我正在尝试获取缩略图paths 而不是位图对象 当我查询这些时 某些缩略图路径由于某种原因为空 我的设备中有1028个缩略图 光标长度确实是1028 但仍然返回空值 我知道有1028个缩略图 因为我检查过 这是我的代码 String pro
  • SQL OVER() 子句 - 何时以及为何有用?

    USE AdventureWorks2008R2 GO SELECT SalesOrderID ProductID OrderQty SUM OrderQty OVER PARTITION BY SalesOrderID AS Total
  • 为什么应该使用 CUDA 驱动程序 API 而不是 CUDA 运行时 API?

    为什么我应该使用 CUDA Driver API 在哪些情况下我不能使用 CUDA Runtime API 这比 Driver API 更方便 运行时 API 是比驱动程序 API 更高级别的抽象 并且通常更易于使用 性能差距应该很小 驱动