如何区分共享内存和全局内存的指针?

2023-12-30

在 CUDA 中,给定指针的值或变量的地址,是否有一个内在函数或另一个 API 可以内省指针引用的地址空间?


CUDA 头文件sm_20_intrinsics.h定义函数

__device__ unsigned int __isGlobal(const void *ptr)
{
  unsigned int ret;
  asm volatile ("{ \n\t"
                "    .reg .pred p; \n\t"
                "    isspacep.global p, %1; \n\t"
                "    selp.u32 %0, 1, 0, p;  \n\t"
#if (defined(_MSC_VER) && defined(_WIN64)) || defined(__LP64__)
                "} \n\t" : "=r"(ret) : "l"(ptr));
#else
                "} \n\t" : "=r"(ret) : "r"(ptr));
#endif

  return ret;
}

该函数返回1如果通用地址ptr位于全局内存空间中。 它返回0 if ptr位于共享、本地或常量内存空间中。

PTX指令isspacep承担繁重的工作。看起来我们应该能够以这种方式构建类似的函数:

__device__ unsigned int __isShared(const void *ptr)
{
  unsigned int ret;
  asm volatile ("{ \n\t"
                "    .reg .pred p; \n\t"
                "    isspacep.shared p, %1; \n\t"
                "    selp.u32 %0, 1, 0, p;  \n\t"
#if (defined(_MSC_VER) && defined(_WIN64)) || defined(__LP64__)
                "} \n\t" : "=r"(ret) : "l"(ptr));
#else
                "} \n\t" : "=r"(ret) : "r"(ptr));
#endif

  return ret;
}

Update:

__isGlobal()和别的地址空间谓词函数中描述了CUDA C++ 编程指南 https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#address-space-predicate-functions.

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

如何区分共享内存和全局内存的指针? 的相关文章

  • 如何获取要执行的 PTX 文件

    我知道如何生成 ptx文件来自 cu以及如何生成 cubin文件来自 ptx 但我不知道如何获得最终的可执行文件 更具体地说 我有一个sample cu文件 编译为sample ptx 然后我使用 nvcc 来编译sample ptx to
  • 加强托管线程和操作系统线程之间的关系(CUDA 用例)

    Problem 我正在尝试创建一个与 net 良好集成的 CUDA 应用程序 设计目标是拥有多个可以从托管代码调用的 CUDA 函数 数据还应该能够在函数调用之间保留在设备上 以便可以将其传递给多个 CUDA 函数 重要的是 每个单独的数据
  • 无法从静态初始化代码启动 CUDA 内核

    我有一个在其构造函数中调用内核的类 如下所示 标量场 h include
  • 构建 Erlang 服务器场(用于业余爱好项目)最便宜的方法是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 假设我们有一个 本质上并行 的问题需要用 Erlang 软件来解决 我们有很多并行进程 每个进程都执行顺序代码 不是数字运算 并且我们向它们投入的 C
  • 指定 NVCC 用于编译主机代码的编译器

    运行 nvcc 时 它始终使用 Visual C 编译器 cl exe 我怎样才能让它使用GCC编译器 设置CC环境变量到gcc没有修复它 我在可执行文件帮助输出中也找不到任何选项 在 Windows 上 NVCC 仅支持 Visual C
  • 将 GPUJPEG 项目移植到 Windows

    我目前正在尝试移植 GPUJPEG 在 Sourceforge 上 http sourceforge net projects gpujpeg 库 基于 CUDA 从 Unix 到 Windows 现在我被卡住了 我不知道发生了什么或为什么
  • 如何用Go语言的cgo编译Cuda源码?

    我用 cuda c 编写了一个简单的程序 它可以在 eclipse nsight 上运行 这是源代码 include
  • 用于类型比较的 Boost 静态断言

    以下问题给我编译器错误 我不知道如何正确编写它 struct FalseType enum value false struct TrueType enum value true template
  • 如何将CUDA时钟周期转换为毫秒?

    我想用一些代码来测量时间within我的内核需要 我已经关注了这个问题 https stackoverflow com questions 11209228 timing different sections in cuda kernel连
  • 在 cuda 的 nvcc 编译器中使用 C++20

    我正在尝试使用std countr zero 函数从
  • “计算能力”是什么意思? CUDA?

    我是CUDA编程新手 对此了解不多 您能告诉我 CUDA 计算能力 是什么意思吗 当我在大学服务器上使用以下代码时 它向我显示了以下结果 for device 0 device lt deviceCount device cudaDevic
  • 为什么numba cuda调用几次后运行速度变慢?

    我正在尝试如何在 numba 中使用 cuda 然而我却遇到了与我预想不同的事情 这是我的代码 from numba import cuda cuda jit def matmul A B C Perform square matrix m
  • cuda 共享内存 - 结果不一致

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

    我正在寻找 CUDA 上的排序算法 它可以对元素数组 A 双精度 进行排序 并返回该数组 A 的键 B 数组 我知道sort by keyThrust 库中的函数 但我希望元素数组 A 保持不变 我能做些什么 我的代码是 void sort
  • 在linux上编译一个基本的OpenCV + Cuda程序

    我过去在linux上使用过opencv 但没有使用过cuda 几个月来我一直在与以下编译错误作斗争 在尝试了许多解决方案后 我放弃并使用 Windows 不过 我真的很想在 Linux 上工作 这是我用来编译 opencv gpu 网站上给
  • Visual Studio - 过滤掉 nvcc 警告

    我正在编写 CUDA 程序 但收到令人讨厌的警告 Warning Cannot tell what pointer points to assuming global memory space 这是来自 nvcc 我无法禁用它 有没有办法过
  • CUDA Visual Studio 2010 Express 构建错误

    我正在尝试在 64 位 Windows 7 上使用 Visual Studio 2010 Express 在 Windows 上开始 CUDA 编程 我花了一段时间来设置环境 然后我刚刚编写了我的第一个程序 helloWorld cu 目前
  • 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
  • cuda中内核的并行执行

    可以说我有三个全局数组 它们已使用 cudaMemcpy 复制到 GPU 中 但 c 中的这些全局数组尚未使用 cudaHostAlloc 分配 以便分配页面锁定的内存 而不是简单的全局分配 int a 100 b 100 c 100 cu
  • CUDA、NPP 滤波器

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

随机推荐

  • 嵌入式C++:是否使用STL?

    我一直是一名嵌入式软件工程师 但通常在 OSI 堆栈的第 3 层或第 2 层工作 我并不是一个真正的硬件专家 我一般都做电信产品 通常是手机 手机 这通常意味着像 ARM 7 处理器之类的东西 现在我发现自己处于一个更通用的嵌入式世界中 在
  • 如何减少Go编译文件的大小?

    让我们比较一下 c 和 go 你好世界 c include
  • 在 C# 中使用 RSA 私钥文件创建 RSACryptoServiceProvider 对象

    我怎样才能正确创建RSACryptoServiceProvider使用 RSA 私钥文件的对象 我生成了 RSA 私钥 并使用以下方法将其导出到 OSX 上的 p12 文件 openssl genrsa out rsakey pem 204
  • 如何将 Renderscript 支持库与 Gradle 结合使用

    是否可以使用支持Renderscript库 http developer android com guide topics renderscript compute html access rs apis与摇篮 如果是这样 您如何将其包含在
  • ASP.NET Web Api 连接两个表以创建对象数组

    这可能已经被问过 但我仍然无法解决我的问题 我什至不知道我是否走在正确的道路上 一些帮助将不胜感激 我的 ASP NET Web API 项目中有两个模型类 如下所示 namespace Artists Models public clas
  • 将 geom_bar 和 geom_point 一起绘制?

    data data frame x rep 0 9 each 2 ggplot data aes x factor x geom bar alpha 0 5 geom point data data frame x 0 10 y 2 aes
  • 找不到 CocoaLumberjack.h 文件?

    实际上 我的项目确实针对 iPhone 6s 进行了编译 但不适用于任何 iOS 模拟器 当我想构建模拟器时 我遇到两个构建时错误 Errors CocoaLumberjack CocoaLumberjack h file not foun
  • 如何在 JavaFX 中将复选框添加到 TableView

    在我的 Java 桌面应用程序中 我有一个 TableView 我想在其中有一列带有复选框 我确实找到了这样做的地方http www jonathangiles net javafx 2 0 CellFactories http www j
  • 视图必须派生自 WebViewPage 或 WebViewPage

    我正在跟进Justin Slattery 的插件架构教程 http fzysqr com 2010 04 26 asp net mvc2 plugin architecture tutorial 并尝试将其适应 Razor 而不是 WebF
  • iPhone/iPad同时下载和播放

    我想通过应用程序同时下载和流式传输和下载视频 视频量很大 因此转换为 m4u8 格式并使用 VOD 直播流概念在 MPMoviePlayer 中播放它们 如何同时下载直播视频和播放 你能建议我吗 以下是播放电影的代码 希望有用 NSURL
  • 在 Prolog 中创建 Niece 规则

    使用家庭数据库 我需要在 swi prolog 中创建一个侄女规则 niece X Y 其定义为 如果 X 是 Y 的兄弟或姐妹的女儿 则 X 是 Y 的侄女 这是给定的数据库 其中包含我已经设计的规则 family DB grandfat
  • boot2docker启动脚本与主机挂载本地共享文件夹

    我在 Win7 上运行 boot2docker 1 3 我想连接一个共享文件夹 在 VirtualBox Manager 的图像属性 gt 共享文件夹下 我添加了所需的文件夹并将其命名为 c shared 选中 自动安装 和 永久 复选框
  • 如何在 StructOpt 中使用表示子命令的枚举?

    参考StructOpt 的 Git 示例 https docs rs structopt 0 2 8 structopt subcommands 我不明白我应该如何使用参数中的数据 我对 Rust 相当陌生 所以我猜这是显而易见的 不幸的是
  • 基于椭圆曲线 Diffie-Hellman 和 CommonCrypto 的共享秘密

    我正在寻找 CommonCrypto 中的方法来生成基于 ECDH 椭圆曲线 Diffie Hellman 的共享密钥 我可以找到像这样的专有实现https github com surespot surespot ios blob mas
  • 将日期时间转换为 bigint

    sql中有没有将datetime转换为bigint的函数 例如 我有一个日期 2010 11 02 00 00 00 我想得到数字 20101102000000 的结果 或者我是否需要编写一些自定义函数来从日期时间中删除 space 你可以
  • 为什么神经网络倾向于输出“平均值”?

    我正在使用 keras 为回归任务构建一个简单的神经网络 但输出总是趋向于真实 y 数据的 平均值 看第一张图 蓝色是真实值 红色是预测值 非常接近真实值的常数平均值 此外 即使我设置了学习周期 100 模型也很早就停止学习 任何人都知道在
  • 重新加载单元格后向上滚动时具有动态单元格高度跳跃的 UITableView

    我有一个表格视图 每个单元格都有可能有自己的高度 因此不适合使用rowHeight 相反 现在我正在使用let indexSet NSIndexSet index 10 and self tableView estimatedRowHeig
  • ajax 加载数据后 Shadowbox 不工作

    ajax 加载数据后 Shadowbox 无法工作 我尝试将 Shadowbox init 放入 ajax 加载函数以及 php 页面中 什么都不起作用 Shadowbox 在 ajax 加载数据之前工作正常 ajax type post
  • 如何在 Catalyst 中使用 NSSharingService?

    我尝试使用 NSSharingService 添加催化剂应用程序以在 macOS 上共享操作表 但出现错误NSSharingService is unavailable in Mac Catalyst if targetEnvironmen
  • 如何区分共享内存和全局内存的指针?

    在 CUDA 中 给定指针的值或变量的地址 是否有一个内在函数或另一个 API 可以内省指针引用的地址空间 CUDA 头文件sm 20 intrinsics h定义函数 device unsigned int isGlobal const