cuda

错误:不允许从 __global__ 函数调用 __host__ 函数

我已经为特征点的密集采样编写了 cuda 函数,但我遇到了错误。我的 cuda 代码如下所示。我正在使用 cuda 7.5 工具包。 #include <stdlib.h> #include <stdio.h> #include <math.h> #include <opencv2/core/core.hpp> #include <openc... »

使用 native-CUDA-support CMake 获取 C++ 目标中的 CUDA 包含目录?

在 CMake 版本 3.8 中,引入了对 CUDA 作为语言的原生支持。当项目将 CUDA 作为其语言之一时,CMake 将继续定位 CUDA(例如,它定位 nvcc 二进制文件)。 只要你只编译 CUDA 代码——这就足够了。但是如果你想在那个项目中编译一个 C++ 目标呢? CUDA 包含不是 -I'ed 自动,CMakeCache.txt 似乎没有在任何地方包含 CUDA 包含路径。 ... »

c++

CUDA 超时? /费米/gtx465

我在 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 设备内存事务

我编写了小 cuda 代码来了解全局内存到共享内存传输事务。代码如下: #include <iostream> using namespace std; __global__ void readUChar4(uchar4* c, uchar4* o){ extern __shared__ uchar4 gc[]; int tid = threadIdx.x; gc[ti... »

CUDA:嵌入式for循环内核

我有一些代码想要制作成 cuda 内核。看: for (r = Y; r < Y + H; r+=2) { ch1RowSum = ch2RowSum = ch3RowSum = 0; for (c = X; c < X + W; c+=2) { chan1Value = //some calc'... »

c++

CUDA程序崩溃的驱动程序

我正在尝试让一段代码在 cuda 设备上并行工作,但我遇到了一个问题,我的 gfx 驱动程序在程序运行时不断崩溃,但仅对于这个程序,其他 cuda 代码运行良好。它给出了错误的答案,但我认为这是因为崩溃! 注意:它是在 Quadro 2000M GFX 卡上运行的! 这是我的并行版本的代码。 #include <stdio.h> #include <time.h> #... »

c++

__ddiv_ru 的语义

从 __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... »

CPU 超过 GPU

我对理解SM中的CUDA线程处理有些疑惑。从我一直在阅读的内容中推断出以下命题: 我的 GPU 是:GTX650Ti。 块中的线程计数必须始终是 Warp 大小的倍数。因此,每个 SM 可以处理 32 个线程的块 (warpSize)。 我的 SM 可以同时计算的最大线程数为 2048 (maxThreadsPerMultiProcessor)。 由于每个 SM 可以同时计算 2048 个... »

使用 cublas 的矩阵列排列

我有一个大小为 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... »

CUDA - 同步线程 -> 等到第一个输入完成写入

我正在尝试执行以下操作(简化):请阅读编辑部分! __shared__ int currentPos = 0; __global__ myThreadedFunction(float *int, float *out) { // do calculations with in values ... // now first thread reach this: ... »

BFS 的最短路径,将代码从 CUDA 移植到 openCL

我目前正在移植一个 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 性能约束:条件分支

伙计们,我想知道一些与条件分支相关的 cuda 性能。我有以下代码 if(i==5) i=10; else i=5; 现在,如果我使用以下语句而不是这个,它会消除 cuda 中的 n/2 性能瓶颈吗? i=(i==5)?10:5; 提前感谢您的帮助。... »

在 Jetson TK1 上使用 Numbapro

我已经搜索了整个互联网,但我没有找到可靠的答案。我需要指出,我是 GPU 编程的新手,但我刚刚订购了我的 Jetson TK1 单元,因为我喜欢模拟并且我喜欢 Python。我已经在 PC 上试用了 Numpy,但我想将这些模拟带到 Android 上。 我读过 PyCuda 和 Numba,但我更喜欢后者,因为它完全是在 python 中,我不必用 C 编写内核。我似乎不明白的是如何(在我的 J... »

如何使用 cuda 沿行方向对巨大的 2D 矩阵执行缩减? (每行的最大值和最大值的索引)

我正在尝试沿二维矩阵的行方向进行缩减。我从在 stackoverflow 上找到的代码开始(非常感谢 Robert!) thrust::max_element slow in comparison cublasIsamax - More efficient implementation? 上面的链接显示了一个在单行上执行归约的自定义内核。它将输入行分成许多行,每行有 1024 个线程。效果很好... »

c

cuda:读取设备内存变量需要同步

我正在 cuda 中运行一个迭代程序,该程序一直运行到收敛。正如这篇 SO 帖子 (Are cuda kernel calls synchronous or asynchronous) 中所说,从 CPU 的角度来看,cuda 内核是异步的。 在我的程序中,其中一个内核检查收敛并将布尔值返回给主机以进行读取。我想知道,我是否需要这样做 cudaDeviceSynchronize() 在读取... »

使用 CUDA 绘制三角形

我正在编写自己的图形库(是的,它的功课:)并使用 cuda 快速完成所有渲染和计算。 我在绘制实心三角形时遇到问题。我是这样写的,一个进程画一个三角形。当场景中有很多小三角形时它工作得很好,但是当三角形很大时它会完全破坏性能。 我的想法是做两次传球。首先计算仅包含有关扫描线信息的选项卡(从这里到那里绘制)。这将是每个进程计算的三角形,就像在当前算法中一样。在第二遍中,真正绘制每个三角形多个进程... »

为什么 CUDA 中网格中的所有块的 Blockdim 都应该相同?

为什么blockDim,块中的线程总数,对于CUDA程序中网格中的所有块都相同?我知道如果所有块的块大小都相同,索引将非常容易,但如果我有大小为 32 倍数的块(对于扭曲)但按递增顺序,则可能 AP 或 GP 索引非常容易。 使网格的所有块大小相同的原因是什么? ... »

如何将矩阵连续存储在 GPU 内存中并在需要时使用它?

我正在尝试通过 CUDA 并行化某些函数,该函数被多次调用。每次它处理相同的矩阵。我想将此矩阵存储在 GPU 内存中,当调用函数时,我想将向量上传到 GPU 并将其乘以矩阵并返回结果。我更喜欢 C++ 模板风格,因此推力具有更高的优先级。 请向我推荐一些功能来做到这一点,如果可能的话,请推荐一些小示例。 我不提供代码不是因为它是一个秘密,而是因为它的复杂性和庞大的规模。 ... »

c++