gpgpu

    0热度

    1回答

    我有一个OpenCL(1.2)内核,其参数为constant,它是一个子缓冲区。当我运行这个内核时,似乎使用了父缓冲区。如果我使用global const参数,它按预期工作。 我会把它放在一个驱动程序错误,除了我可以在不同的机器上的英特尔(Linux,beignet git)和nVidia(Linux,367.44-3)实现上重现它,这让我觉得我已经做出了某处出现错误。 下面是一个工作示例。预期的

    7热度

    3回答

    ,当我与帕斯卡泰坦X GPU一起测试新的CUDA 8和期待加快我的代码,但由于某种原因,它最终被较慢的是NVIDIA的GPU帕斯卡尔上运行CUDA内核慢。我在Ubuntu 16.04上。 下面是可以再现的结果的最小的代码: CUDASample.cuh class CUDASample{ public: void AddOneToVector(std::vector<int> &in)

    0热度

    1回答

    假设我想使用GPU来搜索大小为2^L的未排序1D数组中的特定值,其中L是正整数。数组中的所有值都是唯一。 是否可以使用并行缩减(乒乓技术)将搜索结果缩减为单个数字? 我的直觉告诉我,这是可能的,但我不知道如何开始。谁能帮我吗?我坚持了几天!任何建议,欢迎,谢谢!

    0热度

    1回答

    如何在OpenCL中安全地添加元素到数组的末尾? 通过安全,我的意思是,有没有并发问题,就像一个线程试图在同一位置添加一个元素作为另一个元素

    1热度

    1回答

    我想使用clock()来比较不同的内核实现。我试图用一个简单的SAXPY例子来实现它,但它导致零时钟周期,这是不太可能的。 我已经找到了一些关于如何实现clock()的例子。 here和here。但不知何故转移到我的代码不起作用。 这里是我使用的代码: /* SAXPY code example from https://devblogs.nvidia.com/parallelforall/eas

    1热度

    1回答

    我有一个大小为MxN的二维数组,其中N是2的幂大于或等于16,M是任意整数,它不是2的幂。例如,数组A的大小可以是200x32。 我想通过在数组行中执行reduce(add)操作来将数组A缩小到1x32的大小。我遇到的大多数减少操作都是通过使用Blelloch/Hillis扫描算法添加连续元素来将数组减少为单个值。在我的情况下,连续的元素是不相关的,不能被添加。但是,我需要添加元素[1,33,65

    0热度

    1回答

    我正在使用特斯拉k40c gpu。我在其上运行下面的代码: #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); } inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort=true) { if (code !=

    0热度

    1回答

    我正在编写一个CUDA内核来执行哈希。一旦我得到输入,我首先尝试使用预定义的散列桶大小对它进行散列,如果发生溢出,则在散列期间,然后我需要使用更大的桶大小重新执行散列。所以我想知道是否有内置的cuda函数可以让我在发生桶溢出时向主机代码报告错误。我知道我可以将某些东西写入预定义的内存位置,然后让主机代码读取它,但如果可用,我宁愿在构建的基元中使用一些。

    0热度

    1回答

    我想了解一个块中的线程数量如何影响cuda程序的性能和速度。我写了一个简单的载体附加码,这里是我的代码: #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); } inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort=tr

    1热度

    1回答

    我对OpenCL相当陌生。我在大学时学到了一点点,有一点我的意思是我的图形教授在一天中教会了我们关于GPGPU和OpenCL的知识(而其他人则专注于着色器和OpenGL等等)。 我拿了一个示例程序,并将其改为与我希望它运行的计算一起工作。但是,我的程序在CPU上运行速度比我的GPU快得多,我试图理解为什么。 我的程序需要一个输入浮点数组,并有两个输出数组。在单线程情况下,它有三个参数。输入数组的大