创建 CUDA 上下文的差异

2023-12-01

我有一个使用三个内核的程序。为了获得加速,我做了一个虚拟内存复制来创建一个上下文,如下所示:

__global__ void warmStart(int* f)
{
    *f = 0;
}

它是在内核之前启动的,我想按如下方式计时:

int *dFlag = NULL;
cudaMalloc( (void**)&dFlag, sizeof(int) );
warmStart<<<1, 1>>>(dFlag);
Check_CUDA_Error("warmStart kernel");

我还阅读了创建上下文的其他最简单的方法,例如cudaFree(0) or cudaDevicesynchronize()。但使用这些 API 调用会比使用虚拟内核带来更糟糕的时间。

强制上下文后,程序的执行时间为0.000031虚拟内核的秒数和0.000064cudaDeviceSynchronize() 和 cudaFree(0) 的秒数。时间是程序 10 次单独执行的平均值。

因此,我得出的结论是,启动内核会初始化以规范方式创建上下文时未初始化的内容。

那么,使用内核和使用 API 调用这两种方式创建上下文有什么区别?

我在 GTX480 上运行测试,在 Linux 下使用 CUDA 4.0。


每个 CUDA 上下文都有执行内核所需的内存分配,但不需要分配这些内存来同步、分配内存或释放内存。上下文内存的初始分配和这些分配的大小调整将被推迟,直到内核需要这些资源为止。这些分配的示例包括本地内存缓冲区、设备堆和 printf 堆。

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

创建 CUDA 上下文的差异 的相关文章

  • 是否可以在设备函数中调用cufft库调用?

    我在主机代码中使用 cuFFT 库调用 它们工作正常 但我想从内核调用 cuFFT 库 早期版本的 CUDA 没有这种支持 但是有了动态并行性 这可能吗 如果有任何关于如何实现这一目标的示例 那就太好了 尽管在 Kepler cc 3 5
  • 使用内置显卡,没有NVIDIA显卡,可以使用CUDA和Caffe库吗?

    使用内置显卡 没有 NVIDIA 显卡 可以使用 CUDA 和 Caffe 库吗 我的操作系统是 ubuntu 15 CPU为 Intel i5 4670 3 40GHz 4核 内存为12 0GB 我想开始学习深度学习 CUDA 适用于 N
  • 在新线程中调用支持 CUDA 的库

    我编写了一些代码并将其放入它自己的库中 该库使用 CUDA 在 GPU 上进行一些处理 我正在使用 Qt 构建 GUI 前端 作为加载 GUI 的一部分 我调用 CUresult res CUdevice dev CUcontext ctx
  • libstdc++.so.6 与 cuda 相关的链接器问题

    今天我在链接我编译的 cuda 内容时遇到了问题 我有一个最新的 debian 测试 w 2 6 32 3 amd64 我整天都在写我的代码 不时编译 没有问题 但在进行了较小的代码更改后 我收到以下错误 gcc o pa CUDA o h
  • Visual Studio - 过滤掉 nvcc 警告

    我正在编写 CUDA 程序 但收到令人讨厌的警告 Warning Cannot tell what pointer points to assuming global memory space 这是来自 nvcc 我无法禁用它 有没有办法过
  • 使 CUDA 内存不足

    我正在尝试训练网络 但我明白了 我将批量大小设置为 300 并收到此错误 但即使我将其减少到 100 我仍然收到此错误 更令人沮丧的是 在 1200 个图像上运行 10 epoch 大约需要 40 分钟 有什么建议吗 错了 我怎样才能加快这
  • 如何并行从数组中删除零值

    如何使用 CUDA 并行有效地从数组中删除零值 有关零值数量的信息是预先可用的 这应该可以简化这项任务 重要的是数字必须保持源数组中的顺序 当被复制到结果数组时 Example 该数组将例如包含以下值 0 0 19 7 0 3 5 0 0
  • 运行时 API 应用程序中的 cuda 上下文创建和资源关联

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

    如果只有部分线程执行 syncthreads 会导致死锁吗 我有一个这样的内核 global void Kernel int N int a if threadIdx x
  • Pytorch CUDA 错误:没有内核映像可用于在带有 cuda 11.1 的 RTX 3090 设备上执行

    如果我运行以下命令 import torch import sys print A sys version print B torch version print C torch cuda is available print D torc
  • 在 Mac OS X 10.7.4 上使用 OpenCL 禁用 Nvidia 看门狗

    我有一个 OpenCL 程序 对于小问题运行良好 但是当运行较大的问题超过 Nvidia 硬件上运行内核的 8 10 秒时间限制时 虽然我没有将显示器连接到我正在计算的 GPU Nvidia GTX580 上 但一旦内核运行大约 8 10
  • Yocto for Nvidia Jetson 由于 GCC 7 而失败 - 无法计算目标文件的后缀

    我正在尝试将 Yocto 与 meta tegra 一起使用 https github com madisongh meta tegra https github com madisongh meta tegra 为 Nvidia Jets
  • 加速Cuda程序

    要更改哪一部分来加速此代码 代码到底在做什么 global void mat Matrix a Matrix b int tempData new int 2 tempData 0 threadIdx x tempData 1 blockI
  • Cuda 6.5 找不到 - libGLU。 (在 ubuntu 14.04 64 位上)

    我已经在我的ubuntu上安装了cuda 6 5 我的显卡是 GTX titan 当我想要制作 cuda 样本之一时 模拟 粒子 我收到这条消息 gt gt gt WARNING libGLU so not found refer to C
  • 如何在cmake中添加cuda源代码的定义

    我使用的是 Visual Studio 2013 Windows 10 CMake 3 5 1 一切都可以使用标准 C 正确编译 例如 CMakeLists txt project Test add definitions D WINDOW
  • 在 cudaFree() 之前需要 cudaDeviceSynchronize() 吗?

    CUDA 版本 10 1 帕斯卡 GPU 所有命令都发送到默认流 void ptr cudaMalloc ptr launch kernel lt lt lt gt gt gt ptr cudaDeviceSynchronize Is th
  • Linux 上的 OpenCL 编译

    我是 OpenCL 的新手 从昨天开始 我尝试使用 OpenCL 进行并行编程 而不是使用我更熟悉且以前体验过的 CUDA 现在我有 NVIDIA GTX 580 GPU Ubuntu Linux 12 04 操作系统和 CUDA SDK
  • CUDA、NPP 滤波器

    CUDA NPP 库支持使用 nppiFilter 8u C1R 命令过滤图像 但不断出现错误 我可以毫无问题地启动并运行 boxFilterNPP 示例代码 eStatusNPP nppiFilterBox 8u C1R oDeviceS
  • cudaMemcpy() 与 cudaMemcpyFromSymbol()

    我试图找出原因cudaMemcpyFromSymbol 存在 似乎 symbol func 可以做的所有事情 nonSymbol cmd 也可以做 symbol func 似乎可以轻松移动数组或索引的一部分 但这也可以使用 nonSymbo
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode

随机推荐

  • Google 地图 V3 邮政编码未返回

    我对谷歌地理编码结果有疑问 我正在对法国城市进行地理编码并希望获取其邮政编码 我的问题是 Google 响应了除邮政编码之外的所有数据 例如 对于 Ach re City 我得到了 address components 结果 Object
  • 使用 C# 修复不受信任数据的反序列化

    我有以下相关的 C 代码 json File ReadAllText path isStudentObject JsonConvert DeserializeObject
  • url 中的双转义序列:请求过滤模块被配置为拒绝包含双转义序列的请求

    在我的 ASP NET MVC 应用程序中 我尝试实现如下所示的 URL 产品 标签 for families 当我尝试使用默认配置运行应用程序时 我收到此消息 其中包含 404 11 响应代码 HTTP 错误 404 11 未找到 请求过
  • 如何使用范围和字符串比较来减少代码的运行时间

    我有以下代码 它完全按照我需要的方式执行 但是 循环运行时间太长 3 分钟以上 我是 VBA 新手 所以我不太确定 1 最好的替代方案是什么 2 如何为该替代方案使用正确的语法并使我的代码完美运行 谢谢 Dim i As Integer F
  • R图-在一点画一个大圆

    我怎样才能提出一个大的 没有彩色圆圈的点 x0 和 y0 只是具有 1 值的列表 所以这只是绘制一个值 points x x0 y y0 col green pch 16 但圆圈有点小 而且是彩色的 要使单个绘图字符更大 请使用cex as
  • 按填充子集对堆叠条中的 x 轴进行排序

    有多个问题 here例如 如何在条形图中按频率排列 x 轴ggplot2 但是 我的目标是根据填充子集的相对频率在堆积条形图中的 X 轴上排列类别 例如 我想按类别的百分比对 x 轴进行排序B在变量中z 这是我第一次尝试仅使用 ggplot
  • 将 WCF 合约移至单独的 dll

    我想将 WCF 合约接口移至第三个 DLL 并在手动生成代理时开始从客户端使用它们 DLL中的那些接口必须有吗 ServiceContract 当我从客户端使用它们来生成代理时属性 知道 Dll 的最佳命名是什么吗 它只有合同和 DTO 在
  • 面临 Visual Studio 2015 和 2013 的突然崩溃

    我最近几天面临这个问题 我的 Visual studio 2015 突然崩溃 在检查应用程序事件日志时 我发现对于每次崩溃 都会在其中输入以下日志 Faulting application name devenv exe version 1
  • 当对 XML 中的节点值求和时,SQL Server 出现奇怪的行为

    我问一个关于求和节点值的问题 对 sql server 2008 中的一些 xml 节点值求和 请考虑这段代码 Declare xml xml set xml
  • window.history.back() 显示“文档已过期”页面,有什么办法吗?

    客户要求用户能够在单击结果后返回到充满搜索结果的页面 现在这是一个简单的 jQuery 调用 a detail back button on click function evt evt preventDefault window hist
  • 使用 javascript 填充角度输入

    设置元素的value不管用 它的行为不像用户输入 当我提交此输入时 弹出窗口告诉我我根本没有填写输入 如何像用户一样填充这个输入元素 div class login input input group div
  • 通用 Windows 平台上的递归 XAML 绑定数据模板

    所以我有一个任务类 它有几个属性 并且里面还可以有一个任务对象列表 子任务 我想在 UWP 上递归显示每个任务及其子任务 根据这篇文章 显然 WPF 为此目的有特殊的 UserControls 递归数据模板可能吗 但它们似乎在 UWP 上不
  • 如何在 Chart.js 中指定刻度位置?

    我正在寻找一种方法来手动指定 x y 刻度位置chart js图表 相当于 matplotlib 的matplotlib pyplot xticks 该文档解释了如何创建自定义刻度格式 但这适用于自动计算的刻度位置 如何指定刻度位置 这是我
  • 计算 nd 数组中相同子数组的最快方法?

    让我们考虑一个二维数组A 2 3 5 7 2 3 5 7 1 7 1 4 5 8 6 0 2 3 5 7 第一行 第二行和最后一行是相同的 我正在寻找的算法应该返回每个不同行的相同行数 每个元素的重复项数 如果可以轻松修改脚本以也计算相同列
  • 从 QTableWidget 读取选定的项目

    如何从 QTableWidget 读取选定的项目 Thanks int QTableWidget currentRow const返回当前项目的行 int QTableWidget currentColumn const返回当前项目的列
  • 静态方法和实例方法同名吗?

    我有一个在 C 中同时具有静态和非静态接口的类 类中是否可以有具有相同名称和签名的静态方法和非静态方法 当我尝试这样做时 出现编译器错误 但出于某种原因 我认为有一种方法可以做到这一点 我错了还是没有办法在同一个类中同时拥有静态和非静态方法
  • 如何循环遍历不同目录下的文件

    我想循环多个文件并对它们应用一个函数 问题是这些文件都位于不同但名称相似的目录中 途径模式相似 但数量根据其所属的家族而变化 例如 我的代码是这样写的 for i in 1 numfiles olddata lt read table pa
  • 为什么 save() 不自动调用 save_m2m()?

    我明白如果我做类似的事情object save commit False 我的 M2M 关系不会自动保存 但如果我稍后打电话object save 我也被迫打电话self save m2m 既然我打电话save 我不明白为什么我需要手动调用
  • 使用 fuzzywuzzy 在数据框中创建新列

    我有一个数据框pandas我在哪里使用fuzzywuzzy将数据框中的第一列与第二列相匹配 我定义了一个函数来创建具有第一列 第二列和部分比率分数的输出 但它不起作用 能否请你帮忙 import csv import sys import
  • 创建 CUDA 上下文的差异

    我有一个使用三个内核的程序 为了获得加速 我做了一个虚拟内存复制来创建一个上下文 如下所示 global void warmStart int f f 0 它是在内核之前启动的 我想按如下方式计时 int dFlag NULL cudaMa