22得票1回答
CUDA:如何在内核函数中调用__device__函数

我有一个内核,其中在if语句中调用了设备函数。 代码如下:__device__ void SetValues(int *ptr,int id) { if(ptr[threadIdx.x]==id) //question related to here ptr[thr...

15得票1回答
多个线程在同一个全局内存位置写入相同的值。

这个问题与这个问题密切相关,但我的问题属于CUDA领域。 我在内核中有几个线程可能会将完全相同的值写入相同的全局内存位置。这一直运行良好,但我担心它可能存在潜在的错误,并且到目前为止我只是幸运而已。 在我的工作流程中是否存在内存损坏或意外行为的可能性(由于数据竞争,缓存同步等)?

13得票2回答
为什么我的CUDA数学库sqrt()函数调用失败?

我是Cuda的新手,我有以下函数:__global__ void square(float *myArrayGPU) { myArrayGPU[threadIdx.x] = sqrt(threadIdx.x); } 我想使用CUDA数学库,我尝试了#include "math.h",但仍...

27得票2回答
每个网格的最大块数:CUDA

每个内核启动的网格中最多可以创建多少块? 我有点困惑,因为计算能力表此处显示在CUDA计算能力2.0中每个网格维度可以有65535个块。 这是意味着总块数= 65535 * 65535吗?还是它意味着你最多可以将65535重新排列成65536个块的1D网格或sqrt(65535)* sqrt(...

14得票2回答
cudaArray与设备指针的区别

我对设备指针和cudaArray结构的使用目的有些困惑。请问有人可以解释一下为什么我要使用其中之一吗?我的基本问题是,在查阅文档和阅读书籍“CUDA by Example”后,我不理解API设计者的意图。 根据我所看到的,似乎应该使用cudaArray来处理纹理,而指针则用于直接访问内存。另...

65得票5回答
__syncthreads()函数是否同步网格中的所有线程?

__syncthreads()函数是否同步网格中的所有线程,还是只同步当前warp或块中的线程? 此外,当特定块中的线程在内核中遇到以下行时: __shared__ float srdMem[128]; 他们只会在每个块中声明这个空间一次吗? 显然,它们都是异步操作的,因此如果块2...

12得票2回答
如何让VS 2010识别特定的CUDA函数

目前,CUDA已经可以识别一些重要的CUDA C/C++函数,例如cudaMalloc、cudaFree、cudaEventCreate等,并且它也能够识别某些类型,如dim3和cudaEvent_t。 然而,它并不能识别其他函数和类型,例如纹理模板、__syncthreads函数或atom...

9得票2回答
并行归约

我阅读了Mark Harris的《在CUDA中优化并行归约》一文,发现它非常有用。但有时我仍然无法理解其中的1或2个概念。在第18页上写道: //First add during load // each thread loads one element from global to sh...

9得票2回答
如何在.cpp文件中包含<cuda_runtime.h>

我在 .cpp 文件中包含 &lt;cuda_runtime.h&gt; 时遇到了问题。错误信息: Cannot include file: cuda_runtime.h: No such file or directory。 我正在尝试编译 Rob Farber 的代码(http://ww...

290得票7回答
nvcc和NVIDIA-smi显示的CUDA版本不同。

我对运行which nvcc和nvidia-smi所显示的不同CUDA版本感到非常困惑。我在我的ubuntu 16.04上安装了cuda9.2和cuda10。现在我将路径设置为指向cuda9.2。所以当我运行时 $ which nvcc /usr/local/cuda-9.2/bin/nvc...