cuda相关内容

Valgrind 和 CUDA:报告的泄漏是真的吗?

我的应用程序中有一个非常简单的 CUDA 组件.Valgrind 报告了很多泄漏和仍然可访问的问题,所有这些都与 cudaMalloc 调用有关. 这些泄漏是真的吗?我为每个 cudaMalloc 调用 cudaFree.这是 valgrind 无法解释 GPU 内存分配吗?如果这些泄漏不是真实的,我可以抑制它们并让 valgrind 只分析应用程序的非 gpu 部分吗? 外部“C"无符号 ..
发布时间:2022-01-10 15:52:47 其他开发

如何计算 CUDA 内核的实现带宽

我想要衡量我的内核存档的峰值内存带宽有多少. 假设我有一个 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[索引 ..
发布时间:2022-01-10 15:52:38 其他开发

CUDA:cudaEvent_t 和 cudaThreadSynchronize 用法

我对 cudaEvent_t 的用法有点困惑.目前,我正在使用这样的 clock() 调用来查找内核调用的持续时间: cudaThreadSynchronize();时钟开始 = 时钟();fooKernel>>(z, w);cudaThreadSynchronize();时钟结束 = 时钟();//打印时间差:( end - begin ) 寻找更高分辨率的计时器我正在考虑 ..
发布时间:2022-01-10 15:52:28 其他开发

如何使用 CUDA 生成随机排列

我可以使用哪些并行算法从给定集合中生成随机排列?特别是适合 CUDA 的提案或论文链接会很有帮助. Fisher-Yates shuffle 的顺序版本. 例子: 令 S={1, 2, ..., 7} 为源索引集.目标是并行生成 n 个随机排列.n 个排列中的每一个都只包含每个源索引一次,例如{7, 6, ..., 1}. 解决方案 Fisher-Yates shuffl ..
发布时间:2022-01-10 15:52:16 C/C++开发

分析我的代码(开源)和第 3 方代码(闭源)的内存使用情况的最佳策略

我很快将负责对用 C/C++ 编写并使用 CUDA 来利用 GPU 处理的代码进行适当的内存配置. 我最初的想法是创建宏和运算符重载,以便我在源代码中跟踪对 malloc、free、delete 和 new 的调用.我将能够包含不同的标题,并使用 __FILE__ 和 __LINE__ 宏将内存调用打印到日志文件.这种类型的策略可以在这里找到:http://www.almostinfinit ..
发布时间:2022-01-10 15:52:09 C/C++开发

如何编译 PTX 代码

我需要修改PTX代码,直接编译.原因是我想要一个接一个的特定指令,并且很难编写导致我的目标 PTX 代码的 cuda 代码,所以我需要直接修改 ptx 代码.问题是我可以将其编译为(fatbin 和 cubin),但我不知道如何将这些(.fatbin 和 .cubin)编译为“X.o"文件. 解决方案 可能有一种方法可以通过有序的 nvcc 命令序列来做到这一点,但我不知道它并没有没发现. ..
发布时间:2022-01-10 15:52:02 其他开发

CUDA 中的块减少

我正在尝试减少 CUDA,我真的是一个新手.我目前正在研究来自 NVIDIA 的示例代码. 我想我真的不知道如何设置块大小和网格大小,尤其是当我的输入数组(512 X 512)大于单个块大小时. 这里是代码. 模板__global__ void reduce6(int *g_idata, int *g_odata, unsigned i ..
发布时间:2022-01-10 15:51:53 其他开发

简单的 CUDA 内核优化

在加速应用程序的过程中,我有一个非常简单的内核,它执行如下所示的类型转换: __global__ void UChar2FloatKernel(float *out, unsigned char *in, int nElem){无符号整数 i = (blockIdx.x * blockDim.x) + threadIdx.x;if(i 全局内存访问是合并的,据我了解,使用共享内存也没有好处,因 ..
发布时间:2022-01-10 15:51:38 其他开发

不支持外部调用 - CUDA

目标是调用另一个文件中可用的设备函数,当我编译 global 内核时,它显示以下错误 *External calls are not supported (found non-inlined call to _Z6GoldenSectionCUDA)*. 有问题的代码(不是完整的代码,而是出现问题的地方),猫范数.h # ifndef NORM_H_# 定义 NORM_H_# 包括 ..
发布时间:2022-01-10 15:51:21 C/C++开发

CUDA 中的全局变量

如何在 CUDA 中创建全局变量?可以举个例子吗? 例如,如何在 CUDA 函数中创建数组 __global__ void test(){int *a = 新的 int[10];} 或者我怎样才能创建一个全局数组并通过这个函数访问它.例如 __device__ int *a;__global__ 无效测试(){一[0] = 2;} 或者我怎样才能像下面这样使用.. __global ..
发布时间:2022-01-10 15:50:55 其他开发

EmguCV - 找不到 nvcuda.dll

有人要求我构建一个实时人脸识别应用程序,在环顾四周后,我决定尝试 EmguCV 和 OpenCV 作为人脸识别库. 我目前遇到的问题是尝试安装 SDK 并使其正常工作.我已按照 此处 的说明尝试运行它,但我仍然无法运行样品.每当我尝试运行它们时,都会出现错误 程序无法启动,因为您的计算机中缺少 nvcuda.dll.尝试重新安装程序以解决此问题. 我已经尝试了大多数常见的修复方法,例如将 ..
发布时间:2022-01-10 15:50:40 其他开发

在不同范围内的 Cuda 内核中生成随机数

我正在尝试在 cuda 内核中生成随机数随机数.我希望从均匀分布和整数形式中生成随机数,从 1 到 8.每个线程的随机数都不同.可以生成随机数的范围也因一个线程而异.一个线程中范围的最大值可能低至 2,或者在另一个线程中可能高达 8,但不会高于该值.因此,我在下面提供了一个示例,说明我希望如何生成数字: 在线程#1 -->范围的最大值是 2,所以随机数应该在 1 到 2 之间在线程#2 -->范 ..
发布时间:2022-01-10 15:50:23 其他开发

创建要与 C++ 程序链接的静态 CUDA 库

我正在尝试将 CUDA 内核与 C++ 自动工具项目链接,但似乎无法通过链接阶段. 我有一个文件 GPUFloydWarshall.cu,其中包含我想放入库 libgpu.a 中的内核和包装 C 函数.这将与项目的其余部分保持一致.这有可能吗? 其次,该库需要链接到大约十个其他库,用于目前使用 mpicxx 的主要可执行文件. 目前我正在使用/生成以下命令来编译和创建 libgp ..
发布时间:2022-01-10 15:50:08 C/C++开发

纹理记忆——tex2D基础

在使用纹理内存时,我遇到了以下代码:- 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?这让我很困惑.. ..
发布时间:2022-01-10 15:49:58 其他开发

在 Windows 中运行时的 CUDA 性能损失

当我在 Windows 7(相对于 Linux)中运行 CUDA 应用程序时,我注意到性能受到很大影响.我想我可能知道减速发生在哪里:无论出于何种原因,Windows Nvidia 驱动程序(版本 331.65)在通过运行时 API 调用时都不会立即调度 CUDA 内核.为了说明问题,我分析了 mergeSort 应用程序(来自 CUDA 5.5 附带的示例). 首先考虑在 Linux 中运 ..
发布时间:2022-01-10 15:49:51 服务器开发

CUDA 中的矩阵向​​量乘法:基准测试和表现

我正在用一些新的基准测试结果更新我的问题(我还重新表述了问题以更具体并更新了代码)... 我按照 CUDA C 编程指南 使用共享内存.先介绍一下我在 Jetson TK1(GPU:Tegra K1,计算能力 3.2)上所做的一些基准测试结果,并与 cuBLAS 进行比较: 在这里,我猜 cuBLAS 有一些魔力,因为它的执行似乎不受 A 的列数的影响,这反过来意味着沿着列存在某种并行 ..
发布时间:2022-01-10 15:49:42 其他开发

CUDA 在 __device__ 函数中分配内存

CUDA 有没有办法在设备端函数中动态分配内存?我找不到任何这样做的例子. 来自 CUDA C 编程手册: B.15 动态全局内存分配 void* malloc(size_t size);无效自由(无效* ptr); 从全局内存中的固定大小堆动态分配和释放内存. 内核中的 CUDA malloc() 函数从设备堆中分配至少 size 个字节,并返回一个指向已分配内存的指针,如 ..
发布时间:2022-01-10 15:49:33 其他开发

并行基数排序,这个实现实际上是如何工作的?有一些启发式方法吗?

我正在为他们的并行编程课程做一个 Udacity 测验.我很困惑我应该如何开始作业,因为我不确定我是否理解正确. 对于赋值(在代码中),我们得到了两个数组和值数组以及一个位置数组.我们应该使用并行基数排序对值数组进行排序,同时正确设置位置. 我完全了解基数排序及其工作原理.我不明白的是他们希望我们如何实施它.这是开始分配的模板 //Udacity HW 4//基数排序#include ..
发布时间:2022-01-10 15:49:14 其他开发