小编tal*_*ies的帖子

是否有一个在CUDA内核中工作的memcpy()的等价物?

我试图使用CUDA内核异步拆分并重新整形数组的结构.memcpy()在内核中不起作用,也不起作用cudaMemcpy()*; 我不知所措.

谁能告诉我从CUDA内核中复制内存的首选方法?

值得注意的是,它cudaMemcpy(void *to, void *from, size, cudaMemcpyDeviceToDevice)不能用于我想要做的事情,因为它只能从内核外部调用而不能异步执行.

cuda

19
推荐指数
2
解决办法
2万
查看次数

如何衡量NVIDIA CUDA的内核时间?

我想测量GPU的时间内核,如何在NVIDIA CUDA中测量它?例如

__global__ void kernelSample()
{
  some code here
  get start time 
  some code here 
  get stop time 
  some code here
}
Run Code Online (Sandbox Code Playgroud)

cuda gpu gpgpu nvidia

19
推荐指数
2
解决办法
1万
查看次数

NVIDIA-SMI因为无法与NVIDIA驱动程序通信而失败

我正在使用Ubuntu 14.04 LTS运行AWS EC2 g2.2xlarge实例.我想在训练我的TensorFlow模型时观察GPU的利用率.我试图运行'nvidia-smi'时遇到错误.

ubuntu@ip-10-0-1-213:/etc/alternatives$ cd /usr/lib/nvidia-375/bin
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ ls
nvidia-bug-report.sh     nvidia-debugdump     nvidia-xconfig
nvidia-cuda-mps-control  nvidia-persistenced
nvidia-cuda-mps-server   nvidia-smi
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ ./nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.


ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ dpkg -l | grep nvidia 
ii  nvidia-346                                            352.63-0ubuntu0.14.04.1                             amd64        Transitional package for nvidia-346
ii  nvidia-346-dev                                        346.46-0ubuntu1                                     amd64        NVIDIA binary Xorg driver development files
ii  nvidia-346-uvm                                        346.96-0ubuntu0.0.1                                 amd64        Transitional package for nvidia-346
ii  nvidia-352                                            375.26-0ubuntu1                                     amd64        Transitional package for …
Run Code Online (Sandbox Code Playgroud)

gpu

19
推荐指数
9
解决办法
7万
查看次数

CUDA __threadfence()

我已经浏览了很多论坛帖子和NVIDIA文档,但我无法理解它是什么__threadfence()以及如何使用它.有人可以解释一下内在的目的是什么吗?

cuda

18
推荐指数
1
解决办法
1万
查看次数

CUDA块和变形

好的,我知道相关的问题一再被问到,我几乎读到了我发现的所有内容,但事情仍然不清楚.可能也是因为我发现并阅读了彼此矛盾的事物(可能是因为,从不同时期,他们提到具有不同计算能力的设备,其间似乎存在相当大的差距).我希望更有效率,减少我的执行时间,因此我需要确切知道有多少线程/ warp /块可以并行运行.此外,我正在考虑对此进行概括,并根据我知道必须执行的操作(对于更简单的程序)和系统规范计算传递给我的内核的最佳线程数和块数.

我有一台GTX 550Ti,btw具有2.1的计算能力.4个SM x 48个核心= 192个CUDA核心.

好的,我不清楚的是:

可以在多处理器(SM)上运行AT ONCE(并行)多于1个块吗?我读到最多可以为SM分配8个块,但没有关于它们如何运行的分配.从我每个SM的最大线程数(1536)几乎不大于我每个块的最大线程数(1024)的事实来看,我认为块不是并行运行的(可能是1个半?).或者至少不是如果我有最大线程数.另外,如果我设置块数,比如4(我的SM数量),它们是否会被发送到不同的SM?或者我无法真正控制所有这些如何在硬件上分布然后这是一个没有实际意义的点,我的执行时间将根据我的设备的奇思妙想而变化...

其次,我知道一个块会将它的线程划分为32个并行运行的线程组,称为warps.现在这些经线(假设它们彼此没有关系)可以并行运行吗?因为在Fermi架构中它声明同时执行2个warp,从每个warp向一组16(?)内核发送一条指令,而在其他地方我读到每个内核处理一个warp,这可以解释1536个最大线程( 32*48)但似乎有点多.1个CUDA核心可以同时处理32个线程吗?

更简单的说明,我要问的是:(对于ex)如果我想在第三个向量中求和2个向量,我应该给它们多长(nr个运算)以及如何在块和线程中将它们分开我的设备以满容量(并行)工作(没有空闲核心或SM).

我很抱歉,如果之前被问过,我没有得到它或没有看到它.希望您能够帮助我.谢谢!

cuda

18
推荐指数
1
解决办法
7759
查看次数

如何在OpenCL中使用固定内存/映射内存

为了减少我的应用程序从主机到设备的传输时间,我想使用固定内存.NVIDIA的最佳实践指南建议使用以下代码映射缓冲区并写入数据:

cDataIn = (unsigned char*)clEnqueueMapBuffer(cqCommandQue, cmPinnedBufIn, CL_TRUE,CL_MAP_WRITE, 0, memSize, 0, NULL, NULL, NULL);

for(unsigned int i = 0; i < memSize; i++) 
{ 
    cDataIn[i] = (unsigned char)(i & 0xff); 
}

clEnqueueWriteBuffer(cqCommandQue, cmDevBufIn, CL_FALSE, 0, 
szBuffBytes, cDataIn, 0, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

英特尔的优化指南建议使用对clEnqueueMapBuffer和clEnqueueUnmapBuffer的调用,而不是调用clEnqueueReadBuffer或clEnqueueWriteBuffer.

使用固定内存/映射内存的正确方法是什么?是否有必要使用enqueueWriteBuffer写入数据或者enqueueMapBuffer是否足够?

另外,CL_MEM_ALLOC_HOST_PTR和CL_MEM_USE_HOST_PTR之间有什么区别?

memory gpu data-transfer gpgpu opencl

18
推荐指数
1
解决办法
6119
查看次数

CUDA计算能力要求

什么是最低计算能力要求:

  1. CUDA 5.5?
  2. CUDA 6.0?
  3. CUDA 6.5?

cuda

18
推荐指数
1
解决办法
2万
查看次数

什么是具有强度1边缘矩阵的设备互连StreamExecutor

我有四块NVIDIA GTX 1080图形卡,当我初始化一个会话时,我看到以下控制台输出:

Adding visible gpu devices: 0, 1, 2, 3
 Device interconnect StreamExecutor with strength 1 edge matrix:
      0 1 2 3 
 0:   N Y N N 
 1:   Y N N N 
 2:   N N N Y 
 3:   N N Y N 
Run Code Online (Sandbox Code Playgroud)

我还有2块NVIDIA M60 Tesla图形卡,初始化如下:

Adding visible gpu devices: 0, 1, 2, 3
 Device interconnect StreamExecutor with strength 1 edge matrix:
      0 1 2 3 
 0:   N N N N 
 1:   N N N N 
 2:   N N N …
Run Code Online (Sandbox Code Playgroud)

nvidia tensorflow

18
推荐指数
1
解决办法
2796
查看次数

安装 cudatoolkit 时缺少 Nvcc?

我已经在 pytorch 上安装了 cuda

conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有安装 nvcc。例如nvcc -V,如果我想使用,我会收到未找到 nvcc 的错误,我应该使用sudo apt install nvidia-cuda-toolkit. Can I do this安装它(我不想只是尝试然后发现它不起作用/弄乱了整个cuda 设置)。这是错误还是预期行为?

我使用的是 Ubuntu 18.04 并且有 cuda 10.2

cuda nvcc anaconda pytorch

18
推荐指数
6
解决办法
2万
查看次数

如何在不重启内核的情况下在 PyTorch 模型训练后清除 GPU 内存

我正在 Jupyter-Lab 笔记本上训练 PyTorch 深度学习模型,在 Tesla K80 GPU 上使用 CUDA 进行训练。在进行训练迭代时,会使用 12 GB 的 GPU 内存。我通过保存模型检查点来完成训练,但想继续使用笔记本进行进一步分析(分析中间结果等)。

但是,这些 12 GBnvtop在完成训练后继续被占用(如从 中看到的)。我想释放这个内存,以便我可以将它用于其他笔记本。

到目前为止,我的解决方案是重新启动此笔记本的内核,但这并不能解决我的问题,因为到目前为止我无法继续使用相同的笔记本及其各自计算的输出。

python jupyter pytorch

18
推荐指数
4
解决办法
2万
查看次数

标签 统计

cuda ×6

gpu ×3

gpgpu ×2

nvidia ×2

pytorch ×2

anaconda ×1

data-transfer ×1

jupyter ×1

memory ×1

nvcc ×1

opencl ×1

python ×1

tensorflow ×1