为什么我无法与 GTX 480 和 CUDA 5 重叠数据传输和计算?

2023-11-25

我尝试将内核执行与 memcpyasync 重叠,但它不起作用。我遵循编程指南中的所有建议,使用固定内存、不同的流等。我看到内核执行确实重叠,但与内存传输无关。我知道我的卡只有一个复制引擎和一个执行引擎,但是执行和传输应该重叠,对吧?

看来“复制引擎”和“执行引擎”总是强制执行我调用函数的顺序。工作包括执行 [HtoD x2、内核、DtoH] 的 4 个流。如果我在每个流上发出 HtoDx2,Kernel,DtoH 系列,我会在探查器中看到,在第一个 DtoH 操作结束之前,stream2 HtoD 第一个操作不会开始。如果我首先在每个流上发出 HtoD,然后是第二个 HtoD,然后是内核,然后是 DtoH(宽度),我看不到重叠,并且发出顺序也是由 GPU 强制执行的。

我尝试过 CUDA SDK 中给出的 simpleStreams 示例,我也看到了相同的行为。

我附上了一些屏幕截图,显示了 Visual Profiler 和 Nsight for VS2008 中的问题。

附注我没有设置 CUDA_LAUNCH_BLOCKING 环境

Simple Streams Visual Profiler Simple Streams Visual Profiler

MyApp Nsight timeline breadth first MyApp Nsight timeline breadth first

MyApp Nsight timeline depth first MyApp Nsight timeline depth first

edit:

添加额外的 x4 内核(每个流总共 2HtoD、5 个内核、1DtoH)--> 如果我在使用和不使用 --concurrent-kernels-off 的情况下运行 nvprof,则经过的时间是相同的。如果我设置 env CUDA_LAUNCH_BLOCKING=1,那么我会看到性能提升(从命令行)达 7.5%!

系统规格:

  • Windows 7的
  • 第一个 PCI-E 插槽中的 NVIDIA 6800 VGA
  • 第二个 PCIE 插槽中的 GTX 480
  • NVIDIA 驱动程序:306.94
  • 视觉工作室2008
  • CUDA v5.0
  • 视觉分析器5.0
  • 夜视3.0

正如我在评论中所说,CUDA 驱动程序确实存在一个 BUG,它使得流式传输无法与我的设置配合使用。我测试了 1.1 功能卡 (8800 GTS) 和 3.5 功能卡 (GTX Titan),这两张卡都工作正常。某些 Fermi 卡似乎有问题(我的 GTX 480 无法工作)。

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

为什么我无法与 GTX 480 和 CUDA 5 重叠数据传输和计算? 的相关文章

  • Erlang 如何并发处理访问邮箱

    关于如何使用erlang邮箱的信息有很多 但很少找到一篇论文或文档描述erlang如何在VM内部同时实际访问邮箱 据我了解 Erlang VM 必须执行锁定或 CAS 操作以确保消息完整性 erlang幕后有没有什么精巧的方法 我假设您所说
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • 无法在 CUDA 中执行设备内核

    我正在尝试在全局内核中调用设备内核 我的全局内核是矩阵乘法 我的设备内核正在查找乘积矩阵每列中的最大值和索引 以下是代码 device void MaxFunction float Pd float max int x threadIdx
  • 设置最大 CUDA 资源

    我想知道是否可以设置 CUDA 应用程序的最大 GPU 资源 例如 如果我有一个 4GB GPU 但希望给定的应用程序只能访问 2GB 如果它尝试分配更多 就会失败 理想情况下 这可以在进程级别或 CUDA 上下文级别上设置 不 目前没有允
  • CUDA 常量内存是否应该被均匀地访问?

    我的 CUDA 应用程序的恒定内存小于 8KB 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 如果是 如何确保所有线程同时访问同一地址 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 是的 这缓存本身每
  • 尝试构建我的 CUDA 程序时出现错误 MSB4062

    当我尝试构建我的第一个 GPU 程序时 出现以下错误 有什么建议可能会出什么问题吗 错误 1 错误 MSB4062 Nvda Build CudaTasks SanitizePaths 任务 无法从程序集 C Program 加载 文件 M
  • ConcurrentLinkedDeque 与 LinkedBlockingDeque

    我需要一个线程安全的 LIFO 结构 并发现我可以使用线程安全的实现Deque为了这 Java 7 引入了ConcurrentLinkedDeque http docs oracle com javase 7 docs api java u
  • C# 是否可以中断 ThreadPool 内的特定线程?

    假设我已将一个工作项排入队列ThreadPool 但是如果没有要处理的数据 从BlockingQueue 如果队列为空并且队列中不再有工作 那么我必须调用Thread Interrupt方法 如果我想中断阻塞任务 但是如何用 a 做同样的事
  • 验证随时间变化的连续条件

    我想开发一个Python程序 从某个时刻开始 等待60秒再执行操作 该程序必须具有的另一个功能是 如果我更新初始时间 它必须开始检查条件 我想过用线程来做 但我不知道如何停止线程并以新的开始时间重新启动它 import thread imp
  • __device__ __constant__ 常量

    有什么区别吗 在 CUDA 程序中定义设备常量的最佳方法是什么 在 C 主机 设备程序中 如果我想将常量定义在设备常量内存中 我可以这样做 device constant float a 5 constant float a 5 问题 1
  • 如何在 AppEngine (GAE) 中进行数据库锁定?

    在 GAE 中 我有一个充满 一次性 的表 诸如 最后使用的序列号 之类的东西 这些东西并不真正属于其他表 它是一个简单的字符串键和字符串值对 我有一些代码来获取命名整数并递增它 如下所示 PersistenceCapable detach
  • 如何使用 CUDA/Thrust 对两个数组/向量根据其中一个数组中的值进行排序

    这是一个关于编程的概念问题 总而言之 我有两个数组 向量 我需要对一个数组 向量进行排序 并将更改传播到另一个数组 向量中 这样 如果我对 arrayOne 进行排序 则对于排序中的每个交换 arrayTwo 也会发生同样的情况 现在 我知
  • 为什么在 10 个 Java 线程中递增一个数字不会得到 10 的值?

    我不明白 a 的值为0 为什么 a 不是10 那段代码的运行过程是怎样的 是否需要从Java内存模型来分析 这是我的测试代码 package com study concurrent demo import lombok extern sl
  • 可能的 std::async 实现错误 Windows

    看来 std async 的 Windows 实现存在错误 在重负载下 大约每秒启动 1000 个异步线程 异步任务永远不会被调度 并且等待返回的 future 会导致死锁 请参阅这段代码 使用延迟启动策略而不是异步进行修改 Bundlin
  • 断点会停止所有线程吗?

    如果我的程序中有两个线程同时运行 并在其中一个线程上设置了断点 那么当遇到此断点时 另一个线程也会停止 还是会继续执行 我用 Java 编写并使用 NetBeans 断点可以选择它们的行为方式 挂起单个线程或所有线程
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • Java 中的无锁并发链表

    我想使用像中描述的链接列表this http reference kfupm edu sa content l o lock free linked lists using compare and 3368 pdf纸 但是 我在网上没有找到
  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • 使用连接池后如何处理过多的并发连接?

    Scenario 假设您有一个拥有大量流量的网站或应用程序 即使使用数据库连接池 性能也会受到真正的打击 站点 应用程序甚至可能崩溃 因为并发连接太多 Question 人们有什么选择来处理这个问题 我的想法 我在想有这个问题的人可以创建多

随机推荐

  • 查找字符串中所有重复的子字符串以及它们出现的频率

    Problem 我需要满足以下条件的所有字符序列 字符序列必须出现多次 LE 1 因此无效 字符序列必须长于 1 个字符 因此 M 2 无效 字符序列不得是出现相同次数的较长现有序列的一部分 因此 如果 LIO 2 存在 则 LI 2 无效
  • 我对 getline+strings 不明白什么?

    这是我第一次使用 stackoverflow 我一直无法找到有关 getline 的所需信息 我正在参加一个简单的工程转移编程课程 因此我们编写的代码非常简单 我在这里想做的就是将用户定义数量的问题和答案放入两个不同的数组中 我的 whil
  • 我想每秒调用 20 次 installTapOnBus:bufferSize:format:block:

    我想实时显示麦克风输入的波形 我已经使用installTapOnBus bufferSize format block 实现了 这个函数一秒钟调用3次 我想设置这个函数每秒被调用20次 我可以在哪里设置 AVAudioSession aud
  • 为什么在调用 getWriter() 后无法更新 HttpServletResponse 标头?

    今天下午修复了一个问题后 我一直在网上进行挖掘 其中添加到 HttpServletResponse 的 Cookie 没有正确反映在响应标头中 因为我们的 Servlet 之前已经检索了响应的 PrintWriter 即 response
  • TransitionWithView 和 animateWithDuration 的问题

    我有以下问题transitionWithView and animateWithDuration 我的一个animateWithDuration块不会转换 它是突然的变化 并且transitionWithView不会暂时禁用用户交互 我已经
  • 动态查找代表原始 Java 类型的类

    我需要在 Java 中进行一些反射方法调用 这些调用将包括具有基本类型 int double 等 参数的方法 反射查找方法时指定此类类型的方式有 int class double class 等 挑战在于我接受来自外部源的输入 该输入将动态
  • 正文超出固定导航栏的顶部

    我有一个固定的导航栏 滚动时跟随 但是 在滚动标签内的文本 图像时 它似乎位于导航栏的前面 而不是后面 为什么是这样 我该如何修复它 Fiddle nav background color 262626 height 60px width
  • 在Linux上自动杀死消耗过多内存或停止的进程

    我想要一个监视进程并在以下情况下杀死该进程的 系统 该进程超出了某些内存要求 该进程在一段时间内没有响应来自 系统 的消息 我认为这个 系统 可能像监控过程一样简单 有关如何完成此操作的代码示例将很有用 我当然不反对对这个问题采取完全不同的
  • 如何使用 LinqToTwitter 获取主题标签上的所有推文

    我正在尝试获取属于主题标签的所有推文 计算推文总数 我的功能在这里 如何使用 maxID 和sinceID 来获取所有推文 代替 数 的是什么 我不知道 if maxid null var searchResponse await from
  • 仅在 PrimeFaces 中通过 p:dataTable 进行更新后刷新页面时才会显示 BLOB 图像

    我在 MySQL 上显示以 BLOB 形式存储的图像
  • Storyboard DoubleAnimation 不适用于 StackPanel 高度属性

    我正在尝试使用 DoubleAnimation 来更改 StackPanel 的 Height 属性 该代码不会引发任何异常 但动画不起作用
  • 如果使用桥接标头,Xcode 7 不会自动完成

    所以 问题是 当我使用桥接标头导入 Xcode 7 中的任何内容时 Xcode 不会自动完成我的代码 无论我是否导入给定的框架 当前 swift 中的头文件 如果它只是在桥接标头中 Xcode 不会自动完成我的代码自动完成 尽管情况因框架而
  • SCRIPT5:在 IE9 中文件上传时访问被拒绝

    使用文件上传框发布表单时document forms 0 submit 在 ie 9 上 我们收到一条错误消息 SCRIPT5 Access is denied 如果我再点击几次就可以了 作为一种解决方法 我发现了错误并尝试了几次 这似乎工
  • 验证 Paperclip 中的扩展 - Ruby on Rails

    我发现 Paperclip 可以验证文件内容类型 即 image jpeg 但我想专门验证扩展名 这是因为我正在使用一个不起眼的扩展 它不会获得一致的内容类型 有人知道这是否可行 或者是一个好方法吗 猜猜看 没有必要用回形针的方法来验证 你
  • 如何使用 HTML 创建菜单树

    我需要使用 HTML 创建一个菜单树 我在谷歌上进行了搜索 但他们提供了一些软件供下载以创建此内容 但我需要一些脚本和 HTML 标签来执行此操作 谁能帮我解决这个问题 提前致谢 这是一个非常简单的开始 http www dynamicdr
  • 如何利用转义来防止XSS攻击?

    为了防止XSS攻击 输出 已启用转义 上面来自symfony 但我不明白 XSS 是 跨站脚本 的缩写 当您设法将脚本 通常是 javascript 偷偷溜到其他人的网站上并在那里恶意运行时 就会发生跨站点脚本攻击 当用户向网站输入内容时
  • 这个 Dictionary 异常怎么可能?

    给出以下堆栈跟踪 MESSAGE Value cannot be null Parameter name key SOURCE mscorlib TARGETSITE Void ThrowArgumentNullException Syst
  • 如何在 Flutter 中使用 Firebase 更改密码

    我想在 Flutter 中使用 Firebase 更改当前用户密码 任何人都可以帮助我如何实施更改密码方法吗 我知道这是一篇迟到的文章 但现在可以更改登录用户的密码 请务必通知用户重新登录 因为这是敏感操作 void changePassw
  • urlopen 返回有效链接的重定向错误

    我正在用 python 构建一个损坏的链接检查器 构建正确识别使用浏览器访问时无法解析的链接的逻辑变得很繁琐 我找到了一组链接 我可以在这些链接中始终使用抓取工具重现重定向错误 但在浏览器中访问时可以完美解决 我希望我能在这里找到一些见解
  • 为什么我无法与 GTX 480 和 CUDA 5 重叠数据传输和计算?

    我尝试将内核执行与 memcpyasync 重叠 但它不起作用 我遵循编程指南中的所有建议 使用固定内存 不同的流等 我看到内核执行确实重叠 但与内存传输无关 我知道我的卡只有一个复制引擎和一个执行引擎 但是执行和传输应该重叠 对吧 看来