gpgpu相关内容

GPGPU中的分歧

我知道,在出现分歧的情况下,IF和ELSE都是在GPU上为每个工作项执行的,最后在掩码的帮助下我们选择了其中一个。但我不能理解,如果我们两个都被执行了,那么它怎么会增加执行单元的空闲。 我已经讨论了一些关于堆栈溢出的问题,但它们与堆栈溢出如何影响执行单元的空闲无关。 有人能给我解释清楚这个概念吗?分歧如何增加执行单元中的停滞或空闲? 推荐答案 在执行两个代码路径以选择一个结 ..
发布时间:2022-08-08 11:53:01 其他开发

CUDA:将单个位集与位集数组进行异或

我希望将单个位集与一组其他位集(~100k)进行XOR运算,并计算每个XOR结果的集合位数。单个位集的大小约为20k位。 位集已转换为unsigned int数组,以便能够使用内在__popc()函数。‘Bunch’已连续驻留在设备内存中。 我当前的内核代码如下: // Grid/Blocks used for kernel invocation dim3 block(32); ..
发布时间:2022-06-10 16:08:04 C/C++开发

NSight Compute表示:此设备不支持分析-为什么?

我有一台配备了NVIDA GTX 1050Ti GPU(计算能力6.1)的计算机,正在尝试在我用CUDA 11.4构建的程序中分析一个内核。我的操作系统发行版是Devuan GNU/Linux 4 Chimaera(~=Debian 11 Bullseye)。 NSight Compute启动我的程序,并在API调用后向我显示API调用,但当我到达第一次启动内核时,它在API调用清单的详细信 ..
发布时间:2022-04-25 14:28:17 其他开发

CudaMalLocManaged";比&cudaMalloc";慢吗?

我下载了CUDA 6.0 RC,并在我的应用程序中使用cudaMalLocManaged测试了新的统一内存。但我发现这个内核变慢了。 使用cudaMalloc后跟cudaMemcpy比使用cudaMallocManaged(~0.63)更快(~0.56)。这是预期的吗? 其中一位website声称cudaMallocManged是为了“更快地对Cuda内核进行原型设计”,所以我在想,从 ..
发布时间:2022-04-25 13:13:04 其他开发

如何获取用于DMA的GPU内存的物理地址?(OpenCL)

我正在编写一个OpenCL程序,我希望使用DMA将数据从帧采集卡传输到GPU。如何获取GPU上OpenCL缓冲区的物理地址以执行此操作? 推荐答案 使用OpenCL,您无法获取缓冲区的物理GPU地址。 但是,您可以将缓冲区的一个区域直接映射到主机内存,从而允许使用标准C/C++代码(如memcpy)将内存复制进来和复制出来。请参阅clEnqueue eMapBuffer。 ..
发布时间:2022-03-27 18:53:49 其他开发

OpenCL内核是否异步执行?

对于CUDA,我知道它们是在向默认流(NULL流)发出启动命令后异步执行的,那么在OpenCL中呢?示例代码如下: cl_context context; cl_device_id device_id; cl_int err; ... cl_kernel kernel1; cl_kernel kernel2; cl_command_queue Q = clCreateCommandQueue ..
发布时间:2022-03-27 18:49:16 C/C++开发

使用计算机特定的`.file`路径-CUDA.ptx文件是否可移植?

我正在研究cudaDecodeD3D9 sample以了解CUDA是如何工作的,在编译时它会从.cu文件生成一个.ptx文件。据我目前所知,这个.ptx文件是一个中间表示,它将针对任何特定的GPU进行实时编译。该示例使用类cudaModuleMgr通过cuModuleLoadDataEx加载此文件。 .ptx文件是文本格式,我可以看到它的顶部是我的机器上的一堆硬编码路径,包括我的用户文件夹, ..
发布时间:2022-02-27 20:17:56 C/C++开发

长记分板和短记分板(&r.t)分别是什么?(&x;Long&q;;和&q;Short&q;记分板W.r.t)MIO/L1TEX?

在最新的NVIDIA微体系结构中,出现了一个新的(?)taxonomyWARP停滞原因/WARP调度器状态。 此分类中的两个项目是: 短记分板-MIO队列操作的记分板依赖项。 长记分板-L1TEX操作的记分板依赖项。 我认为,其中使用";记分板";表示无序执行数据依赖关系跟踪(例如,请参阅here)。 我的问题: 形容词“短”或“长”描述什么?是一块 ..
发布时间:2022-02-27 20:14:55 其他开发

将 FFT 计算卸载到嵌入式 GPU 是否值得?

我们正在考虑将应用程序从专用数字信号处理芯片移植到通用 x86 硬件上.该应用程序进行了大量的傅立叶变换,从简短的研究来看,FFT 似乎非常适合在 GPU 而不是 CPU 上进行计算.例如,此页面有一些使用 Core 2 Quad 和 GF 8800 GTX 的基准,显示使用 GPU 时计算时间减少了 10 倍: http://www.cv.nrao.edu/~pdemores/gpu/ ..
发布时间:2022-01-25 12:54:40 其他开发

QR分解以解决CUDA中的线性系统

我正在GPU上写一个图像恢复算法,详情在 Cuda:最小二乘求解,速度很差p> 求解线性系统的QR分解方法 斧头=b 工作如下 min||Ax-b||--->||QRx-b||--->||(Q^T)QRx-(Q^T)b||--->||Rx-(Q^T)b|| 其中 R 是上三角矩阵.由此产生的上三角线性系统很容易求解. 我想使用 CULA 工具来实现这个方法.CULA 例程 G ..
发布时间:2022-01-10 16:17:12 其他开发

CUDA:每个多处理器的线程数和每个块的线程数的区别是什么?

我们有一个安装了两个 Nvidia Quadro FX 5800 卡的工作站.运行 deviceQuery CUDA 示例显示每个多处理器 (SM) 的最大线程数为 1024,而每个块的最大线程数为 512. 鉴于每个 SM 一次只能执行一个块,为什么最大线程/处理器是最大线程/块的两倍?我们如何利用每个 SM 的其他 512 个线程? 设备 1:“Quadro FX 5800"CUDA ..
发布时间:2022-01-10 16:16:39 其他开发

Numpy、BLAS 和 CUBLAS

Numpy 可以针对不同的 BLAS 实现(MKL、ACML、ATLAS、GotoBlas 等)“链接/编译".这并不总是很容易配置,但它是可能的. 是否也可以针对 NVIDIA 的 CUBLAS 实现“链接/编译"numpy? 我在网络上找不到任何资源,在我花太多时间尝试之前,我想确保它完全可行. 解决方案 一句话:不,你不能那样做. 有一个相当不错的 scikit 提供从 ..
发布时间:2022-01-10 16:15:27 Python

OpenCL 和 CUDA 中的持久线程

我已经阅读了一些关于 GPGPU 的“持久线程"的论文,但我并不真正理解它.谁能给我一个例子或告诉我这种编程方式的用法? 在阅读和谷歌搜索“持久线程"后我的脑海中保留的内容: Presistent Threads 保持线程运行并计算大量工作只不过是一个 while 循环. 这是正确的吗?提前致谢 参考:http://www.idav.ucdavis.edu/publicat ..
发布时间:2022-01-10 16:14:43 其他开发

GPU中的上下文切换机制是什么?

据我所知,GPU 在扭曲之间切换以隐藏内存延迟.但我想知道在什么情况下,扭曲会被关闭?例如,如果一个扭曲执行加载,并且数据已经在缓存中.那么warp是关闭还是继续下一个计算?如果有两个连续添加会发生什么?谢谢 解决方案 首先,一旦一个线程块在多处理器 (SM) 上启动,它的所有 warp 都会驻留,直到它们全部退出内核.因此,在有足够的寄存器用于块的所有扭曲之前,不会启动一个块,直到有足够 ..
发布时间:2022-01-10 16:13:00 其他开发

CUDA:二维网格中的线程 ID 分配

假设我有一个带有 2D 网格的内核调用,如下所示: dim3 dimGrid(x, y);//实际值是什么并不重要dim3 dimBlock(blockSize, blockSize);我的内核>>(); 现在我读到多维网格只是为了简化编程——底层硬件只会使用一维线性缓存内存(除非你使用纹理内存,但这与这里无关). 我的问题是:在 warp 调度期间,线程将按什么 ..
发布时间:2022-01-10 16:08:09 C/C++开发

具有整数参数的 CUDA pow 函数

我是 CUDA 的新手,不明白我做错了什么. 我正在尝试计算它在数组中具有 id 的对象的距离、数组中的轴 x 和数组中的轴 y 以查找每个对象的邻居 __global__void dist(int *id_d, int *x_d, int *y_d,int *dist_dev, int dimBlock, int i){int idx = threadIdx.x + blockIdx.x ..
发布时间:2022-01-10 16:04:25 其他开发

CUDA 内核计时策略:优点和缺点?

在为 CUDA 内核计时时,以下内容不起作用,因为内核在执行时不会阻塞 CPU 程序执行: 开始计时器内核>>();结束计时器 我已经看到了三种(成功地)为 CUDA 内核计时的基本方法: (1) 两个 CUDA eventRecords. 浮动响应时间;//结果将以毫秒为单位cudaEvent_t 开始;cudaEventCreate(&start);cudaEvent ..
发布时间:2022-01-10 16:03:01 其他开发