cuda 中预取(通过 C 代码)

2023-11-23

我正在通过 C 代码在 CUDA (Fermi GPU) 中进行数据预取。 Cuda 参考手册讨论了 ptx 级别代码的预取,而不是 C 级别代码的预取。

任何人都可以向我提供一些有关通过 cuda 代码(cu 文件)预取的文档或内容吗?任何帮助,将不胜感激。


根据PTX手册以下是 PTX 中预取的工作原理:

enter image description here

您可以将 PTX 指令嵌入到 CUDA 内核中。这是一个小样本NVIDIA 的文档:

__device__ int cube (int x)
{
  int y;
  asm("{\n\t"                       // use braces for local scope
      " .reg .u32 t1;\n\t"           // temp reg t1,
      " mul.lo.u32 t1, %1, %1;\n\t" // t1 = x * x
      " mul.lo.u32 %0, t1, %1;\n\t" // y = t1 * x
      "}"
      : "=r"(y) : "r" (x));
  return y;
}

您可能会得出以下 C 语言预取函数的结论:

__device__ void prefetch_l1 (unsigned int addr)
{

  asm(" prefetch.global.L1 [ %1 ];": "=r"(addr) : "r"(addr));
}

注意:预取需要计算能力2.0或更高版本的GPU。相应地传递正确的编译标志-arch=sm_20

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

cuda 中预取(通过 C 代码) 的相关文章

  • CUDA 常量内存是否应该被均匀地访问?

    我的 CUDA 应用程序的恒定内存小于 8KB 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 如果是 如何确保所有线程同时访问同一地址 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 是的 这缓存本身每
  • 在 cudaFree() 之前需要 cudaDeviceSynchronize() 吗?

    CUDA 版本 10 1 帕斯卡 GPU 所有命令都发送到默认流 void ptr cudaMalloc ptr launch kernel lt lt lt gt gt gt ptr cudaDeviceSynchronize Is th
  • CUDA、NPP 滤波器

    CUDA NPP 库支持使用 nppiFilter 8u C1R 命令过滤图像 但不断出现错误 我可以毫无问题地启动并运行 boxFilterNPP 示例代码 eStatusNPP nppiFilterBox 8u C1R oDeviceS
  • CUDA - 将 CPU 变量传输到 GPU __constant__ 变量

    与 CUDA 的任何事情一样 最基本的事情有时也是最难的 所以 我只想将变量从 CPU 复制到 GPUconstant变量 我很难过 这就是我所拥有的 constant int contadorlinhasx d int main int
  • Oracle JDBC 预取:如何避免 RAM 不足/如何使 oracle 更快高延迟

    使用 Oracle java JDBC ojdbc14 10 2 x 加载包含多行的查询需要很长时间 高延迟环境 这显然是 Oracle JDBC 中的默认预取默认大小 10 每 10 行需要一次往返时间 我正在尝试设置一个激进的预取大小来
  • 将 nvidia 运行时添加到 docker 运行时

    我正在运行虚拟机GCP配备特斯拉 GPU 并尝试部署一个PyTorch基于应用程序使用 GPU 加速 我想让 docker 使用这个 GPU 可以从容器访问它 我设法在主机上安装了所有驱动程序 并且该应用程序在那里运行良好 但是当我尝试在
  • 如何运行和理解CUDA Visual Profiler?

    我已经设置了 CUDA 5 0 并且我的 CUDA 项目运行良好 但我不知道如何使用 Visual Profiler 分析我的 CUDA 项目 如何运行它 我还需要安装更多吗 又该如何做呢 我的电脑使用Window 7 64位 CUDA 5
  • cuda 文件组织的有效方式:.cpp .h .cu .cuh .curnel 文件

    cuda最容易理解 最高效的代码组织是什么 经过一番调查后 我发现 cuda 函数声明应位于 cuh 文件中 实现位于 cu 文件中 内核函数实现位于 curnel 文件中 其他 C 内容通常在 cpp 和 h 文件中 最近我发布了一个问题
  • CUDA 5.0错误LNK2001:cuda方法无法解析的外部符号

    我的链接器有错误 1 gt ManifestResourceCompile 1 gt All outputs are up to date 1 gt kernel cu obj error LNK2001 unresolved extern
  • cudaDeviceScheduleBlockingSync 和 cudaDeviceScheduleYield 之间有什么区别?

    正如这里所说 如何减少 CUDA 同步延迟 延迟 https stackoverflow com questions 11953722 how to reduce cuda synchronize latency delay 等待设备结果有
  • CUDA 的嵌套循环

    我想将我的 C 代码移植到 CUDA 主要计算部分包含3个for嵌套循环 for int i 0 i lt Nx i for int j 0 j
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • 在 Cuda 中简单添加两个 int,结果始终相同

    我开始了学习Cuda的旅程 我正在玩一些 hello world 类型的 cuda 代码 但它不起作用 我不知道为什么 代码非常简单 取两个整数并将它们添加到 GPU 上并返回结果 但无论我将数字更改为什么 我都会得到相同的结果 如果数学那
  • 使用 Cuda 并行读取多个文本文件

    我想使用 CUDA 在多个文件中并行搜索给定字符串 我计划使用 pfac 库来搜索给定的字符串 问题是如何并行访问多个文件 示例 我们有一个包含 1000 个文件的文件夹 需要搜索 这里的问题是我应该如何访问给定文件夹中的多个文件 应该动态
  • 如何安装libcusolver.so.11

    我正在尝试安装 Tensorflow 但它要求 libcusolver so 11 而我只有 libcusolver so 10 有人可以告诉我我做错了什么吗 这是我的 Ubuntu nvidia 和 CUDA 版本 uname a Lin
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl
  • 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 包含两个或多个流式多
  • goto 指令对 CUDA 代码中扭曲内发散的影响

    对于CUDA中简单的warp内线程发散 我所知道的是SM选择一个重新收敛点 PC地址 并在两个 多个路径中执行指令 同时禁用未采用该路径的线程的执行效果 例如 在下面的代码中 if threadIdx x lt 16 A do someth

随机推荐

  • SonarQube 重构此方法以降低其认知复杂性

    我有以下实用方法 并且我正在使用多个 if 语句并遇到认知复杂性问题 我浏览了一些链接 但我无法理解应该如何更改代码而不影响此方法的用户 public static boolean isWrapperValid WrapperClass w
  • 如何在gtk3-python中执行后台任务?

    我有这个主线 Gui py from gi repository import Gtk Gdk import Process import gobject class gui def init self self window Gtk Wi
  • JavaScript 日期差异

    我在使用 DateDiff 函数时遇到问题 我试图找出两个日期 时间之间的差异 我读过这篇文章 在Javascript中计算日期差异的最佳方法是什么 我还看了这个教程 http www javascriptkit com javatutor
  • 如何查找当前页面使用了哪些CSS文件[重复]

    这个问题在这里已经有答案了 我的页面上有很多 CSS 文件 但其中很多文件并没有被样式使用 是否可以确定哪些文件被页面使用 哪些文件不被页面使用 Use http getfirebug com 来调试页面 当查看 css 时 它将引用使用的
  • ng 服务无法在 Docker 容器中工作

    我有这个Docker Compose 配置我只需创建一个 NodeJS 容器并在其中安装 Angular CLI After a docker compose up d 我可以在容器内通过 SSH 连接docker compose run
  • 将程序拆分为 4 个线程比单个线程慢

    过去一周我一直在编写一个光线追踪器 并且已经达到了足够多线程的程度 我尝试过使用 OpenMP 来并行化它 但是使用更多线程运行它实际上比使用一个线程运行它要慢 阅读其他类似的问题 尤其是有关 OpenMP 的问题 一个建议是 gcc 可以
  • Django 服务器错误:端口已在使用中

    重新启动 Django 服务器显示以下错误 this port is already running 此问题专门出现在 Ubuntu 上 而不是其他操作系统上 如何释放端口以重新启动服务器 更简单的解决方案只需键入sudo fuser k
  • 24小时制转换为12小时制?

    您好 我正在使用 Android 应用程序 我正在尝试弄清楚如何将 24 小时时间转换为 12 小时时间 Example 24 hour format 12 18 00 to 12 hour format 12 18pm 尝试使用Simpl
  • 将列表分割成 n 个几乎相等长度的分区[重复]

    这个问题在这里已经有答案了 我正在寻找一种快速 干净 Pythonic 的方法来将列表精确地划分为 n 个几乎相等的分区 partition 1 2 3 4 5 5 gt 1 2 3 4 5 partition 1 2 3 4 5 2 gt
  • select * from table_name where 列如 ' '

    我需要查找包含 html 代码 例如 nbsp 的记录但是当我尝试运行select from table name where column like nbsp 我收到提示询问 nbsp 的值 我猜数据库认为nbsp是一个参数 我想知道是否
  • 为什么 ad hoc ipa 在一台设备上安装失败,但在另一台具有相同 iOS 版本的设备上安装成功?

    我有一位客户 其 iPad 2 iOS 5 0 能够安装临时 ipa 但他的 iPhone 也是 iOS 5 0 完全相同的版本 在尝试使用 Windows iTunes 安装时在他的设备上收到以下消息 iTunes 同步 应用程序名称 安
  • 如何从 GitHub Actions 部署 AWS Amplify 应用程序?

    我想从 GitHub Actions 控制 Amplify 部署 因为 Amplify 自动构建 不提供GitHub环境 不观察 CI 的故障并无论如何都会进行部署 或者 要求我复制 CI 设置并在 Amplify 中重新运行它 不支持运行
  • ASP.NET 解析器错误无法加载后面的代码

    嘿我收到以下错误 解析器错误 描述 解析服务此请求所需的资源时发生错误 请查看以下特定解析错误详细信息并适当修改您的源文件 解析器错误消息 无法加载类型 AddToCart 来源错误 Line 1 Line 2 Line 3
  • 自动生成Java源代码

    我正在寻找一种方法 根据类中定义的字段 在现有 Java 源代码文件中自动生成新方法的源代码 本质上 我希望执行以下步骤 读取并解析SomeClass java 遍历源代码中定义的所有字段 添加源码方法someMethod Save Som
  • 什么是“程序类型已存在”?

    当我尝试构建我的项目时 我收到此错误 程序类型已存在 android support v4 accessibilityservice AccessibilityServiceInfoCompat Message kind ERROR tex
  • 角度反应形式:动态选择下拉值不具有约束力

    我有两个数据数组 AssociatedPrincipals 以前保存的数据 和 ReferencePrincipals 在下拉控件中填充的静态数据 我正在努力从 AssociatedPrincipals 获取先前的值以在 a 中显示 选择动
  • 如何转义 RMarkdown 块?

    我正在尝试将 RMarkdown 中的代码块的语法呈现为 pdf 最终输出应该是这样的 r some code 而不仅仅是 some code 可以在 RStudio 网站上找到解决此问题的最佳选项 请参阅有关将逐字 R 块放入 rmark
  • 将“if/else”与 OnClick 结合使用

    首先 是否可以直接在带有 onclick 属性的 html 中编写 if else 语句 如果是这样 为什么我的代码不起作用 所以这是一个按钮 Calc Input value 指的是文本输入 如果该字段为 0 或空白 我想显示错误消息 在
  • R:如何在没有辅助文件的情况下将光栅写入磁盘?

    我正在使用 R 中的 Raster 包以 ERMapper 格式 ers 编写数据集 但我对生成的 aux xml 辅助文件有问题 我实际上对此不感兴趣 简单的例子 rst lt raster ncols 15000 nrows 10000
  • cuda 中预取(通过 C 代码)

    我正在通过 C 代码在 CUDA Fermi GPU 中进行数据预取 Cuda 参考手册讨论了 ptx 级别代码的预取 而不是 C 级别代码的预取 任何人都可以向我提供一些有关通过 cuda 代码 cu 文件 预取的文档或内容吗 任何帮助