问题标签 [dynamic-parallelism]
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 - numba.typeinfer.TypingError:在 NVIDIA GPU 上的 Python ( Anaconda ) 中使用 CUDA 动态并行时未键入全局名称“child_launch”
我的代码在这里:
运行结果如下:
我只是不知道为什么我不能启动子内核。请帮我。非常感谢。
sorting - CUDA - 如何让内核中的线程等待它的孩子
我正在尝试使用 CUDA 递归(对于 cm > 35)技术实现一个非常简单的合并排序,但是我找不到一种方法来告诉父线程同时启动它的子线程,然后等待它的子计算,因为 cudaEventSynchronize( ) 和 cudaStreamSynchronize() 仅是主机。__syncthread() 不会归档所需的效果,因为父级的下一行只应在其子级完成所有计算后执行。
我应该对我的代码进行哪些调整才能达到预期的效果?
谢谢阅读。
recursion - CUDA 递归深度
在CUDA中使用动态并行时,您可以实现诸如mergeSort 之类的递归算法。我已经实现了它,并且我的程序不适用于大于blah的输入。
我的问题是实现可以在递归树中有多少深度?有什么限制吗?(我的程序适用于较小的输入。)
cuda - CUDA 动态并行与驱动程序 API
我正在尝试编译和链接动态内核,并将其与GK110 上的CUDA 驱动程序 API一起使用。
我在 Visual Studio 中使用可重定位设备代码标志和 compute_35、sm_35 将 .cu 源文件编译成 ptx 文件,然后CUDA 链接器添加 cudadevrt.lib(至少它尝试根据链接器调用)。当我在 ptx .obj 上执行 cuModuleLoad 时,它显示不支持的设备代码。还有一个.device-link.obj看起来小得不切实际,并且驱动程序 api 函数似乎都无法将其识别为有效图像。在检查 ptx 文件时,我可以看到它根据 CUDA 文档(来自 PTX 部分的动态并行性)生成了对内核启动函数的调用。
如何链接正确的设备代码以使动态内核调用起作用?
(这是带有 VC2013 的 Win64 上的 CUDA 6.5)
cuda - 使用动态并行(CUDA)编译 .cu 文件
我换用了 cc 5.2 的新 GPU GeForce GTX 980,所以它必须支持动态并行。但是,我什至无法编译一个简单的代码(来自编程指南)。我这里就不提供了(没必要,只是有一个全局内核调用另一个全局内核)。
1)我使用VS2013进行编码。在property pages -> CUDA C/C++ -> device
中,我将code generation
属性更改为compute_35,sm_35
,这是输出:
我想,我需要这个编译的另一个选项:-rdc=true
,但我没有找到可以在 VS2013 中设置它的位置。
2)当我将code generation
属性设置为 时compute_52,sm_52
,出现错误:Unsupported gpu architecture 'compute_52'
。但是我的cc是5.2。所以我最多可以编译 3.5 cc 的代码吗?
谢谢
cuda - 动态并行 - 单独编译:未定义引用 __cudaRegisterLinkedBinary
尽管我遵循了“CUDA Programming Guide”中的附录 C“Compiling Dynamic Parallelism”以及此处给出的解决方案,但我无法解决我遇到的问题。编译和链接(制作 DivideParalelo)后,出现以下错误:
下面列出了我的代码的简化版本。
DivideParalelo.cu:
方法.cu:
GPUutil.cu:
生成文件:
任何建议将不胜感激。也许我误解了动态并行的单独编译。
gcc - cuda动态并行链接错误外部c
我正在尝试将我的 CUDA Kepler 的动态并行程序链接如下:
我离开了以下错误:
但是:当我执行相同的过程来编译没有动态并行性的 CUDA 代码时,程序可以工作。
有谁知道我该怎么做才能使这个编译工作?
cuda - 是否可以从设备函数调用 cublas 函数?
在这里, Robert Crovella 说可以从设备代码中调用 cublas 例程。尽管我正在使用动态并行性并使用计算能力 3.5 进行编译,但我无法设法从设备函数调用 Cublas 例程。我总是收到错误“从设备调用主机函数/不允许全局函数”我的代码包含调用 CUBLAS 例程的设备函数,如cublsAlloc
,和cublasGetVector
cublasSetVector
cublasDgemm
我的编译和链接命令:
cuda - 了解 CUDA 中的动态并行性
动态并行示例:
用一个块打印,整个父网格用两个块完成:
假设我从 threadIdx.x==0 的块中的一个线程启动子网格。我可以假设父网格中的所有其他线程在我启动子网格之前都已完成执行吗?
如果是这样,这是如何工作的?我正在阅读的是父网格在子网格之前没有在技术上完成。没有关于没有启动子线程的其他父线程的保证。
cuda - 内核启动的子内核是否与主机启动的内核具有相同的扭曲大小?
当从主机启动内核块时,它的 warp 大小为 32。通过动态并行启动的子内核是否相同?我的猜测是肯定的,但我没有在文档中看到它。
当然,更大的问题是:值得吗?
好的,这个例子有点做作。不过,关键是,如果线程之间有一个不同长度的循环,那么尝试动态并行化它是很诱人的。但是,如果 warp 仍然是 32,那么您最终会在大小不均的 warp 上浪费大量处理器。在这个特定的示例中,您可能希望首先对数据进行排序,然后将动态可并行化的索引分派到一个内核中,并将形状不佳的索引分派到另一个内核中。