当多个线程写入全局设备内存时,在全局设备内存中获取意外值
这是 cuda 线程、内存管理的问题,它返回单线程结果“100”,但预计 9 个线程结果“900”。 #indudel <stdio.h> #include <assert.h> #include <cuda_runtime.h> #include <helper_functions.h> #include <helper_cuda.h>... »
这是 cuda 线程、内存管理的问题,它返回单线程结果“100”,但预计 9 个线程结果“900”。 #indudel <stdio.h> #include <assert.h> #include <cuda_runtime.h> #include <helper_functions.h> #include <helper_cuda.h>... »
我已经为特征点的密集采样编写了 cuda 函数,但我遇到了错误。我的 cuda 代码如下所示。我正在使用 cuda 7.5 工具包。 #include <stdlib.h> #include <stdio.h> #include <math.h> #include <opencv2/core/core.hpp> #include <openc... »
在 CMake 版本 3.8 中,引入了对 CUDA 作为语言的原生支持。当项目将 CUDA 作为其语言之一时,CMake 将继续定位 CUDA(例如,它定位 nvcc 二进制文件)。 只要你只编译 CUDA 代码——这就足够了。但是如果你想在那个项目中编译一个 C++ 目标呢? CUDA 包含不是 -I'ed 自动,CMakeCache.txt 似乎没有在任何地方包含 CUDA 包含路径。 ... »
我在 MS VS2005 上使用 CUDA SDK 3.1,GPU GTX465 1 GB。我有这样一个核函数: __global__ void CRT_GPU_2(float *A, float *X, float *Y, float *Z, float *pIntensity, float *firstTime, float *pointsNumber) { int holo_x =... »
我编写了小 cuda 代码来了解全局内存到共享内存传输事务。代码如下: #include <iostream> using namespace std; __global__ void readUChar4(uchar4* c, uchar4* o){ extern __shared__ uchar4 gc[]; int tid = threadIdx.x; gc[ti... »
这是我的压缩列格式的稀疏矩阵乘法代码 __kernel void mykernel(__global int* colvector, __global int* val, __global int* result, __global int* index, ... »
我有一些代码想要制作成 cuda 内核。看: for (r = Y; r < Y + H; r+=2) { ch1RowSum = ch2RowSum = ch3RowSum = 0; for (c = X; c < X + W; c+=2) { chan1Value = //some calc'... »
我正在尝试让一段代码在 cuda 设备上并行工作,但我遇到了一个问题,我的 gfx 驱动程序在程序运行时不断崩溃,但仅对于这个程序,其他 cuda 代码运行良好。它给出了错误的答案,但我认为这是因为崩溃! 注意:它是在 Quadro 2000M GFX 卡上运行的! 这是我的并行版本的代码。 #include <stdio.h> #include <time.h> #... »
从 __ddiv_ru 的 documentation 我预计以下代码结果是 ceil(8/32) = 1.0,而不是我得到 0.25。 #include <iostream> using namespace std; __managed__ double x; __managed__ double y; __managed__ double r; __global__ voi... »
我对理解SM中的CUDA线程处理有些疑惑。从我一直在阅读的内容中推断出以下命题: 我的 GPU 是:GTX650Ti。 块中的线程计数必须始终是 Warp 大小的倍数。因此,每个 SM 可以处理 32 个线程的块 (warpSize)。 我的 SM 可以同时计算的最大线程数为 2048 (maxThreadsPerMultiProcessor)。 由于每个 SM 可以同时计算 2048 个... »
我有一个大小为 10x20 的输入矩阵 A,我想按如下方式排列它的列: p=[1 4 2 3 5 11 7 13 6 12 8 14 17 9 15 18 10 16 19 20] ;%rearrange the columns of A A=A(:,p); 为此,我构造了一个与置换向量p相对应的置换矩阵I,通过执行以下乘法可以得到置换后的A: A=A*I 我在 Matl... »
我正在尝试执行以下操作(简化):请阅读编辑部分! __shared__ int currentPos = 0; __global__ myThreadedFunction(float *int, float *out) { // do calculations with in values ... // now first thread reach this: ... »
我目前正在移植一个 CUDA 代码,该代码在(无向)图中找到从每个节点到其他节点的最短路径。 所以基本上,CUDA 代码构建了一个从文本文件中读取的图形。然后它继续构建相邻数组 h_v 和 h_e。 For example A B A C B C gives h_v[0] = 0, h_e[0]=1 h_v[1] = 0, h_e[1]=2 h_v[2] = 1, h_e[2]=2 然后它... »
伙计们,我想知道一些与条件分支相关的 cuda 性能。我有以下代码 if(i==5) i=10; else i=5; 现在,如果我使用以下语句而不是这个,它会消除 cuda 中的 n/2 性能瓶颈吗? i=(i==5)?10:5; 提前感谢您的帮助。... »
我已经搜索了整个互联网,但我没有找到可靠的答案。我需要指出,我是 GPU 编程的新手,但我刚刚订购了我的 Jetson TK1 单元,因为我喜欢模拟并且我喜欢 Python。我已经在 PC 上试用了 Numpy,但我想将这些模拟带到 Android 上。 我读过 PyCuda 和 Numba,但我更喜欢后者,因为它完全是在 python 中,我不必用 C 编写内核。我似乎不明白的是如何(在我的 J... »
我正在尝试沿二维矩阵的行方向进行缩减。我从在 stackoverflow 上找到的代码开始(非常感谢 Robert!) thrust::max_element slow in comparison cublasIsamax - More efficient implementation? 上面的链接显示了一个在单行上执行归约的自定义内核。它将输入行分成许多行,每行有 1024 个线程。效果很好... »
我正在 cuda 中运行一个迭代程序,该程序一直运行到收敛。正如这篇 SO 帖子 (Are cuda kernel calls synchronous or asynchronous) 中所说,从 CPU 的角度来看,cuda 内核是异步的。 在我的程序中,其中一个内核检查收敛并将布尔值返回给主机以进行读取。我想知道,我是否需要这样做 cudaDeviceSynchronize() 在读取... »
我正在编写自己的图形库(是的,它的功课:)并使用 cuda 快速完成所有渲染和计算。 我在绘制实心三角形时遇到问题。我是这样写的,一个进程画一个三角形。当场景中有很多小三角形时它工作得很好,但是当三角形很大时它会完全破坏性能。 我的想法是做两次传球。首先计算仅包含有关扫描线信息的选项卡(从这里到那里绘制)。这将是每个进程计算的三角形,就像在当前算法中一样。在第二遍中,真正绘制每个三角形多个进程... »
为什么blockDim,块中的线程总数,对于CUDA程序中网格中的所有块都相同?我知道如果所有块的块大小都相同,索引将非常容易,但如果我有大小为 32 倍数的块(对于扭曲)但按递增顺序,则可能 AP 或 GP 索引非常容易。 使网格的所有块大小相同的原因是什么? ... »
我正在尝试通过 CUDA 并行化某些函数,该函数被多次调用。每次它处理相同的矩阵。我想将此矩阵存储在 GPU 内存中,当调用函数时,我想将向量上传到 GPU 并将其乘以矩阵并返回结果。我更喜欢 C++ 模板风格,因此推力具有更高的优先级。 请向我推荐一些功能来做到这一点,如果可能的话,请推荐一些小示例。 我不提供代码不是因为它是一个秘密,而是因为它的复杂性和庞大的规模。 ... »