gpu相关内容
我已经阅读了一些关于 GPGPU 的“持久线程"的论文,但我并不真正理解它.谁能给我一个例子或告诉我这种编程方式的用法? 在阅读和谷歌搜索“持久线程"后我的脑海中保留的内容: Presistent Threads 保持线程运行并计算大量工作只不过是一个 while 循环. 这是正确的吗?提前致谢 参考:http://www.idav.ucdavis.edu/publicat
..
有人可以帮我举一个关于如何使用共享内存的简单示例吗?Cuda C 编程指南中包含的示例似乎被不相关的细节弄得一团糟. 例如,如果我将一个大数组复制到设备全局内存并希望对每个元素进行平方,如何使用共享内存来加快速度?还是在这种情况下没用? 解决方案 在你提到的具体情况下,共享内存是没有用的,原因如下:每个数据元素只使用一次.为了使共享内存有用,您必须多次使用传输到共享内存的数据,并使用
..
__global__ void helloCUDA(float f){printf("你好线程 %d, f=%f\n", threadIdx.x, f);}主函数(){你好CUDA>>(1.2345f);cudaDeviceSynchronize();返回0;} 为什么是 cudaDeviceSynchronize();在许多地方,例如 这里 它不是内核调用后需要? 解决方
..
据我所知,GPU 在扭曲之间切换以隐藏内存延迟.但我想知道在什么情况下,扭曲会被关闭?例如,如果一个扭曲执行加载,并且数据已经在缓存中.那么warp是关闭还是继续下一个计算?如果有两个连续添加会发生什么?谢谢 解决方案 首先,一旦一个线程块在多处理器 (SM) 上启动,它的所有 warp 都会驻留,直到它们全部退出内核.因此,在有足够的寄存器用于块的所有扭曲之前,不会启动一个块,直到有足够
..
我有一个用 Erlang 编写的神经网络,我刚买了一张带有 240 核 GPU 的 GeForce GTX 260 卡.使用 CUDA 作为胶水在显卡上运行它是不是很简单? 解决方案 不,使用 CUDA 不是小事. CUDA 编程模型基本上使用 C(添加了一些内容),但为了充分利用 GPGPU 的功能,您必须确保您的算法遵循 CUDA 指南.(参见NVidia CUDA 编程指南)
..
我有 GeForce GTX460 SE,所以它是:6 SM x 48 CUDA 核心 = 288 CUDA 核心.众所周知,一个 Warp 中包含 32 个线程,并且在一个块中同时(一次)只能执行一个 Warp.也就是在单个多处理器(SM)中只能同时执行一个Block、一个Warp和只有32个线程,即使有48个内核可用? 另外,可以使用threadIdx.x和blockIdx.x来分配具体
..
我知道我可以通过以下方式安装 Cuda: wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.runchmod +x cuda_7.0.28_linux.run./cuda_7.0.28_linux.run -extract=`pwd`/nvidia_
..
注意:此问题专门针对 nVIDIA Compute Capability 2.1 设备.以下信息来自 CUDA Programming Guide v4.1: 在计算能力 2.1 设备中,每个 SM 有 48 个 SP(核心)用于整数和浮点运算.每个 warp 都由32 个连续线程.每个 SM 有 2 个warp 调度器.在每一个指令发布时间,一个warp调度器选择一个准备好的warp线程并
..
当前的 GPU 执行和内存模型受到某种限制(内存限制、数据结构限制、无递归......). 您认为在 GPU 上实现图论问题是否可行?例如,顶点覆盖?主导集?独立集?最大派系?.... 在 GPU 上使用分支定界算法是否也可行?递归回溯? 解决方案 你会感兴趣的 使用并行图算法探索 GPU 的极限 使用 CUDA 在 GPU 上加速大型图算法.
..
我想运行一个 cuda 程序,但我是初学者.我必须为直方图编写一个程序.但是有桶.根据 maxValue(示例中的 40),该数字将被添加到相应的存储桶中.如果我们有 4 个桶: 历史:|1 |10 |30 |39 |32 |2 |4 |5 |1 | 0-9(第一个桶) 10-19(第二桶) 20-29(第三桶) 30-39(第四桶) 我的 GPU 具有 Com
..
我需要帮助将 char[][] 转移到 Cuda 内核.这是我的代码: __global__无效内核(char** BiExponent){for(int i=0; i 我使用:nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2012 -ccbin 感谢您的
..
我正在阅读 CUB 文档和示例: #include //或等效地 __global__ 无效 ExampleKernel(...){//为 128 个线程专门化 BlockRadixSort,每个线程拥有 4 个整数项typedef cub::BlockRadixSort块基数排序;//为 BlockRad
..
我正在尝试传递结构的 device_vector 结构点{无符号整数 x;无符号整数 y;} 以下列方式传递给函数: void print(thrust::device_vector&points, unsigned int index){std::cout
..
在第 85 页,专业 CUDA C 编程: int main(){……//运行一个预热内核以消除开销size_t iStart,iElaps;cudaDeviceSynchronize();iStart = 秒();热身>>(d_C);cudaDeviceSynchronize();iElaps = seconds() - iStart;printf("预热
..
我有以下代码,我正在尝试使用 nvcc 进行编译. 代码: #include #include #include #include 诠释主要(无效){尺寸_t n = 100;尺寸_t我;诠释*主机数据;无符号整数 *devData;hostData = (int *)calloc(n, sizeof(int));c
..
我正在尝试优化实时 3D 建模中的应用程序.应用程序的计算部分几乎完全在 CUDA 的 GPU 上运行.该应用程序需要每秒 500+ 次的小型 (6x6) 双精度对称正定线性系统 Ax = b 的求解.目前,这是通过使用 Cholesky 的基于 CPU 的高效线性代数库完成的,但需要每秒数百次从 CPU - GPU 复制数据并返回到 GPU 以及每次内核启动的开销等. 如何仅在 GPU 上
..
..
在加速应用程序的过程中,我有一个非常简单的内核,它执行如下所示的类型转换: __global__ void UChar2FloatKernel(float *out, unsigned char *in, int nElem){无符号整数 i = (blockIdx.x * blockDim.x) + threadIdx.x;if(i 全局内存访问是合并的,据我了解,使用共享内存也没有好处,因
..
当我在 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 的列数的影响,这反过来意味着沿着列存在某种并行
..