cuda相关内容
我的应用程序中有一个非常简单的 CUDA 组件.Valgrind 报告了很多泄漏和仍然可访问的问题,所有这些都与 cudaMalloc 调用有关. 这些泄漏是真的吗?我为每个 cudaMalloc 调用 cudaFree.这是 valgrind 无法解释 GPU 内存分配吗?如果这些泄漏不是真实的,我可以抑制它们并让 valgrind 只分析应用程序的非 gpu 部分吗? 外部“C"无符号
..
我想要衡量我的内核存档的峰值内存带宽有多少. 假设我有一个 NVIDIA Tesla C1060,它的 最大带宽为 102.4 GB/s.在我的内核中,我可以访问以下全局内存: ...for(int k=0;k>4000;k++){浮动结果 = (in_data[index]-loc_mem[k]) * (in_data[index]-loc_mem[k]);……}out_data[索引
..
我对 cudaEvent_t 的用法有点困惑.目前,我正在使用这样的 clock() 调用来查找内核调用的持续时间: cudaThreadSynchronize();时钟开始 = 时钟();fooKernel>>(z, w);cudaThreadSynchronize();时钟结束 = 时钟();//打印时间差:( end - begin ) 寻找更高分辨率的计时器我正在考虑
..
我可以使用哪些并行算法从给定集合中生成随机排列?特别是适合 CUDA 的提案或论文链接会很有帮助. Fisher-Yates shuffle 的顺序版本. 例子: 令 S={1, 2, ..., 7} 为源索引集.目标是并行生成 n 个随机排列.n 个排列中的每一个都只包含每个源索引一次,例如{7, 6, ..., 1}. 解决方案 Fisher-Yates shuffl
..
我很快将负责对用 C/C++ 编写并使用 CUDA 来利用 GPU 处理的代码进行适当的内存配置. 我最初的想法是创建宏和运算符重载,以便我在源代码中跟踪对 malloc、free、delete 和 new 的调用.我将能够包含不同的标题,并使用 __FILE__ 和 __LINE__ 宏将内存调用打印到日志文件.这种类型的策略可以在这里找到:http://www.almostinfinit
..
我需要修改PTX代码,直接编译.原因是我想要一个接一个的特定指令,并且很难编写导致我的目标 PTX 代码的 cuda 代码,所以我需要直接修改 ptx 代码.问题是我可以将其编译为(fatbin 和 cubin),但我不知道如何将这些(.fatbin 和 .cubin)编译为“X.o"文件. 解决方案 可能有一种方法可以通过有序的 nvcc 命令序列来做到这一点,但我不知道它并没有没发现.
..
我正在尝试减少 CUDA,我真的是一个新手.我目前正在研究来自 NVIDIA 的示例代码. 我想我真的不知道如何设置块大小和网格大小,尤其是当我的输入数组(512 X 512)大于单个块大小时. 这里是代码. 模板__global__ void reduce6(int *g_idata, int *g_odata, unsigned i
..
在加速应用程序的过程中,我有一个非常简单的内核,它执行如下所示的类型转换: __global__ void UChar2FloatKernel(float *out, unsigned char *in, int nElem){无符号整数 i = (blockIdx.x * blockDim.x) + threadIdx.x;if(i 全局内存访问是合并的,据我了解,使用共享内存也没有好处,因
..
目标是调用另一个文件中可用的设备函数,当我编译 global 内核时,它显示以下错误 *External calls are not supported (found non-inlined call to _Z6GoldenSectionCUDA)*. 有问题的代码(不是完整的代码,而是出现问题的地方),猫范数.h # ifndef NORM_H_# 定义 NORM_H_# 包括
..
如何在 CUDA 中创建全局变量?可以举个例子吗? 例如,如何在 CUDA 函数中创建数组 __global__ void test(){int *a = 新的 int[10];} 或者我怎样才能创建一个全局数组并通过这个函数访问它.例如 __device__ int *a;__global__ 无效测试(){一[0] = 2;} 或者我怎样才能像下面这样使用.. __global
..
有人要求我构建一个实时人脸识别应用程序,在环顾四周后,我决定尝试 EmguCV 和 OpenCV 作为人脸识别库. 我目前遇到的问题是尝试安装 SDK 并使其正常工作.我已按照 此处 的说明尝试运行它,但我仍然无法运行样品.每当我尝试运行它们时,都会出现错误 程序无法启动,因为您的计算机中缺少 nvcuda.dll.尝试重新安装程序以解决此问题. 我已经尝试了大多数常见的修复方法,例如将
..
我正在尝试在 cuda 内核中生成随机数随机数.我希望从均匀分布和整数形式中生成随机数,从 1 到 8.每个线程的随机数都不同.可以生成随机数的范围也因一个线程而异.一个线程中范围的最大值可能低至 2,或者在另一个线程中可能高达 8,但不会高于该值.因此,我在下面提供了一个示例,说明我希望如何生成数字: 在线程#1 -->范围的最大值是 2,所以随机数应该在 1 到 2 之间在线程#2 -->范
..
有什么方法可以调用 CUDA 运行时函数调用,例如 cudaMemcpy(...); 在 .cpp 文件中,使用常规 C++ 编译器编译? 解决方案 编辑:有一个 这里的例子但是已经找不到了,不过大部分例子都复制到下面了. 调用者 C(但可能是 C++) #include #include #include #inclu
..
我正在尝试将 CUDA 内核与 C++ 自动工具项目链接,但似乎无法通过链接阶段. 我有一个文件 GPUFloydWarshall.cu,其中包含我想放入库 libgpu.a 中的内核和包装 C 函数.这将与项目的其余部分保持一致.这有可能吗? 其次,该库需要链接到大约十个其他库,用于目前使用 mpicxx 的主要可执行文件. 目前我正在使用/生成以下命令来编译和创建 libgp
..
在使用纹理内存时,我遇到了以下代码:- uint f = (blockIdx.x * blockDim.x) + threadIdx.x;uint c = (blockIdx.y * blockDim.y) + threadIdx.y;uint read = tex2D(refTex, c+0.5f, f+0.5f); 我的问题是为什么我们要在 c 和 f 中都添加 0.5f?这让我很困惑..
..
当我在 Windows 7(相对于 Linux)中运行 CUDA 应用程序时,我注意到性能受到很大影响.我想我可能知道减速发生在哪里:无论出于何种原因,Windows Nvidia 驱动程序(版本 331.65)在通过运行时 API 调用时都不会立即调度 CUDA 内核.为了说明问题,我分析了 mergeSort 应用程序(来自 CUDA 5.5 附带的示例). 首先考虑在 Linux 中运
..
我正在用一些新的基准测试结果更新我的问题(我还重新表述了问题以更具体并更新了代码)... 我按照 CUDA C 编程指南 使用共享内存.先介绍一下我在 Jetson TK1(GPU:Tegra K1,计算能力 3.2)上所做的一些基准测试结果,并与 cuBLAS 进行比较: 在这里,我猜 cuBLAS 有一些魔力,因为它的执行似乎不受 A 的列数的影响,这反过来意味着沿着列存在某种并行
..
CUDA 有没有办法在设备端函数中动态分配内存?我找不到任何这样做的例子. 来自 CUDA C 编程手册: B.15 动态全局内存分配 void* malloc(size_t size);无效自由(无效* ptr); 从全局内存中的固定大小堆动态分配和释放内存. 内核中的 CUDA malloc() 函数从设备堆中分配至少 size 个字节,并返回一个指向已分配内存的指针,如
..
我正在为他们的并行编程课程做一个 Udacity 测验.我很困惑我应该如何开始作业,因为我不确定我是否理解正确. 对于赋值(在代码中),我们得到了两个数组和值数组以及一个位置数组.我们应该使用并行基数排序对值数组进行排序,同时正确设置位置. 我完全了解基数排序及其工作原理.我不明白的是他们希望我们如何实施它.这是开始分配的模板 //Udacity HW 4//基数排序#include
..
我正在尝试了解我的每个 CUDA 线程的资源使用情况,以用于手写内核. 我使用 nvcc -arch=sm_20 -ptxas-options=-v 将我的 kernel.cu 文件编译为 kernel.o 文件 我得到了以下输出(通过c++filt): ptxas info : 为 'sm_20' 编译入口函数 'searchkernel(octree, int*, double,
..