问题标签 [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.

0 投票
0 回答
179 浏览

f# - F# 中的 AleaGPU 动态并行性?如何?

这可能是一个简单的问题,但我找不到任何关于这个主题的参考资料:如何从另一个内核中启动一个内核?. 我遇到的唯一相关示例是帖子:(Alea GPU 支持动态并行吗?),它提供了 C# 中的示例。

鉴于 F# 使用代码引用,我假设有一种直接的方法来执行我无法找到的此操作。

请提供建议,或将我指向相关资源。任何帮助将不胜感激。

问候。

0 投票
1 回答
130 浏览

cuda - 内核启动后,Nvidia 视觉分析器未显示 cudaMalloc()

我正在尝试编写一个几乎完全在 GPU 上运行的程序(与主机的交互很少)。initKernel是从主机启动的第一个内核。我使用动态并行性从 启动连续内核initKernel,其中两个是thrust::sort(thrust::device,...).

在此处输入图像描述

在启动之前initKernel,我cudaMalloc()在主机代码上做了一个,它显示在可视分析器的运行时 API中。Visual profiler的Runtime API中没有cudaMalloc显示出现在__device__函数和后续内核中的 s(在 启动之后initKernel) 。有人可以帮我理解为什么我在 Visual Profiler中看不到s 吗?cudaMalloc

感谢您的时间。

0 投票
1 回答
446 浏览

cuda - 如何从内核调用流中的推力函数?

我想thrust::scatter通过在设备内核中调用它来实现异步(我也可以通过在另一个主机线程中调用它来实现)。thrust::cuda::par.on(stream)是不能从设备内核调用的主机函数。以下代码在图灵架构上使用 CUDA 10.1 进行了尝试。

我知道推力在从设备调用时使用动态并行性来启动其内核,但是我找不到指定流的方法。

0 投票
1 回答
400 浏览

cuda - 为什么不允许 cudaLaunchCooperativeKernel() 返回?

所以我使用 GTX 1050,计算能力为 6.1 和 CUDA 11.0。我需要在我的程序中使用网格同步,所以cudaLaunchCooperativeKernel()需要。我检查了我的设备查询,所以 GPU 确实支持合作组。我无法执行以下功能

打电话后,

收到错误“不允许操作”(代码为 800)。现在,当设备不支持协作组时返回(在这种情况下不支持)。那么,什么可能导致这个问题呢?

0 投票
1 回答
53 浏览

cuda - CUDA 父内核可以启动比父内核具有更多线程的子内核吗?

我正在尝试学习如何使用 CUDA 动态并行。

我有一个简单的 CUDA 内核,它可以创建一些工作,然后启动新内核来执行该工作。假设我只用 1 个线程的 1 个块启动父内核,如下所示:

现在,在我的父内核中,我创建了工作,然后启动了一个子内核,如下所示:

请注意,子内核启动时使用的线程和块 (2x256) 比父内核提供的 (1x1) 多。

子内核真的会并行运行 512 个线程吗?还是父内核必须将其线程分配给子内核?

0 投票
1 回答
133 浏览

c++ - 为什么我无法链接到使用动态并行和可分离编译的 CUDA 静态库?

我正在尝试创建最基本的 CUDA 应用程序来演示动态并行、单独编译和链接、静态库中的 CUDA 内核,并且我正在尝试使用 CMake 生成 Visual Studio 解决方案。我正在使用 CMake 3.21.3、CUDA 11.4 和 Visual Studio 2019 (16.11.5)。

我有一个 .h 和一个 .cu 文件,我正在将它们编译成一个静态库。我还有一个 main.cpp 文件,其中包含我的库中的标头和指向它的链接。该文件被编译为可执行文件。我的库和可执行文件的代码位于不同的文件夹中,如下所示:

mylib.h 和 mylib.cu 包含一个初始化 CUDA 的函数、两个内核:一个父内核和一个子内核,以及一个调用父内核的宿主函数。mylib.h#includescuda_runtime.hdevice_launch_parameters.hVisual Studio 开心。

main.cpp就是#includesmylib.h,调用initCUDA函数,然后调用host函数调用内核。

该库的 CMakeLists 文件如下所示:

main.cpp 的 CMakeLists 文件如下所示:

CMake配置并生成解决方案,没问题。但是,当我尝试构建时,库似乎构建正常,但是当可执行文件链接时,我收到以下错误: MyLib.lib(MyLib.device-link.obj) : error LNK2001: unresolved external symbol __fatbinwrap_38_cuda_device_runtime_compute_86_cpp1_ii_8b1a5d37

任何想法为什么会发生这种情况以及如何解决它?

0 投票
1 回答
94 浏览

memory-management - CUDA 动态并行:访问子内核导致全局内存

我目前正在 CUDA 中尝试我的第一个动态并行代码。这很简单。在父内核中,我正在做这样的事情:

假设到目前为止我做的事情是正确的,那么aGlobalPayloads在内核执行后访问结果的最快方法是什么?(我试图cudaMemcpy()复制aGlobalPayloadsaPayloadscudaMemcpy()不允许在设备代码中)。