其它硬件开发

CUDA:'name'在目标位置没有值

在我的代码当我调用findMax函数,索引变量不能定义,但max,我可以定义和工作。我试着用不同的名字,但不工作。什么是问题? 解决方案 即使禁用所有优化,CUDA编译器也会执行一些优化。 index 在设备函数findMax中没有副作用,因此编译器删除了该变量。 ..
发布时间:2017-03-05 15:23:33 其它硬件开发

cudaArray简单示例 - 如何分配1D数组?

如何分配 cudaArrays ?我特别感兴趣的是分配一维数组。分配后如何访问它的简单元素?我阅读 CUDA 编程指南,但我没有完全。任何人请用示例代码解释。是否使用cuda1Darray? 解决方案 cudaArray是特殊结构,您可以如下分配1D cudaArray: cudaArray * arr; //创建通道描述符。 float就是例子。将其更改为所需的数据类型。 ..
发布时间:2017-03-05 15:23:16 其它硬件开发

调试器在CUDA 5

Nvidia发布了CUDA 5的延伸eclipse。他们还有VS2010的Nsight插件。在VS2010中,我们可以在内核断点处停止程序执行,但是如何在Linux上的eclipse中实现这个功能?我没有看到任何nsight特定的键来停止执行。我试图改变透视,但它调试为一个正常的C / C ++应用程序。我使用的是特斯拉C2070,英特尔至强8核机器与Linux。 解决方案 我来自Nsig ..
发布时间:2017-03-05 15:22:16 其它硬件开发

在程序-CUDA中计算FLOPS / GFLOPS

已经完成我的应用程序,它乘以CRS矩阵和向量(SpMV),现在唯一要做的是计算FLOPS我的应用程序。在我看来,在稀疏矩阵 - 向量乘法的情况下,很难估计浮点运算的数量,因为一行中的乘法数量真的是“跳跃”或流畅。 我只是尝试使用“cudaprof”(可在./CUDA/bin目录中)测量时间 - 它工作正常。 任何建议和指导膏赞赏! 解决方案 这不只是你的意见;一个简单的事实是, ..
发布时间:2017-03-05 15:22:04 其它硬件开发

cuda表面内存错误

我的cuda代码工作正常。但是当我在代码的顶部包含以下内容时会给出一些错误。 surface sImg; fatal:'.surf'附近的解析错误:语法错误 我可以解决这个问题吗? 当我在main方法中声明“sImg”时,它编译.. 以下没有工作.. surface ..
发布时间:2017-03-05 15:21:52 其它硬件开发

如何计算3 D网格中的单个螺纹坐标指数?

我有一个由3D块组成的3 D网格。我希望在每次调用内核时计算每个坐标的各个线程索引。我有这些参数: dim3 blocks_query(32,32,32); dim3 threads_query(32,32,32); kernel>>>(); 在内核中,我想计算x,y和z坐标的各个值, x = 0,y ..
发布时间:2017-03-05 15:21:30 其它硬件开发

写一个简单的推力函子对某些压缩数组进行操作

我试图使用zip和排列迭代器执行 thrust :: reduce_by_key 。 ,即在几个“虚拟”置换数组的压缩数组上执行此操作。 我在编写函数 density_update 的语法时遇到问题。 但是首先要设置问题。 这是我的函数调用: thrust :: reduce_by_key(dflagt, dflagtend, thrust :: make_zip_it ..
发布时间:2017-03-05 15:20:59 其它硬件开发

NVRTC和__device__功能

我试图通过利用运行时编译来优化我的模拟器。我的代码是相当长而复杂,但我确定了一个特定的 __ device __ 函数,其性能可以通过删除所有全局内存访问强大提高。 CUDA允许动态编译和链接单个 __ device __ 函数(不是 __ global __ ) ,以便“覆盖”现有的函数? 解决方案 我很确定真正简短的答案是否。 > 虽然CUDA具有动态/ JIT设备链接器支 ..
发布时间:2017-03-05 15:20:25 其它硬件开发

如何更改CUDA核心的数量以计算效率和可扩展性?

我是CUDA的新手,我想问你的帮助,知道是否可以改变内核的数量来计算程序的效率和可扩展性,除了修改内核与每个块的线程数和用于执行的线程块。也就是说,如果假设效率和可扩展性基于处理器数量,而且我在FERMI GPU中开始使用512个核心,那么我如何从512更改为256,128等核心,以获得不同的加速比给定数据加载? 提前感谢! 解决方案 CUDA不支持这种类型的硬件粒度,控制内核的方式,你 ..
发布时间:2017-03-05 15:20:11 其它硬件开发

如何使用Thrust库对键进行精确排序

我有一组整数值,我想使用Thrust对它们进行排序。在这种排序中只使用一些高位/低位有可能。如果可能,我不想使用用户定义的比较器,因为它将使用的算法从radix-sort更改为merge-sort,并增加了很多时间。 当所有数字在位上具有相同的值时,在排序时该位被跳过,因此使用最低可能的位数并且希望它是足够的是可行的。 (即:使用具有8位的char和将高3位设置为0的5位) 示例: ..
发布时间:2017-03-05 15:19:59 其它硬件开发

Cusparse状态映射错误,同时使用CUDA常量内存

我使用cuda cusparse库来处理稀疏矩阵,我需要执行矩阵向量乘法(cusparseDcsrmv函数)。我有一个稀疏矩阵d_A在csr格式,当我调用这个函数与矢量d_x分配在全局设备内存一切正常工作。但是,虽然我想使用一个向量驻留在常量设备内存我有一个错误:CUSPARSE_STATUS_MAPPING_ERROR 文档说,通常的解决方案是解除绑定任何以前绑定的纹理,但它没有什么与我的 ..
发布时间:2017-03-05 15:19:46 其它硬件开发

双精度CUFFT

我遇到了一些CUDAs FFT库的问题。 我声明输入为cuDoubleComplex,但是编译器返回这个类型与类型的参数不兼容的错误cufftComplex。通过互联网进行一些搜索后,我发现了文件cufft.h,其中有 typedef cuComplex cufftComplex; 行。我的问题是,在库cuComplex.h中,显然cuComplex有一个浮点精度( typedef cuFl ..
发布时间:2017-03-05 15:19:07 其它硬件开发

在CUDA中查找最大值

我想在CUDA中编写一个代码,用于为给定的数字集合查找最大值 。 假设您有20个数字,内核正在2个5个线程块上运行。现在假设10个线程同时比较前10个值,并且线程2 找到最大值,因此线程2更新全局内存中的最大值变量。当线程2正在更新时,将使用旧值比较的剩余线程(1,3-10)会发生什么? 如果我锁定全局变量使用atomicCAS(),线程(1,3-10)将使用旧的最大值进行比较?如何 ..
发布时间:2017-03-05 15:18:51 其它硬件开发

如何编写基于LOP3的指令为Maxwell和更高的NVIDIA架构?

Maxwell Architecture在PTX程序集中引入了一个新的指令,称为LOP3,根据 NVIDIA博客: ”在多个输入上执行复杂逻辑运算 时可以保存指令。 在 GTC 2016 a>,有些CUDA开发人员设法加快了Tegra X1处理器(Maxwell)的 atan2f 功能 但是,在 .cu 文件中定义的以下函数会导致 __ SET_LT 和 __ LOP3_0xe ..
发布时间:2017-03-05 15:17:45 其它硬件开发

CUDA并行光线追踪:非常低的加速

我使用(py)CUDA编码一个raytracer,我得到一个非常低的加速;例如,在1000x1000的图像中,GPU并行化代码仅比在CPU中执行的顺序代码快4倍。 对于每个射线,我必须解决5方程(光线追踪器使用本文中描述的过程生成黑洞的图像),因此我的设置是以下:每个射线在单独的块中计算,其中5个线程使用共享存储器计算方程。也就是说,如果我想生成宽度为 W 像素和高度为 H 像素的图像,设置 ..
发布时间:2017-03-05 15:17:15 其它硬件开发

经验地确定经线中有多少线程

是否可以编写一个CUDA内核,显示一个warp中有多少线程,而不使用任何warp相关的CUDA设备函数,而不使用基准测试?如果是,如何? 解决方案 因为你表示一个解决方案与atomics将是有趣的,我提出这一点,一个答案,但我不知道这是否一定是你正在寻找的答案。我承认这是有点统计性质。我提供这只是因为我发现这个问题很有趣。我不建议这是“正确”的答案,我怀疑有人聪明会拿出一个“更好的”答案。 ..
发布时间:2017-03-05 15:17:03 其它硬件开发

最小减少cuda不工作

我写了一个代码,通过减少找到最小值。但是结果总是为零。我不知道是什么问题。请帮帮我。 这里是内核代码:我修改了Nvidia的sum减少代码。 #include #define NumThread 128 #define NumBlock 32 __global__ void min_reduce(int * In,int * Out,int ..
发布时间:2017-03-05 15:16:43 其它硬件开发

x64允许比Win32更少的每个块的线程?

当我执行一些cuda内核,我注意到,对于我自己的许多cuda内核,x64 build会导致失败,而Win32不会。 我很困惑,因为cuda源代码是相同的,构建是好的。它只是当x64执行时,它说它请求太多的资源启动。但是不应该x64允许比Win32更多的资源在概念上? 我通常喜欢使用1024个线程每个块,如果可能的话。所以为了使x64代码工作,我必须将块缩小到256。 任何人都有什 ..
发布时间:2017-03-05 15:16:13 其它硬件开发

CUDA:使用网格划分循环,减少共享内存

我有关于在CUDA内核中在共享内存中使用网格级环和优化的减少算法的以下问题。 想象一下,你的1D数组的元素数量多于线程中的线程数(BLOCK_SIZE * GRID_SIZE)。在这种情况下,你将编写这种内核: #define BLOCK_SIZE(8) #define GRID_SIZE 8) #define N(2000) // ... __global__ voi ..
发布时间:2017-03-05 15:15:21 其它硬件开发