.cu的cuda程序的kernel函数中调用std函数无法编译的问题解决; error: calling a constexpr __host__ function

2023-11-05

引言:本人初学cuda编程,在jetson nano 4G上想实现sliced wasserstein distance的各个slice并行加速计算,遇到一些问题和解决方案,记录在此。

基础知识:在cuda编程中,cpu称作host,gpu称作device。在gpu上并行运算的函数称作kernel function,其编写在.cu, .cuh程序中,与.cpp, .h对应。编译规则可以用同目录下的对应的CMakeList.txt。

问题:编译报错如下

error: calling a constexpr __host__ function("make_pair") from a __global__ function("emd") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

对应代码为kernel.cu的:

for (int i = 0; i < M; i++) {

cloud1Idx[i] = std::make_pair(proj.proj(cloud1[i]), i);

}

中使用了std::make_pair这个std库中的函数。

解决方法如报错中所说,添加编译选项“--expt-relaxed-constexpr”在同目录下的对应的CMakeList.txt中:

set(CUDA_NVCC_FLAGS --expt-relaxed-constexpr)

随后报错消失。

参考:

【1】cuda - How to invoke a constexpr function on both device and host? - Stack Overflow

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

.cu的cuda程序的kernel函数中调用std函数无法编译的问题解决; error: calling a constexpr __host__ function 的相关文章

  • 无法在 QGLWidget 中设置所需的 OpenGL 版本

    我正在尝试在 Qt 4 8 2 中使用 QGLWidget 我注意到 QGLWidget 创建的默认上下文不显示 OpenGL 3 1 以上的任何输出 Qt wiki 有一个教程 http qt project org wiki How t
  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 如何在 C++ 中为指针“this”赋值

    在函数中 如何分配this一个新的价值 您可以分配对象this点于 this XY 但你不能分配直接值this this XY Error Expression is not assignable
  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 【2023】数据库sql增删改查执行命令汇总(配合详细举例)

    一 单表查询 数据查询语言 专门用于查找表中的数据 select from emp 关键字 select from 表名 查询表中的所有数据 source 导入文件的文件地址 文件名称 导入dump数据 结尾不能加 号 mysql的数据备份
  • 【git】全局配置和单个仓库的用户名邮箱配置

    Git全局配置和单个仓库的用户名邮箱配置 学习git的时候 大家刚开始使用之前都配置了一个全局的用户名和邮箱 git config global user name github s Name git config global user
  • 领导力大挑战

    author skate time 2012 10 13 在实施Scrum的项目中 Scrum Master对于团队而言是相当关键的 担当着推动整个团队完成产品所有者既定目标的角色 Scrum Master的主要工作是替团队扫清前进的障碍
  • 树莓派交叉编译如何处理软连接

    软链接有点类似windows的快捷方式 添加软连接 ln s libfilename so 2 5 libfilenameso ln是指令 s是参数 so 2 5是要被链接的文件 so是软连接名字 生成硬链接 去掉 s
  • STM32编译错误

    output test axf Error L6218E Undefined symbol SystemInit referred from startup stm32f10x hd o Not enough information to
  • 现代计算机从0到1:冯·诺依曼计算机

    最近打算开始写博客 在想一开始该写什么好呢 突然灵光一现 关于计算机当然就是现代计算机之父 我们今天就来聊一下现代计算机之父 约翰 冯 诺依曼 John Von Nouma 1903 1957 美藉匈牙利人 1903年12月28日生于匈牙利
  • Linux驱动开发 通过字符设备驱动分步注册方式编写LED驱动

    通过字符设备驱动分步注册方式编写LED驱动 完成设备文件和设备的绑定 head h ifndef HEAD H define HEAD H typedef struct unsigned int MODER unsigned int OTY
  • STM32实战总结:HAL之IAP

    我们学习单片机一般都是从51开始的 51单片机烧录程序通常是使用烧录软件如STC ISP 这种方式 通过串口连接单片机 选择一个合适的波特率就可以烧录了 后来学习STM32 编程时使用KEIL软件自带的下载按钮就能下载程序 方便了不少 但需
  • ssh 连接到docker内,环境变量发生变化的解决方法(改)

    参考 https blog csdn net m0 59029800 article details 125479518 上述方法的问题 环境变量中存在空格时出错 解决方法 更改字段分隔符 使之仅仅遇到换行时分割 OLD IFS IFS n
  • 19、ddt数据驱动测试

    背景 设计测试用例是 有些测试用例只是参数数据输入不一样而已 比如登录时 需要经常切换账号 而操作基本是一样的 如果用例重复去写操作过程会导致很多冗余的代码 1 安装ddt pip install ddt 2 原理 测试数据为多个字典的li
  • UVA 1601 The Morning after Halloween

    https vjudge net problem UVA 1601 题目 你在游乐场的鬼屋里当操作员 专门控制鬼屋里的机器人 某日没事干的出题人把这些机器人搬到了其他地方 你需要在最短的时间内遥控机器人让他们回到原位 所有机器人都可以同时在
  • 超级无敌简单题(鸽子数)

    欢迎访问https blog csdn net lxt Lucia 宇宙第一小仙女 o 萌量爆表求带飞 o dalao们点个关注呗 我只是一条可爱哒分界线 一 问题 Description 通常来说 题面短的题目一般都比较难 所以我要把题面
  • 【线性回归——从简单构建到实现数据预测】

    深度学习与神经网络day03 线性回归 一 简单的线性回归 1 1 数据集的构建 1 2 模型构建 1 3 损失函数 1 4 模型优化 1 5 模型训练 1 6 模型评估 1 7 样本数量和正则化系数的影响 二 多项式回归 1 1 数据集的
  • Qt(day1)

    思维导图 Qt实现第一个web的基础页面 include mywnd h include ui mywnd h include
  • IP协议-NAT机制(理解网络结构的关键要点)

    前言 我们现在使用得最多的IP协议版本是IPv4 IPv4是4个字节 32位 也就是说我们的IP地址最多就只有2 32 42亿 个 在日常生活中 我们需要联网的设备都需要有IP地址才能进行通讯 很明显现在42亿个IP地址已经完全不足以满足我
  • 矩阵乘法的本质是什么

    作者 知乎用户 链接 https www zhihu com question 21351965 answer 31050145 本题目前下面的解释都是线性代数教材上的各种定义 但都太过复杂了 我尝试写一个浅显的解释 小明今天要做饭 消耗2
  • 解决servlet filter中if语句无效问题

    今天写代码学习filter时 遇到了一件很奇怪的事情 就是当在jsp中同时提交文件和一个text组件时 servlet中的if语句无法返回true 代码如下 这是jsp代码
  • html三个组成部分组成部分,JavaScript组成(三个组成部分)

    JavaScript主要包括三部分 1 ECMAScript JavaScript的核心 仅仅是一个描述 定义了脚本语言的所有属性 方法和对象 具体地 ECMAscript描述了以下内容 语法 类型 语句 关键字 保留字 运算符 对象 每个
  • .cu的cuda程序的kernel函数中调用std函数无法编译的问题解决; error: calling a constexpr __host__ function

    引言 本人初学cuda编程 在jetson nano 4G上想实现sliced wasserstein distance的各个slice并行加速计算 遇到一些问题和解决方案 记录在此 基础知识 在cuda编程中 cpu称作host gpu称