问题标签 [nvcc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - CUDA:不支持未对齐的内存访问:我错过了什么?
有几个与此类似的问题,但在这种情况下,它有点奇怪;NVCC 3.1 不喜欢这样,但 3.2 和 4.0RC 喜欢;
其中 p 通过引用传递给来自...的函数 (int *p)
为了添加一些上下文,在 p 到达“顶部”函数之前,它们被填充(为了清楚起见,我尽可能多地删除不相关的代码)
除此之外,枢轴上的唯一操作是具有整数临时值的 3 步交换。
毕竟 p_pivot 通过 (&p_pivot[0]) 传递给“顶部”函数
对于任何寻找更多细节的人,代码在这里,唯一需要在 3.2/4.0 之间切换到更早的更改是更改 cudaDeviceSynchronise(); 到 cudaThreadSynchronize();。这是我肮脏肮脏的实验代码所以请不要评判我!:D
如前所述,以上所有功能在更高版本的 NVCC 中都可以正常工作,我正在努力将它们放到有问题的机器上,但我很想看看我缺少什么。
一定是导致问题的数组查找索引,但我不明白为什么?
cuda - cuda 与 mingw - 更新
我们一直在 linux 中开发我们的代码,但想编译一个 windows 可执行文件。旧的非 gpu 版本在 windows 中用 mingw 编译得很好,所以我希望我能用 CUDA 版本做同样的事情。
策略是在visual studio中用nvcc编译内核代码,在mingw中用gcc编译其余代码。
到目前为止,我们在 Visual Studio 中轻松编译了 .cu 文件(带有内核和内核启动)。但是,我们仍然无法在mingw中编译c代码。c代码包含cuda api调用如cudaMalloc
和cuda类型如cudaEvent_t
,所以我们必须包括cuda.h和cuda_runtime.h。但是,gcc 会为这些标头提供警告和错误,例如:
和
关于我们如何包含这些头文件并编译代码的 c 部分的任何想法?
c++ - CUDA 在设备上静态分配数据
我一直在尝试分配一个可以被每个内核函数访问的变量。我的尝试是下面附加的代码,但它不会编译,因为内核无法查看 dArray 访问。在 C++ 中,您可以将变量放在顶部或声明静态以在整个程序的每个范围内访问。
macros - 你如何让 NVCC 包含宏定义信息?
通常使用 gcc,您可以使用 -g 指定调试信息的级别,如果使用 -g3,它将在可执行文件中包含预处理器宏定义,gdb 等调试器可以读取并允许您在调试期间使用。我想用 nvcc 来调试 CUDA 程序。
我目前正在修改 SDK 中的模板程序,因此我使用的是 Makefile 中包含的默认 Makefile 和 common.mk。在 'ifeq ($(dbg), 1)' 块中的 common.mk 中,我尝试了以下方法:
- 将 -g3 放在 COMMONFLAGS 下
- 将 -g3 放在 NVCCFLAGS 下
- 将 -g3 放在 CXXFLAGS 和 CFLAGS 下
- 将 --compiler-options -g3 放在 NVCCFLAGS 下。
前两个给出了一个无法识别的选项错误。后两个似乎不起作用,因为当我使用 cuda-gdb 进行调试时,我没有得到宏信息。
我想这样做的原因是因为我想使用程序本身用来访问该内存的相同宏来检查一些内存。例如,
是我用来访问非确定性有限状态自动机的状态和箭头的一些宏。
谢谢您的帮助!
c++ - 对本地对象的未定义引用
我在使用 nvcc 链接项目时遇到问题。它们与项目内部定义的符号一起出现。我在 cuda_bvh_constru.o 文件中定义了一些函数符号。这是相关功能的 nm 输出:
我无法弄清楚为什么链接器没有发现这些符号,因为我认为对象被正确传递了。我需要将这些对象放入特定的顺序吗?或者是别的什么?
compiler-construction - 取决于编译计算能力的寄存器和共享内存?
嘿,当我编译时,nvcc -arch=sm_13
我得到:
当我使用时,nvcc -arch=sm_20
我得到:
我以为所有内核参数都传递到共享内存,但对于 sm_20,似乎不是这样......?!也许它们也被传递到寄存器中?我的函数的头部如下所示:
到目前为止感谢!
cuda - 编译时的 CUDA 设备属性和计算能力
假设我有一个代码可以让用户通过threads_per_block
调用内核。然后我想检查输入是否有效(例如 <=512 表示计算能力 CC <2.0 和 1024 表示 CC >=2.0)。
现在我想知道如果我nvcc -arch=sm_13
在我的计算机中使用 CC2.0 的图形卡编译代码时会发生什么,当用户通过时threads_per_block == 1024
?这是:
- 一个有效的输入 - 因为我运行的卡有 CC2.0,或者......
- 无效,因为我为 CC1.3 编译它?
还是nvcc -arch=sm_13
仅仅意味着 CC1.3 至少是必要的,但是在更高的 CC 上运行它时,尽管可以使用那些更高的功能?
cuda - 将预处理变量传递给 NVCC 以编译 CUDA?
当我使用 NVCC 编译我的 CUDA 代码并且我已经在代码中定义了一个预处理变量时,例如#define DEBUG_OUTPUT 0
,有没有办法在编译时动态覆盖这样的变量?我尝试指定 NVCC 选项-DDEBUG_OUTPUT=1
,但这不起作用:它给了我:
警告 C4005:“DEBUG_OUTPUT”:宏重新定义
cuda - NVCC 和编译器错误的静态断言
在用于编译时设置的结构中为 NVCC 编译器提供静态断言的最佳方法是什么:
以下主要工作,但有时 NVCC 会产生胡说八道的错误消息,即使它应该编译也不会编译!
静态断言不起作用,我不知道,但是有一个 CUDA 编译器 BUG,它告诉我当我编译它时会抛出 STATIC_ASSERT(a == 15); 即使它应该编译因为上面的代码是正确的,如果我注释掉(A)然后它突然起作用,我使用基本上取自 Boost 的 Thrust 的 STATIC_ASSERT:
有没有人遇到过同样的问题?
感谢您的任何评论!
gcc - 如何使用使用 nvcc 编译的 Cuda 共享库编译 OpenCV 代码?
对于测试,我在 C(cuda) 中编写了矩阵乘法代码,并使用 nvcc 对其进行编译,以使用以下命令创建共享库。
然后我用 C 编写了一个 OpenCV 代码并尝试使用以下命令进行编译。
我收到以下错误。
谁能告诉我在 gcc 中编译代码时如何包含 cuda 库。
操作系统:Ubuntu gcc:4.4.0