c++ - 没有像我预期的那样在 Visual Studio 中使用 nvcc 定义 uint="unsigned int"
问题描述
抱歉,坚持使用 VS2013,但我认为这不是问题。相同的代码在 linux 上可以正确编译。我假设我需要定义 uint 而不是编辑 100 多行代码。我在下面代码的第一行收到“错误:缺少显式类型(假定为“int”)”
__device__ uint inline get_smid(void)
{
uint ret;
asm("mov.u32 %0, %%smid ;" : "=r"(ret) );
return ret;
}
在应用程序的属性中,我输入的只有 CUDA => Host => Preprocessor Definitions
WIN32;uint="unsigned int"
这似乎修复了“假定的 int”,但现在我得到“错误:预期的声明”在源代码中用 unsigned int 替换 uint 将编译没有错误。有很多 uint,这与 linux 构建不同。除了'uint="unsigned int"'之外还需要更多吗?也许是一个开关导致 NVCC 接受 uint 而不给出错误?
刚刚发现了很多 ushort,我猜同样的问题。此外,查看 Linux 版本,源代码是使用 gcc 编译的,但链接是使用 nvcc 完成的,因此存在差异。
====示例 CUDA 有 ushort==== 我一定没有正确设置包含,因为这些变量可能可以使用。
解决方案
我放弃了尝试像示例 CUDA 程序那样定义 uint 或 ushort
typedef unsigned int uint;
typedef unsigned short ushort;
所以我只是把它们放在每个需要它的 cu 文件中。
推荐阅读
- android - 如何在 Kotlin 的多个活动中使用数据?
- javascript - 使用 vuelidate 和 vue 3 验证确认密码字段的问题
- asp.net-core - 在 ASP 中招摇。NET Core OData 接口与 [FromOdataUri] 参数
- php - 从PHP中的另一个数组中获取数组的每个元素的所有相似元素的最佳方法?
- java - Spring Boot:我们可以使用正则表达式将请求映射的一部分作为可选吗?
- javascript - 使用 D3.js 在 Rect 中集中文本
- c - 如何使用函数在C中定义字符串
- python - 如何在 discord.py rewrite 中让不同的机器人在一天中的不同时间在线?
- event-sourcing - 搜索聚合根 ID
- opencl - 如何在 windows10 中运行带有 GPU 包的灯?