标签: nvidia

GPU利用率解读

我使用 NVIDIA Profiler 测试了一个内核,它输出以下内容:

在此输入图像描述

我们启动了具有 256 个块和 256 个线程的内核。据我了解,该图显示了三个部分,一个用于 Warps ,一个用于寄存器,一个用于共享内存,每个部分都有一个计算出的“块限制”,其中寄存器部分中的部分是最小且最有限制的值。显然,内核是寄存器绑定的,我们只能在一个 SM 上同时启动 4 个块。这就是探查器所说的。我彻底问自己以下事情:

一块 GTX 780 Ti,一个 SM 中有 192 个核心,怎么可能同时启动 4 个块 * 256 个线程 = 1024 个线程?在 CUDA 术语中,“同时”是什么意思?这是否意味着可以在调度程序中同时调度 4 个块,并且 SM 同时从一个块的扭曲中以锁步方式执行指令。同时这个词有点混乱?

多谢

cuda nvidia

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

练习计算 CUDA 的网格大小

dim3 block(4, 2)
dim3 grid((nx+block.x-1)/block.x, (ny.block.y-1)/block.y);
Run Code Online (Sandbox Code Playgroud)

我在专业 CUDA C 编程第 53 页中找到了这段代码。它是矩阵乘法的一个简单示例。nx是列数,ny是行数。

您能解释一下网格大小是如何计算的吗?为什么block.x先加上nx然后减去1

有预览 ( https://books.google.com/books?id=_Z7rnAEACAAJ&printsec=frontcover#v=onepage&q&f=false ),但缺少第 53 页。

cuda nvidia

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

使用 CUDA 减少排列在大向量中的多个等长块

我正在寻找一种快速方法来减少排列为大向量的多个相同长度的块。我有 N 个子数组(连续元素),它们排列在一个大数组中。每个子数组都有固定的大小:k。所以整个数组的大小是:N*K

我正在做的是调用内核N次。每次它计算子数组的减少如下:我将迭代大向量中包含的所有子数组:

    for(i=0;i<N;i++){
       thrust::device_vector< float > Vec(subarray, subarray+k);
       float sum = thrust::reduce(Vec.begin(), Vec.end(), (float)0, thrust::plus<float>());
       printf("sum %f\n",sum);
 }
Run Code Online (Sandbox Code Playgroud)

对于纯 CUDA 我会这样做(伪代码):

 for(i=0;i<N;i++){
        reduction_kernel(subarray)

         }
Run Code Online (Sandbox Code Playgroud)

您是否有另一种解决方案来一次性执行连续子数组的缩减?使用纯 CUDA 或 Thrust

cuda gpgpu nvidia reduction thrust

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

以比我的物理显示器(仅 1080p)更高的分辨率(例如:4K)进行屏幕录制

我经常需要录制屏幕并将其编辑成演示视频。

迄今为止我发现的最好的软件是 OBSproject.com,这是一款免费、开源、非常灵活的流媒体和屏幕录制软件。

我非常希望能够以比我的物理显示器(仅 1080p)更高的分辨率(例如:4K)进行录制,然后在编辑时无损放大。

有哪位高手知道如何做到这一点吗?创建这些软件演示视频时将会有巨大的帮助!如果答案是另一个捕获软件或一些 FFMPEG 魔法,我就失望了。

ps 我已经遇到过Nvidia 设置“DSR Factors”,但是在测试时,看起来它是一个有损的 UPSCALE,而不是真正的 4k。

video saas nvidia obs

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

发出重放的加载/存储指令

有两个nvprof关于加载/存储指令的度量,它们是ldst_executedldst_issued。我们知道executed<=issued。我预计那些发出但未执行的加载/存储与分支预测和其他不正确的预测有关。然而,从(幻灯片9)文档和主题来看,发出但未执行的指令与序列化和重放有关。

我不知道这个原因是否适用于加载/存储指令。另外,我想知道为什么用这样的术语来表示已发出但未执行的指令?如果由于任何原因存在序列化,指令将被执行多次。那么,为什么它们不被算作呢executed

对此有何解释?

cuda nvidia nvprof

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

致命错误:cuda_runtime_api.h:尝试在 docker 中使用 cuda 时没有此类文件或目录

我正在尝试为我想要部署的 python 脚本构建一个 docker 映像。这是我第一次使用 docker,所以我可能做错了什么,但我不知道是什么。

我的系统:

OS: Ubuntu 20.04
docker version: 19.03.8
Run Code Online (Sandbox Code Playgroud)

我正在使用这个 Dockerfile:

# Dockerfile
FROM nvidia/cuda:11.0-base

COPY . /SingleModelTest

WORKDIR /SingleModelTest

RUN nvidia-smi

RUN set -xe \           #these are just to make sure pip and git are installed to install the requirements
    && apt-get update \
    && apt-get install python3-pip -y \
    && apt-get install git -y 
RUN pip3 install --upgrade pip

RUN pip3 install -r requirements/requirements1.txt
RUN pip3 install -r requirements/requirements2.txt    #this is where it fails …
Run Code Online (Sandbox Code Playgroud)

python ubuntu cuda nvidia docker

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

为什么线程块中的变量具有相同的内存地址?库达

我想知道为什么它们具有相同的内存地址,如果我没记错的话,每个线程都有一个自己的已创建变量的副本,这样:

__global__ void
Matrix_Multiplication_Shared(
   const int* const Matrix_A, 
   const int* const Matrix_B, 
         int* const Matrix_C)
{   
    const int sum_value = threadIdx.x;
    printf("%p \n", &sum_value);
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

我正在考虑一个线程块的情况,例如有 2 个或更多线程。

cuda nvidia

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

Nvidia 驱动安装未满足依赖关系

我有一台配备1060 GPU 的笔记本电脑,安装了 Ubuntu 20.04。我已经安装了nvidia-driver-460 + cuda 11.2并一直工作到今天。我今天尝试安装 ROS,在按照此链接添加源代码和密钥后,它不允许我安装 ROS,说某些软件包有unmet dependencies。之后我发布了apt autoremove并删除了nvidia 驱动程序cuda

我仍然无法安装 ROS,现在尝试安装也apt install nvidia-driver-460可以。这是与命令输出类似的unmet dependencies输出sudo ubuntu-drivers autoinstallapt install

Reading package lists... Done
Building dependenc    y tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages …
Run Code Online (Sandbox Code Playgroud)

linux graphics ubuntu apt nvidia

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

我可以仅对基于 docker 的系统的主机使用 nvidia 驱动程序吗?

我在理解 cuda 和 docker 生态系统时遇到问题。

在主机(ubuntu 22.04)服务器上,我想生成多个机器学习 Jupyter 笔记本。

如果我在主机 ubuntu 中仅安装 Nvidia 驱动程序就足够了,如下所示:

sudo apt-get install linux-headers-$(uname -r)
DISTRIBUTION=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
echo $DISTRIBUTION
wget https://developer.download.nvidia.com/compute/cuda/repos/$DISTRIBUTION/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-drivers

sudo reboot

#After reboot verify if the CUDA driver is installed:
nvidia-smi
Run Code Online (Sandbox Code Playgroud)

然后cuda像这样安装在容器中:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt-get update
sudo apt-get -y install …
Run Code Online (Sandbox Code Playgroud)

ubuntu cuda nvidia docker nvidia-docker

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

使用 Intel oneAPI DPC++ 编译器将 OpenMP 卸载到 NVIDIA GPU

我的任务是编写一个通过 OpenMP 卸载到 GPU 的程序。目前我使用 Intel oneAPI DPC++ 编译器编译我的代码icpxv2022.1.0 编译代码,目标是在后端使用 NVIDIA Tesla V100。请在下面找到我的相关部分Makefile

MKLROOT   = /lustre/system/local/apps/intel/oneapi/2022.2.0/mkl/latest

CXX       = icpx
INC       =-I"${MKLROOT}/include"
CXXFLAGS  =-qopenmp -fopenmp-targets=spir64 ${INC} --gcc-toolchain=/lustre/system/local/apps/gcc9/9.3.0
LDFLAGS   =-qopenmp -fopenmp-targets=spir64 -fsycl -L${MKLROOT}/lib/intel64
LDLIBS    =-lmkl_sycl -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lsycl -lOpenCL -lstdc++ -lpthread -lm -ldl

${EXE}: ${OBJ}
    ${CXX} ${CXXFLAGS} $^ ${LDFLAGS} ${LDLIBS} -o $@
Run Code Online (Sandbox Code Playgroud)

该代码编译时没有错误和警告,但我不完全确定它在运行时确实使用了 GPU。

  1. 我如何验证这一点?我可以使用 Intel 或 NVIDIA 分析器来检查吗?
  2. 我的假设是否正确,即英特尔编译器支持卸载到 NVIDIA GPU?
  3. 或者我应该更好地使用 NVIDIA 编译器来启用 OpenMP 卸载到 NVIDIA 显卡?

gpu nvidia openmp offloading intel-oneapi

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