标签: dynamic-parallelism

使用动态并行 (CUDA) 编译 .cu 文件

我换了一个新的 GPU GeForce GTX 980 cc 5.2,所以它必须支持动态并行。但是,我什至无法编译一个简单的代码(来自编程指南)。我不会在这里提供它(没有必要,只是有一个全局内核调用另一个全局内核)。

1)我使用VS2013进行编码。在 中property pages -> CUDA C/C++ -> device,我将code generation属性更改为compute_35,sm_35,这是输出:

1>------ Build started: Project: testCublas3, Configuration: Debug Win32 ------
1>  Compiling CUDA source file kernel.cu...
1>  
1>  C:\programs\misha\cuda\Projects\test projects\testCublas3\testCublas3>"C:\Program      Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include"  -G   --keep-dir Debug -maxrregcount=0  --machine 32 --compile -cudart static  -g   -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS …
Run Code Online (Sandbox Code Playgroud)

cuda dynamic-parallelism

7
推荐指数
1
解决办法
6290
查看次数

CUDA设备运行时api cudaMemsetAsync不起作用

我试图cudaMemsetAsync从内核调用(所谓的"动态并行").但无论我使用什么值,它总是将内存设置为0.

这是我的测试代码:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "cuda_device_runtime_api.h"
#include <stdio.h>

const int size = 5;

__global__ void kernel(int *c)
{
    cudaMemsetAsync(c, 0x7FFFFFFF, size * 4, NULL);
}

int main()
{
    cudaError_t cudaStatus;
    int c[size] = { 12, 12, 12, 12, 12 };
    int *dev_c = 0;

    cudaStatus = cudaSetDevice(0);
    cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
    cudaStatus = cudaMemcpy(dev_c, c, size * sizeof(int), cudaMemcpyHostToDevice);
    kernel <<< 1, 1 >>>(dev_c);
    cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
    cudaFree(dev_c);
    cudaStatus …
Run Code Online (Sandbox Code Playgroud)

cuda dynamic-parallelism

7
推荐指数
1
解决办法
201
查看次数

F#中的AleaGPU动态并行性?怎么样?

这可能是一个简单的问题,但我无法找到对此主题的任何引用:如何从另一个内核中启动内核?.我遇到的唯一相关示例是帖子:( Alea GPU是否支持动态并行?),它在C#中提供了一个示例.

鉴于F#使用Code Quotation,我假设有一种直接的方法来执行我无法找到的操作.

请告知,或指向相关资源.任何帮助将不胜感激.

问候.

f# dynamic-parallelism aleagpu

7
推荐指数
0
解决办法
160
查看次数

CUDA动态并行,性能不佳

使用CUDA Dynamic Parallelism时,我们遇到了性能问题.目前,CDP的表现比传统方法慢至少3倍.我们制作了最简单的可重现代码来显示这个问题,即将数组的所有元素的值增加+1.即

a[0,0,0,0,0,0,0,.....,0] --> kernel +1 --> a[1,1,1,1,1,1,1,1,1]
Run Code Online (Sandbox Code Playgroud)

这个简单示例的目的只是为了查看CDP是否可以像其他CDP一样执行,或者是否存在严重的开销.

代码在这里:

#include <stdio.h>
#include <cuda.h>
#define BLOCKSIZE 512

__global__ void kernel_parent(int *a, int n, int N);
__global__ void kernel_simple(int *a, int n, int N, int offset);


// N is the total array size
// n is the worksize for a kernel (one third of N)
__global__ void kernel_parent(int *a, int n, int N){
    cudaStream_t s1, s2;
    cudaStreamCreateWithFlags(&s1, cudaStreamNonBlocking);
    cudaStreamCreateWithFlags(&s2, cudaStreamNonBlocking);

    int tid = blockIdx.x * blockDim.x + threadIdx.x;
    if(tid == …
Run Code Online (Sandbox Code Playgroud)

c++ cuda dynamic-parallelism cuda-streams

6
推荐指数
1
解决办法
2189
查看次数

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 部分的动态并行性)生成了对内核启动函数的调用。

如何链接正确的设备代码以使动态内核调用起作用?

(这是Win64上的CUDA 6.5和VC2013)

cuda dynamic-parallelism

3
推荐指数
1
解决办法
939
查看次数

标签 统计

dynamic-parallelism ×5

cuda ×4

aleagpu ×1

c++ ×1

cuda-streams ×1

f# ×1