gpgpu相关内容

具有整数参数的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 + blockI ..
发布时间:2017-03-04 13:55:26 其它硬件开发

std ::向量到CUDA中的数组

有一种方法可以将2D向量转换为数组,以便能够在CUDA内核中使用它? 它被声明为: vector>信息; 我想要cudaMalloc并从主机复制到设备,最好的方法是什么? int * d_information; cudaMalloc((void **)& d_information,sizeof(int)* size); ..
发布时间:2017-03-04 13:44:18 其它硬件开发

CUDA warp中的线程是否在多处理器上并行执行?

经线有32个线程。 32个线程是否在多处理器中并行执行? 如果32个线程没有并行执行,那么warp中没有竞争条件。 在CUDA编程模型中,所有的线程都在平行地延伸。但是硬件中的实际执行可能不是并行的,因为SM(流多处理器)内的核心数目可以小于32.例如,GT200架构每个SM具有8个核心,并且warp内的线程将需要4个时钟周期 如果多个线程写入同一位置(共享内存或全局内存),如果不想竞赛, ..
发布时间:2017-03-04 13:43:01 其它硬件开发

当cuda内核正在运行时访问cuda设备内存

我已使用cudaMalloc分配内存在设备上,并已将其传递给内核函数。是否可以在内核完成执行之前从主机访问该内存? 解决方案 我可以想到的唯一方法是在内核仍在执行时启动的memcpy是通过在与内核不同的流中提交异步memcpy。 (如果你使用内核启动或异步memcpy的默认API,NULL流将强制两个操作序列化。) 但是因为没有办法将内核的执行与流同步,该代码将受制于竞争条件。即复制 ..
发布时间:2017-03-04 13:42:23 其它硬件开发

在共享内存上执行原子操作

原子操作提供的地址驻留在块共享内存中时,原子操作如何执行?在原子操作期间,它是否暂停对块内其他线程对同一共享内存块的访问,或者停止其他线程执行任何指令,甚至停止所有块中的线程,直到原子操作完成? 解决方案 共享内存硬件包括1024个锁。如果调用在共享内存上运行的原子本质,编译器会发出一个短循环,用于获取并有条件地释放锁,或者如果未获取锁,则循环。因此,性能可以非常依赖于数据:如果一个war ..
发布时间:2017-03-04 13:32:38 其它硬件开发

gpu上的大矩阵乘法

我需要在GPU上使用CUDA来实现矩阵乘法,用于大矩阵。每个矩阵的尺寸单独大于GPU内存。所以我想我需要一个算法来有效地做到这一点。我去了互联网,但没有找到任何。任何人都可以给我这种算法的名称或链接。 谢谢 解决方案 这里没有真正的正式算法;通常,这些类型的线性代数运算,其中整个问题没有同时存储在存储器中被称为“非核心”操作。 为了解决它,你不需要一个特别复杂的算法,只是CUB ..
发布时间:2017-03-04 13:05:02 其它硬件开发

GPU的哈希表实现

我正在寻找一个哈希表实现,我可以使用CUDA编码。有什么好的一个在那里。像Python字典。我将使用字符串作为我的键 解决方案 Alcantara等人已经展示了用于在GPU上构建哈希表的数据并行算法。我相信该实施已作为 CUDPP 的一部分提供。 也就是说,你可能想重新考虑你原来的哈希表选择。按键对数据进行排序,然后在大规模并行设置中可以获得更好的性能。你想解决什么问题? ..
发布时间:2017-03-04 13:01:57 其它硬件开发

Fermi L2缓存命中延迟?

有没有人知道Fermi中的L2缓存的相关信息?我听说它是​​像全局内存一样缓慢,使用L2只是为了放大内存带宽。但我找不到任何官方来源来证实这一点。有没有人测量L2的命中延迟? 实际上,L2读取未命中如何影响性能?在我的意义上,L2只有在非常记忆绑定的应用程序的意义。 解决方案 此 nvidia 中的主题有一些性能表现的测量。虽然它不是官方信息,可能不是100%准确,它至少给出了一些行 ..
发布时间:2017-03-04 13:00:51 其它硬件开发

为什么CUDA Profiler指示重放的指令:82%!=全局重放+本地重放+共享重放?

我从CUDA Profiler获得信息。我很困惑为什么 Replay Instruction!= Grobal内存回放+本地内存回放+共享银行冲突重放? 查看以下信息我从profiler: 重播说明(%):81.60 全局内存重放(%):21.80 本地内存重放(%):0.00 共享银行冲突重放(%):0.00 我解释这个?是否有其他情况导致指令重放? ..
发布时间:2017-03-04 12:55:10 其它硬件开发

OpenCL和CUDA中的持久性线程

我已经读过一些论文谈论“持久线程”的GPGPU,但我真的不明白。任何一个人给我一个例子,或者告诉我使用这种编程时尚? 读取和搜索“持久线程”后,我在心中留下了什么: Presistent Threads它只是一个while循环,保持线程运行和计算很多工作。 这是否正确?提前感谢 参考: http://www.idav.ucdavis.edu/publications/pri ..
发布时间:2017-03-04 12:49:33 其它硬件开发

Numpy,BLAS和CUBLAS

Numpy可以针对不同的BLAS实现(MKL,ACML,ATLAS,GotoBlas等)“链接/编译”。这不总是直接配置,但它是可能的。 是否也可以对NVIDIA的CUBLAS实现“链接/编译”numpy? 我在网络中找不到任何资源我花了太多时间尝试它,我想确保它可能。 解决方案 一句话:不,你不能这样做。 有一个相当不错的scikit,提供从scipy访问CUBLAS的 ..
发布时间:2017-03-04 12:46:15 Python

CUDA:每个多处理器和每个块的线程有多少线程?

我们有一个工作站安装了两个Nvidia Quadro FX 5800卡。运行deviceQuery CUDA示例显示每个多处理器(SM)的最大线程数为1024,而每个块的最大线程数为512. 由于只能执行一个块在每个SM一次,为什么最大线程/处理器是最大线程/块的两倍?我们如何利用每个SM的其他512个线程? 设备1:“Quadro FX 5800” CUDA驱动程序版本/ Runt ..
发布时间:2017-03-04 12:43:40 其它硬件开发

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

我知道,GPU在经线之间切换以隐藏内存延迟。但我不知道在哪种情况下,翘曲会被切换出来?例如,如果warp执行加载,并且数据已经在缓存中。因此,翘曲是否被切断或继续下一个计算?如果有两个连续的添加,会发生什么? 感谢 解决方案 首先,一旦线程块在多处理器经常驻留,直到他们都退出内核。因此,一个块不会启动,直到有足够的寄存器用于块的所有卷曲,并且直到有足够的空闲共享内存为块。 所以经线 ..
发布时间:2017-03-04 12:40:43 其它硬件开发