gpu-programming相关内容

GPU没有在Julia集计算中提高性能

我正在尝试比较CPU和GPU的性能.我有 CPU:英特尔®酷睿™i5 CPU M 480 @ 2.67GHz×4 GPU:NVidia GeForce GT 420M 我可以确认GPU已配置并且可以在CUDA上正常使用. 我正在实现Julia集计算. http://en.wikipedia.org/wiki/Julia_set 基本上对于每个像素,如果坐标在集合中,它将被涂成红 ..
发布时间:2020-11-20 00:18:37 其他开发

CUDA .ptx文件可移植吗?

我正在研究 cudaDecodeD3D9示例以了解CUDA的工作原理,并在编译时从.cu文件生成.ptx文件.就目前为止,据我了解,该.ptx文件是一个中间表示,可以针对任何特定GPU进行即时编译.该示例使用类cudaModuleMgr通过cuModuleLoadDataEx加载此文件. .ptx文件为文本格式,我可以看到它的顶部是机器上的一堆硬编码路径,包括用户文件夹,即: ..
发布时间:2020-11-20 00:17:35 C/C++开发

什么是GPU上的相干内存?

我一次也没有迷失在 的术语“非连贯"和“连贯"记忆中 与图形编程有关的技术论文.我一直在寻找简单明了的解释,但是发现大部分此类的“硬核"论文.我很高兴收到外行的关于GPU架构上实际上是什么一致性内存以及如何将其与其他(可能是非一致性)内存类型进行比较的风格答案. 解决方案 内存就是内存.但是不同的事物可以访问该内存. GPU可以访问内存,CPU可以访问内存,也许还可以访问其他硬件位. ..
发布时间:2020-11-20 00:17:29 其他开发

如何使用CUDA选择GPU?

我有一台带有2个GPU的计算机;我写了一个CUDA C程序,我需要以某种方式告诉我我想只在2个图形卡中的1个上运行它。我需要输入什么命令,应该如何使用?我相信与 cudaSetDevice 相关的某种方式,但是我真的找不到如何使用它的方法。 解决方案 从文档 cudaSetDevice ,但让我提供以下代码段。 bool IsGpuAvailable() { int devic ..
发布时间:2020-10-13 01:28:43 其他开发

从主机到设备的CUDA传输2D阵列

我主要是2D矩阵。我要从主机转移到设备。您能告诉我如何分配内存并将其传输到设备内存吗? #define N 5 __global__ void kernel(int a [N] [N]){ } int main(void){ int a [N] [N]; cudaMalloc(?); cudaMemcpy(?); kernel>>(?); } ..
发布时间:2020-10-13 01:19:15 其他开发

使用CUDA模拟管道程序

说我有两个数组 A 和 B 和一个 kernel1 通过将两个数组分成不同的块,对两个数组进行一些计算(例如,向量加法),并将部分结果写入 C 。 kernel1 然后继续执行此操作,直到处理完数组中的所有元素为止。 unsigned int i = blockIdx.x * blockDim.x + threadIdx.x; unsigned int gridSize = block ..
发布时间:2020-10-13 01:10:25 其他开发

有关CUDA中从块到SM分布的详细信息的问题

让我以具有1.3计算能力的硬件为例。 有30个SM。然后最多可以同时运行240个块(考虑到寄存器和共享内存的限制,对块数的限制可能要低得多)。超过240的那些块必须等待可用的硬件资源。 我的问题是,何时将超过240的那些块分配给SM。完成前240个模块中的一些块之后?还是当前240个块中的所有完成时? 我写了这样的一段代码。 #include #inc ..
发布时间:2020-10-13 01:10:23 其他开发

cudaMemcpyToSymbol性能

我有一些函数可以在恒定设备内存中加载变量并启动内核函数。 我注意到一个函数第一次在常量内存中加载变量需要0.6秒,但是下一次在常量内存中加载非常快(0.0008秒)。 无论哪种功能是主要功能,这种行为都会发生。 下面的代码示例: __constant__ double res1; __global__kernel1(...){...} void function1() ..
发布时间:2020-10-13 00:48:51 其他开发

使用CUDA Profiler nvprof进行内存访问

我正在使用nvprof来获取以下CUDA代码的全局内存访问次数。内核中的负载数为36(访问d_In数组),内核中的存储数为36 + 36(用于访问d_Out数组和d_rows数组)。因此,全局内存加载的总数为36,全局内存存储的数量为72。但是,当我使用nvprof CUDA探查器对代码进行探查时,它将报告以下内容:(基本上,我想计算对全局内存访问的计算(CGMA)比率) 1 gld_tr ..
发布时间:2020-10-13 00:47:45 其他开发

如何理解“ warp中的所有线程同时执行相同的指令”。在GPU中?

我正在阅读专业CUDA C编程,然后在 GPU体系结构概述部分: CUDA采用单指令多线程(SIMT)架构来管理和以32个称为warp的组执行线程。线程束中的所有线程同时执行同一条指令。每个线程都有其自己的指令地址计数器和寄存器状态,并根据自己的数据执行当前指令。每个SM将分配给它的线程块划分为32个线程扭曲,然后调度在可用硬件资源上执行。 SIMT体系结构类似于SIMD(单指令,多数 ..
发布时间:2020-10-13 00:43:25 其他开发

CUDA GPU是按位置选择的,但是如何将default设置为设备0以外的值?

我最近在家中的机器上安装了第二个GPU(Tesla K40),我的搜索建议第一个PCI插槽成为为CUDA作业选择的默认GPU。一个很棒的链接正在解释它,可以在这里找到: 默认GPU分配 我原来的GPU是TITAN X,也启用了CUDA,但实际上最适合单个精度计算,特斯拉更好地实现了双精度。对于该小组,我的问题是是否有办法将我的默认CUDA编程设备始终设置为第二个?显然,我每次都可以在代 ..
发布时间:2020-10-13 00:37:27 其他开发

如何包含标准CUDA库以与NVRTC代码链接?

具体地说,我的问题是我有需要运行的CUDA代码. NVRTC默认不包括此功能.大概然后在创建程序上下文(即对nvrtcCreateProgram的调用)时,我必须发送文件名(curand_kernel.h)以及curand_kernel.h的源代码?我觉得我不必这样做. 很难说;我还没有从NVIDIA找到一个例子,有人需要像这样的标准CUDA文件作为源,所以 ..
发布时间:2020-08-01 20:44:11 其他开发

CUDA中的块间同步

我已经搜索了一个月以解决这个问题.我无法在CUDA中同步块. 我已经阅读了许多有关atomicAdd,合作组等的文章.我决定使用全局数组,以便一个块可以在全局数组的一个元素上写.写完之后,一个块线程等待(即被困在while循环中),直到所有块都写入全局数组为止. 当我使用3个块时,我的同步效果很好(因为我有3个SM).但是使用3个街区可让我占用12%的空间.因此,我需要使用更多的块,但 ..
发布时间:2020-05-24 21:19:35 其他开发