为什么应该使用 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? 的相关文章

  • cudaMemcpyToSymbol 与 cudaMemcpy [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图找出
  • Golang调用CUDA库

    我正在尝试从 Go 代码中调用 CUDA 函数 我有以下三个文件 test h int test add void test cu global void add int a int b int c c a b int test add v
  • CUDA:如何在设备上填充动态大小的向量并将其内容返回到另一个设备函数?

    我想知道哪种技术可以填充设备上的动态大小数组 int row 在下面的代码中 然后返回其内容 以供另一个设备函数使用 为了将问题置于上下文中 下面的代码尝试使用在 GPU 上运行的高斯 勒让德求积来跨越勒让德多项式基组中的任意函数 incl
  • libstdc++.so.6 与 cuda 相关的链接器问题

    今天我在链接我编译的 cuda 内容时遇到了问题 我有一个最新的 debian 测试 w 2 6 32 3 amd64 我整天都在写我的代码 不时编译 没有问题 但在进行了较小的代码更改后 我收到以下错误 gcc o pa CUDA o h
  • Cuda Bayer/CFA 去马赛克示例

    我编写了一个 CUDA4 Bayer 去马赛克例程 但它比在 16 核 GTS250 上运行的单线程 CPU 代码慢 块大小是 16 16 图像暗淡是 16 的倍数 但更改此值并不会改善它 我做了什么明显愚蠢的事情吗 calling rou
  • cudaMemcpyToSymbol 的问题

    我正在尝试复制到恒定内存 但我不能 因为我对 cudaMemcpyToSymbol 函数的用法有误解 我正在努力追随this http developer download nvidia com compute cuda 4 1 rel t
  • Nvidia Theano docker 镜像不可用

    尝试运行 docker 命令 nvidia docker run d p 8888 8888 e PASSWORD 123abcChangeThis theano secure start notebook sh Then open you
  • CUDA 中的广义霍夫变换 - 如何加快分箱过程?

    正如标题所示 我正在对并行计算机视觉技术进行一些个人研究 使用 CUDA 我尝试实现 GPGPU 版本的霍夫变换 我遇到的唯一问题是在投票过程中 我调用atomicAdd 来防止多个同时写入操作 但我似乎没有获得太多的性能效率 我在网上搜索
  • cuda cpu功能-gpu内核重叠

    我在尝试开发以练习 CUDA 的 CUDA 应用程序时遇到并发问题 我想通过使用 cudaMemecpyAsync 和 CUDA 内核的异步行为来共享 GPU 和 CPU 之间的工作 但我无法成功重叠 CPU 执行和 GPU 执行 它与主机
  • cuda 共享内存 - 结果不一致

    我正在尝试并行缩减以对 CUDA 中的数组求和 目前我传递一个数组来存储每个块中元素的总和 这是我的代码 include
  • 传递给 CUDA 的结构中的指针

    我已经搞砸了一段时间了 但似乎无法正确处理 我正在尝试将包含数组的对象复制到 CUDA 设备内存中 然后再复制回来 但当我遇到它时我会跨过那座桥 struct MyData float data int dataLen void copyT
  • Visual Studio - 过滤掉 nvcc 警告

    我正在编写 CUDA 程序 但收到令人讨厌的警告 Warning Cannot tell what pointer points to assuming global memory space 这是来自 nvcc 我无法禁用它 有没有办法过
  • MPI+CUDA 与纯 MPI 相比有何优势?

    加速应用程序的常用方法是使用 MPI 或更高级别的库 例如在幕后使用 MPI 的 PETSc 并行化应用程序 然而 现在每个人似乎都对使用 CUDA 来并行化他们的应用程序或使用 MPI 和 CUDA 的混合来解决更雄心勃勃 更大的问题感兴
  • 如何在 Visual Studio 2010 中设置 CUDA 编译器标志?

    经过坚持不懈的得到error identifier atomicAdd is undefined 我找到了编译的解决方案 arch sm 20旗帜 但是如何在 VS 2010 中传递这个编译器标志呢 我已经尝试过如下Project gt P
  • 如何并行从数组中删除零值

    如何使用 CUDA 并行有效地从数组中删除零值 有关零值数量的信息是预先可用的 这应该可以简化这项任务 重要的是数字必须保持源数组中的顺序 当被复制到结果数组时 Example 该数组将例如包含以下值 0 0 19 7 0 3 5 0 0
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • CUDA 常量内存是否应该被均匀地访问?

    我的 CUDA 应用程序的恒定内存小于 8KB 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 如果是 如何确保所有线程同时访问同一地址 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 是的 这缓存本身每
  • 在 __device/global__ CUDA 内核中动态分配内存

    根据CUDA 编程指南 http developer download nvidia com compute cuda 3 2 prod toolkit docs CUDA C Programming Guide pdf 第 122 页 可
  • __device__ __constant__ 常量

    有什么区别吗 在 CUDA 程序中定义设备常量的最佳方法是什么 在 C 主机 设备程序中 如果我想将常量定义在设备常量内存中 我可以这样做 device constant float a 5 constant float a 5 问题 1
  • cudaMemcpy() 与 cudaMemcpyFromSymbol()

    我试图找出原因cudaMemcpyFromSymbol 存在 似乎 symbol func 可以做的所有事情 nonSymbol cmd 也可以做 symbol func 似乎可以轻松移动数组或索引的一部分 但这也可以使用 nonSymbo

随机推荐

  • 如何检测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 更高级别的抽象 并且通常更易于使用 性能差距应该很小 驱动