dynamic-parallelism

    0热度

    1回答

    我正尝试使用CUDA的动态并行机制,但是我无法通过编译步骤。 我正在使用Compute Capability 3.5和CUDA 7.5版GPU。 根据在我使用,我得到不同的错误信息,编译命令的选项,但使用的documentation, 我到达一个线通向成功编译: nvcc -arch=compute_35 -rdc=true cudaDynamic.cu -o cudaDynamic.out -l

    0热度

    1回答

    我想为我的应用程序之一使用开普勒的动态并行性。在子内核中需要启动子内核的线程的全局索引(在父内核中)。换句话说,我想访问父内核坐标变量。 有没有规范的方法来做到这一点?或者我应该计算父线程的全局索引(使用内置变量,如threadIdx.x等),并通过子内核的一个参数传入它?

    3热度

    1回答

    我正在尝试GTX 980 ti卡上的动态并行。 运行代码的所有尝试都返回“未知错误”。 简单代码如下所示,带有编译选项。 我可以执行内核depth=0没有问题。 第一次调用小孩时,会给出错误。 cudaDeviceSynchronize()在查看其他问题后被纳入,但没有解决问题。 任何想法?这可能是一个驱动程序问题吗? 编辑1: 操作系统:Linux-x86_64的 的Nvidia驱动程序版本:3

    -1热度

    1回答

    为了测试动态并行性,我编写了一个简单的代码,并使用以下命令将其编译到GTX1080上。 nvcc -arch=sm_35 -dc dynamic_test.cu -o dynamic_test.o nvcc -arch=sm_35 dynamic_test.o -lcudadevrt -o dynamic_test 但是,输出并不如预期。看起来像传递给子内核的指针被取消引用。 #includ

    0热度

    1回答

    我正在尝试编写一个在内核中执行多个向量点积的代码。我正在使用cublasSdot功能从cublas库执行矢量点产品。这是我的代码: using namespace std; __global__ void ker(float * a, float * c,long long result_size,int n, int m) { float *sum; int id = blockIdx.

    2热度

    1回答

    我切换到使用cc 5.2的新GPU GeForce GTX 980,因此它必须支持动态并行性。但是,我甚至无法编译一个简单的代码(来自编程指南)。我不会在这里提供它(不是必要的,只是有一个全局内核调用另一个全局内核)。 1)我使用VS2013进行编码。在property pages -> CUDA C/C++ -> device,我改变code generation属性为compute_35,sm

    3热度

    1回答

    当您从GPU上的主内核启动次内核时,会产生一些开销。造成或影响这种开销的因素是什么?例如内核代码的大小,启动内核的SM的占用情况,内核参数的大小等。 为了这个问题,让我们具有包容性,并将“开销”定义为以下总和时间间隔: 开始:一个SM看到启动指示 结束:一个SM开始执行的子内核 加 开始的指令:最后SM执行子的任何指令内核(或者可能最后由子内核指令写入致力于相关的内存空间) 结束:执行子内核启动后

    0热度

    1回答

    产生错误内核代码: __kernel void testDynamic(__global int *data) { int id=get_global_id(0); atomic_add(&data[1],2); } __kernel void test(__global int * data) { int id=get_global_id(0);

    0热度

    1回答

    在here罗伯特克罗维拉说,cublas例程可以从设备代码调用。虽然我使用动态并行和使用计算能力3.5进行编译,但我无法通过设备函数调用Cublas例程。我总是得到错误我的代码包含了设备的功能,其调用CUBLAS程序一样cublsAlloc,cublasGetVector,cublasSetVector和cublasDgemm 我的编辑和“从设备/全球功能是不允许调用主机功能”联的命令: n

    0热度

    1回答

    的cubin我有个CUDA核心,看起来像下面这样: #include <cublas_v2.h> #include <math_constants.h> #include <stdio.h> extern "C" { __device__ float ONE = 1.0f; __device__ float M_ONE = -1.0f; __device_