cuda相关内容
我正在实现一个函数来使用归约来查找数组的总和,我的数组有 32*32 个元素,它的值是 0 ... 1023.我的预期总和值为 523776,但我的结果是 15872,这是错误的.这是我的代码: #include #include #定义 w 32#定义 h 32#define N w*h__global__ void reduce(int *g_idata,
..
我正在尝试探索具有 2.0 功能的 Nvidia Quadro 4000 的并发内核执行属性. 我使用了 2 个不同的流,它们的运行方式相同: 复制 H2D 两个不同的固定内存块 运行内核 将 D2H 两个不同的块复制到固定内存. 两个流的内核完全相同,每个执行时间为 190 毫秒. 在 Visual profiler(5.0 版)中,我希望两个内核同时开始执行,但它们
..
我正在尝试编译一个具有的 CUDA 示例; cuda.cu: __constant__ 无符号顶点;__constant__ 无符号三角形; 以及main.cpp中对应的代码; cudaMemcpyToSymbol(VERTICES, &verticesNo, sizeof(int));cudaMemcpyToSymbol(TRIANGLES, &trianglesNo, sizeof
..
在为 CUDA 内核计时时,以下内容不起作用,因为内核在执行时不会阻塞 CPU 程序执行: 开始计时器内核>>();结束计时器 我已经看到了三种(成功地)为 CUDA 内核计时的基本方法: (1) 两个 CUDA eventRecords. 浮动响应时间;//结果将以毫秒为单位cudaEvent_t 开始;cudaEventCreate(&start);cudaEvent
..
我正在尝试编译一个 CUDA 项目,一旦我尝试运行在单独的 .cu 文件中定义的函数,就会出现 255 错误 这是定义主内核的地方 #include #include #include #include "场景.cuh"__global__ void fill(float *c, Scene* 场景){整数索引 = bloc
..
我需要帮助将 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
..
我一直在研究比 GPU 上用于基本计算的设备可用内存更大的流数据集.主要限制之一是 PCIe 总线通常限制在 8GB/s 左右,内核融合可以帮助重用可重用的数据,并且它可以利用 GPU 内的共享内存和局部性.我发现的大多数研究论文都很难理解,并且大多数都在复杂的应用程序中实现了融合,例如 https://ieeexplore.ieee.org/document/6270615.我读过很多论文,但都
..
设置几个事实: Thrust 并非所有操作都在原地操作. 您可以为 thrust::device_vectors 提供自定义分配器. 我查看了 thrust::system 和 thrust::system::cuda 并没有找到任何看起来像静态系统分配器的东西.我的意思是,我看不到替换推力在内部使用的分配器为异地算法分配额外内存的方法. 我也很难相信没有就地的函数使用给定 t
..
我在 这个问题中说过我有一些在 JCuda 中加载 ptx 模块时出现问题,在 @talonmies 的想法之后,我实现了他的解决方案的 JCuda 版本来加载多个 ptx 文件并将它们作为单个模块加载.这是代码的相关部分: 导入静态 jcuda.driver.JCudaDriver.cuLinkAddFile;导入静态 jcuda.driver.JCudaDriver.cuLinkComple
..
我为 Caffe 编译而苦恼.可惜我编译失败了. 步骤我遵循了: git clone https://github.com/BVLC/caffe.gitcd咖啡mkdir 构建光盘构建制作..做所有 运行 make all 失败并显示以下错误消息: [ 2%] 构建 NVCC(设备)对象 src/caffe/CMakeFiles/cuda_compile.dir/util/cuda_c
..
在第 85 页,专业 CUDA C 编程: int main(){……//运行一个预热内核以消除开销size_t iStart,iElaps;cudaDeviceSynchronize();iStart = 秒();热身>>(d_C);cudaDeviceSynchronize();iElaps = seconds() - iStart;printf("预热
..
是否可以将thrust::reduce 操作的返回值留在设备分配的内存中?如果是的话,是否像将值分配给 cudaMalloc'ed 区域一样简单,还是应该使用推力::device_ptr? 解决方案 是否可以将推力::reduce 操作的返回值留在设备分配的内存中? 简短的回答是否定的. thrust reduce 返回一个数量,即减少的结果.此数量必须存放在主机常驻变量中
..
我有以下代码,我正在尝试使用 nvcc 进行编译. 代码: #include #include #include #include 诠释主要(无效){尺寸_t n = 100;尺寸_t我;诠释*主机数据;无符号整数 *devData;hostData = (int *)calloc(n, sizeof(int));c
..
当提供的地址驻留在块共享内存中时,原子操作如何执行?在原子操作过程中,是暂停块内其他线程对同一个共享内存bank的访问,还是停止其他线程执行任何指令,甚至停止跨所有块的线程,直到原子操作完成? 解决方案 共享内存硬件包括1024个锁.如果调用对共享内存进行操作的原子内在函数,编译器会发出一个短循环来获取并有条件地释放锁,或者如果未获取锁则循环.因此,性能可能非常依赖数据:如果一个 warp
..
我有一台位于其他地方的服务器.在该服务器上,我计划运行一个程序,以利用该物理机器上支持 CUDA 的图形卡.该程序与图形无关——它只会将图形卡用于计算数学. 我能在那台机器上运行这个程序吗?如果我使用 Windows 远程桌面登录,程序会识别物理显卡吗?还是因为我在远程,服务器甚至不会识别出插入了显卡? 编辑:我想提一下,所有计算都将远程进行,这台机器上的任何内容都取决于我家用 PC
..
我的内核在 CC 3.0 (Kepler) 上的性能比在 CC 2.0 (Fermi) 上的性能差.在 Nsight 分析器中,Warp Issue Efficiency 图表显示 60% 的时间没有符合条件的 warp,Issue Stall Reasons 图表显示 60%这些是由于“其他"造成的. 我想知道其他问题停滞的原因是什么以及我可以做些什么来减少它们. CUDA 5.0.
..
我的内核调用因“内存不足"而失败.它大量使用了堆栈帧,我想知道这是否是它失败的原因. 使用 --ptxas-options=-v 调用 nvcc 时,它会打印以下配置文件信息: 150352 字节堆栈帧,0 字节溢出存储,0 字节溢出加载ptxas 信息:使用了 59 个寄存器,40 字节 cmem[0] 硬件:GTX480、sm20、1.5GB 设备内存、48KB 共享内存/多处理器
..
作为标题,我想知道正确的执行顺序,以防我们有 3d 块 我想记得我已经读过一些关于它的东西,但那是前一段时间,我不记得在哪里,但它是由一个看起来不那么可靠的人来的.. 无论如何,我想对此进行一些确认. 是不是如下(分经)? [0, 0, 0]...[blockDim.x, 0, 0] - [0, 1, 0]...[blockDim.x, 1, 0] - (...) - [0
..