除了第一个 cudaMalloc 调用之外,还有什么特定的函数可以初始化 GPU?

2024-02-18

由于 GPU 上的一些初始化工作,第一个 cudaMalloc 调用很慢(例如 0.2 秒)。是否有任何函数只进行初始化,以便我可以分离时间? cudaSetDevice 似乎将时间减少到 0.15 秒,但仍然没有消除所有初始化开销。


致电

cudaFree(0);

是在 CUDA 运行时强制建立惰性上下文的规范方法。您无法减少开销,这是驱动程序、运行时和操作系统延迟的函数。但是上面的调用可以让您控制程序执行期间这些开销如何/何时发生。

2015年编辑补充一下,运行时 API 中上下文初始化的启发式方法随着时间的推移发生了微妙的变化,因此cudaSetDevice现在建立了一个上下文,所以cudaFree()初始化上下文时没有明确要求调用,您可以使用cudaSetDevice反而。另请注意,首次内核启动时仍会产生一些设置时间,而在此之前情况并非如此。对于内核计时,最好在启动内核之前首先包含一个预热调用,您将有时间消除此设置延迟。看来各种分析工具内置了足够的粒度来避免这种情况,而无需任何额外的 API 调用或内核调用。

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

除了第一个 cudaMalloc 调用之外,还有什么特定的函数可以初始化 GPU? 的相关文章

  • cudaMemcpyToSymbol 与 cudaMemcpy [关闭]

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

    我用 cuda c 编写了一个简单的程序 它可以在 eclipse nsight 上运行 这是源代码 include
  • 在新线程中调用支持 CUDA 的库

    我编写了一些代码并将其放入它自己的库中 该库使用 CUDA 在 GPU 上进行一些处理 我正在使用 Qt 构建 GUI 前端 作为加载 GUI 的一部分 我调用 CUresult res CUdevice dev CUcontext ctx
  • 为什么 PyTorch nn.Module.cuda() 不将模块张量移动到 GPU,而仅将参数和缓冲区移动到 GPU?

    nn Module cuda 将所有模型参数和缓冲区移动到 GPU 但为什么不是模型成员张量呢 class ToyModule torch nn Module def init self gt None super ToyModule se
  • 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
  • cudaMallocManaged() 返回“不支持的操作”

    在 CUDA 6 0 中尝试托管内存给了我operation not supported打电话时cudaMallocManaged include cuda runtime h include
  • CUDA程序导致nvidia驱动程序崩溃

    当我超过大约 500 次试验和 256 个完整块时 我的 monte carlo pi 计算 CUDA 程序导致我的 nvidia 驱动程序崩溃 这似乎发生在 monteCarlo 内核函数中 任何帮助都会受到赞赏 include
  • MPI+CUDA 与纯 MPI 相比有何优势?

    加速应用程序的常用方法是使用 MPI 或更高级别的库 例如在幕后使用 MPI 的 PETSc 并行化应用程序 然而 现在每个人似乎都对使用 CUDA 来并行化他们的应用程序或使用 MPI 和 CUDA 的混合来解决更雄心勃勃 更大的问题感兴
  • 使 CUDA 内存不足

    我正在尝试训练网络 但我明白了 我将批量大小设置为 300 并收到此错误 但即使我将其减少到 100 我仍然收到此错误 更令人沮丧的是 在 1200 个图像上运行 10 epoch 大约需要 40 分钟 有什么建议吗 错了 我怎样才能加快这
  • 如何在 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
  • 运行时 API 应用程序中的 cuda 上下文创建和资源关联

    我想了解如何在 cuda 运行时 API 应用程序中创建 cuda 上下文并与内核关联 我知道这是由驱动程序 API 在幕后完成的 但我想了解一下创作的时间线 首先 我知道 cudaRegisterFatBinary 是第一个 cuda a
  • 设置最大 CUDA 资源

    我想知道是否可以设置 CUDA 应用程序的最大 GPU 资源 例如 如果我有一个 4GB GPU 但希望给定的应用程序只能访问 2GB 如果它尝试分配更多 就会失败 理想情况下 这可以在进程级别或 CUDA 上下文级别上设置 不 目前没有允
  • CUDA 矩阵加法时序,按行与按行比较按栏目

    我目前正在学习 CUDA 并正在做一些练习 其中之一是实现以 3 种不同方式添加矩阵的内核 每个元素 1 个线程 每行 1 个线程和每列 1 个线程 矩阵是方阵 并被实现为一维向量 我只需用以下命令对其进行索引 A N row col 直觉
  • cudaSetDevice() 对 CUDA 设备的上下文堆栈有何作用?

    假设我有一个与设备关联的活动 CUDA 上下文i 我现在打电话cudaSetDevice i 会发生什么 Nothing 主上下文取代了堆栈顶部 主上下文被压入堆栈 事实上 这似乎是不一致的 我编写了这个程序 在具有单个设备的机器上运行 i
  • 从 CUDA 设备写入输出文件

    我是 CUDA 编程的新手 正在将 C 代码重写为并行 CUDA 新代码 有没有一种方法可以直接从设备写入输出数据文件 而无需将数组从设备复制到主机 我假设如果cuPrintf存在 一定有地方可以写一个cuFprintf 抱歉 如果答案已经
  • __device__ __constant__ 常量

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

    CUDA NPP 库支持使用 nppiFilter 8u C1R 命令过滤图像 但不断出现错误 我可以毫无问题地启动并运行 boxFilterNPP 示例代码 eStatusNPP nppiFilterBox 8u C1R oDeviceS
  • 如何读取 GPU 负载?

    我正在编写一个程序 用于监控计算机的各种资源 例如CPU使用率等 我还想监控 GPU 使用情况 GPU 负载 而不是温度 using System using System Collections Generic using System

随机推荐

  • 如果同时使用 Objectify 6.0 和 ,则会出现“DatastoreException:请求缺少必需的身份验证凭据”

    在部署在激活了 java 8 的标准环境上的 App Engine 应用程序上 如果我同时使用 Objectify 6 0 和标签 则会出现以下异常
  • tcmalloc 不生成堆栈跟踪

    我正在运行与 tcmalloc 链接的二进制文件 它没有生成堆栈跟踪 它正在检测泄漏 The output says The 1 largest leaks Leak of 1401231 bytes in 82093 objects al
  • 线程“main”中的异常 java.lang.NoClassDefFoundError: com/google/common/base/Preconditions

    在 Eclipse 中运行 java Map Reduce 应用程序时 遇到以下异常 我也将 commons logging 1 2 jar 文件包含在我的构建路径中 但仍然在下面 我是 hadoop 新手 请帮助我 Exception i
  • 暂停 jQuery 中的默认事件

    我试图延迟 jQuery 脚本中的一个或多个默认事件 上下文是 我想在用户执行某些操作 主要单击 时在默认操作触发之前几秒钟向用户显示一条消息 伪代码 用户点击链接 按钮 元素 用户收到一条弹出消息 指出 您正在离开网站 消息在屏幕上保留
  • ASP.NET MVC 路由 - 尝试在 URL 中包含名称

    我目前有以下路线 routes IgnoreRoute resource axd pathInfo routes IgnoreRoute resource gif pathInfo MvcRoute MappUrl controller a
  • Angular 8 - 如何从回调路由中的url获取数据

    如何获取access tokenkeycloak服务器到我的授权组件 授权 URL 如下所示 回调网址位于http localhost 4200 auth http localhost 4200 auth 这是组件 import Compo
  • Android Google 登录按钮和 Facebook sdk 4+ 按钮布局

    我正在开发一个使用的应用程序google https developers google com branding guidelines sign in button and facebook https developers facebo
  • SignalR 和浏览器连接限制

    我用 SignalR 制作了一个简单的应用程序进行测试 当页面加载时 它会调用服务器上的函数 该函数然后调用在屏幕上打印消息的客户端函数 我这样做是为了检查客户端和服务器功能是否正常工作以及 SignalR 通信是否正常 我的问题是 如果我
  • Colab 突然无法浏览目录

    过去几个月我一直在使用 Google Colab 在连接驱动器和输入 shell 命令时没有出现任何问题 然而今天突然出现了一个错误 我找不到任何解决办法 Colab 似乎神奇地无法浏览目录 对于 cd pwd mkdir 等目录的任何 b
  • WooCommerce - 登录后重定向到上一页

    我一直在寻找可以处理它几个小时的插件和片段 但没有成功 每个答案都不适合我 我的菜单中有 登录 链接 可通往 WooCommerce 我的帐户 页面 其中显示登录表单 我希望客户在成功登录后返回到单击 登录 链接的页面 wp get ref
  • Highcharts - 如何更新角度系列?

    我在柱形图中更新系列数据时遇到问题 一开始 当我的模型为空时 我设置一个空数组作为系列 然后在ngOnchanges方法我映射我的modelData到匹配的格式 不幸的是 图表仍然是空的 这是我的组件代码 export class Colu
  • PHP 验证 PayPal 捐赠

    我如何验证贝宝捐款 在用户面板中我有一个捐赠按钮 一旦有人真正捐款 我就想为他做点什么 但我不知道如何检查用户是否实际捐赠或只是单击了捐赠按钮 看看 Paypal 的IPN https www paypal com ipn 即时付款通知 当
  • 长时间运行 Jupyter 笔记本/实验室?

    我在 ec2 实例上的 tmux 会话中运行 Jupyter 我有运行时间非常长的单元格 但是当我关闭浏览器或笔记本电脑盖子时 笔记本电脑不再写入输出单元格 并且可能会使 python 内核崩溃 这是我在远程实例上启动实验室的方式 jupy
  • 如何在 Prometheus 中推送 Kubernetes 指标而不是拉取?

    我已经在我们的基础设施中配置了 Prometheus 进行监控 在我们的基础设施中 我们有一个正在运行的 EKS 集群 我必须在 Prometheus 中收集 EKS 指标 默认情况下 Prometheus 采用基于拉动的机制 这里我有一个
  • NUnit 最佳实践

    环境 Visual Studio Professional 2008 中的 C WinForms 应用程序 我一直在挖掘有关 NUnit 最佳实践的指导 作为一个在相对孤立的环境中工作的独立程序员 我希望这里的集体智慧可以帮助我 斯科特 怀
  • 如何为 SonarQube.Scanner.MSBuild.exe 提供参数?

    通过在线搜索和查看 sonarqube 文档 我唯一能找到的是 SonarQube Scanner MSBuild exe k KeyOfProject n NameOfProject msbuild exe C projectpath s
  • 如何在特定接口上打开套接字并接收 IPv4 和 IPv6 流量

    使用 IPv4 我可以将 绑定到特定地址来选择将用于接收数据包的接口 在某些情况下 也用于发送数据包 但这不是重点 在双栈 IPv6 IPV4 机器上 我遇到这个问题 我可以创建一个 6 套接字并使用它接收 4 个流量 但如果我想绑定到特定
  • 如何强制 powershell 重新加载自定义模块?

    我创建了一个模块 ActiveDirectory psm1 其中包含 powershellv5 中的一个类 我将该模块导入另一个名为 test ps1 的文件中 然后从该类中调用一个方法 test ps1 包含以下内容 using modu
  • 如何*取消*突出显示选定的文本?

    以前的一个question https stackoverflow com questions 58175015 vba powerpoint how to highlight selected text描述了如何使用 Font Highl
  • 除了第一个 cudaMalloc 调用之外,还有什么特定的函数可以初始化 GPU?

    由于 GPU 上的一些初始化工作 第一个 cudaMalloc 调用很慢 例如 0 2 秒 是否有任何函数只进行初始化 以便我可以分离时间 cudaSetDevice 似乎将时间减少到 0 15 秒 但仍然没有消除所有初始化开销 致电 cu