标签: gpu

如何方便的获取pytorch模块的设备类型?

我必须在使用不同设备的不同类型的 pytorch 模型上堆叠一些我自己的层。

例如,Acuda模型,Bcpu模型(但在获得设备类型之前我不知道)。那么新模型分别是CD,其中

class NewModule(torch.nn.Module):
    def __init__(self, base):
        super(NewModule, self).__init__()
        self.base = base
        self.extra = my_layer() # e.g. torch.nn.Linear()

    def forward(self,x):
        y = self.base(x)
        z = self.extra(y)
        return z

...

C = NewModule(A) # cuda
D = NewModule(B) # cpu
Run Code Online (Sandbox Code Playgroud)

但是我必须继续前进base,并extra相同的设备,即baseextra的C是CUDA模型和D的是CPU的型号。所以我试过这个__inin__

def __init__(self, base):
    super(NewModule, self).__init__()
    self.base = base
    self.extra = …
Run Code Online (Sandbox Code Playgroud)

python gpu pytorch

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

除了 12 小时后的会话超时之外,google colab 是否有任何限制?

限制之一是我们每次只能连续获得 12 小时。GPU和TPU的使用有限制吗?

session gpu tensorflow google-colaboratory tpu

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

使用 NumPy 和 PyTorch 在 GPU 上求解线性方程

我正在尝试尽快求解大量线性方程。为了找出最快的方法,我在 CPU 和 GeForce 1080 GPU 上对NumPyPyTorch进行了基准测试(使用Numba进行 NumPy)。结果真的让我很困惑。

这是我在 Python 3.8 中使用的代码:

import timeit

import torch
import numpy
from numba import njit


def solve_numpy_cpu(dim: int = 5):
    a = numpy.random.rand(dim, dim)
    b = numpy.random.rand(dim)

    for _ in range(1000):
        numpy.linalg.solve(a, b)


def solve_numpy_njit_a(dim: int = 5):
    njit(solve_numpy_cpu, dim=dim)


@njit
def solve_numpy_njit_b(dim: int = 5):
    a = numpy.random.rand(dim, dim)
    b = numpy.random.rand(dim)

    for _ in range(1000):
        numpy.linalg.solve(a, b)


def solve_torch_cpu(dim: int = 5):
    a = torch.rand(dim, dim) …
Run Code Online (Sandbox Code Playgroud)

python gpu numpy numba pytorch

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

tensorflow/stream_executor/cuda/cuda_driver.cc:328] 调用 cuInit 失败:CUDA_ERROR_UNKNOWN:未知错误

我正在尝试将 GPU 与 Tensorflow 结合使用。我的 Tensorflow 版本是2.4.1,我使用的是 Cuda 版本 11.2。这是 的输出nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.39       Driver Version: 460.39       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce MX110       Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   52C    P0    N/A /  N/A |    254MiB /  2004MiB |      8% …
Run Code Online (Sandbox Code Playgroud)

gpu nvidia python-3.x tensorflow2.0

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

Slurm 中的 GPU 分配:--gres 与 --gpus-per-task,以及 mpirun 与 srun

Slurm 中有两种分配 GPU 的方式:要么是通用--gres=gpu:N参数,要么是特定参数,如--gpus-per-task=N. 还有两种方法可以在批处理脚本中启动 MPI 任务:使用srun或使用通常的方法mpirun(当 OpenMPI 是使用 Slurm 支持进行编译时)。我发现这些方法之间的行为存在一些令人惊讶的差异。

我正在提交一个批处理作业,其中sbatch基本脚本如下:

#!/bin/bash

#SBATCH --job-name=sim_1        # job name (default is the name of this file)
#SBATCH --output=log.%x.job_%j  # file name for stdout/stderr (%x will be replaced with the job name, %j with the jobid)
#SBATCH --time=1:00:00          # maximum wall time allocated for the job (D-H:MM:SS)
#SBATCH --partition=gpXY        # put the job into the gpu partition
#SBATCH --exclusive             # request exclusive …
Run Code Online (Sandbox Code Playgroud)

gpu nvidia cluster-computing openmpi slurm

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

出现“尝试使用 StreamExecutor 在没有 BLAS 支持的情况下执行 BLAS 操作”错误

我的电脑只有 1 个 GPU。

下面是我输入某人的代码得到的结果

[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456
locality {} incarnation: 16894043898758027805, name: "/device:GPU:0"
device_type: "GPU" memory_limit: 10088284160
locality {bus_id: 1 links {}}
incarnation: 17925533084010082620
physical_device_desc: "device: 0, name: GeForce RTX 3060, pci bus id: 0000:17:00.0, compute 
capability: 8.6"]
Run Code Online (Sandbox Code Playgroud)

我使用 jupyter 笔记本,现在运行 2 个内核。(TensorFlow 2.6.0 并安装了 CUDA 和 cuDNN 作为 TensorFlow 指南)

第一个内核从 Keras 运行我的顺序模型没有问题。

但是当我在第二个内核中学习相同的代码时,我得到了如下错误。

尝试在不支持 BLAS 的情况下使用 StreamExecutor 执行 BLAS 操作 [[nodeequential_3/dense_21/MatMul(在 \AppData\Local\Temp/ipykernel_14764/3692363323.py:1 处定义)]] [Op:__inference_train_function_7682]

函数调用栈:train_function

如何才能毫无问题地学习多个内核并仅使用 1 个 GPU 共享它们?

不过我不熟悉 TensorFlow 1.xx 版本。 …

gpu blas tensorflow jupyter-notebook tensorflow2.0

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

为什么 Windows 10 21H2 下的 WSL2 中 nvidia-smi 返回“GPU 访问被操作系统阻止”

在 WSL2 上安装 CUDA

我已按照https://docs.nvidia.com/cuda/wsl-上的说明在台式机(配备 RTX3080 的 AMD 5950X 系统)和笔记本电脑(配备 i7-7700HQ 和 GTX1050 的戴尔 XPS 9560)上安装了 Windows 10 21H2用户指南/index.html

  1. 在 Windows 中安装支持 CUDA 的驱动程序
  2. 在 PowerShell 中更新 WSL2 内核:wsl --update
  3. 在 WSL2 中的 Ubuntu 20.04 中安装 CUDA 工具包(请注意,您没有在 WSL2 中安装 CUDA 驱动程序,说明明确告诉不应安装 CUDA 驱动程序。):
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda
Run Code Online (Sandbox Code Playgroud)

错误 …

cuda gpu wsl-2

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

错误 libnvidia-ml.so.1:无法打开使用 GPU 运行 docker 映像时引发的共享对象文件

错误:

nvidia-container-cli: initialization error: load library 
failed: libnvidia-ml.so.1: cannot open shared object file: no 
such file or directory: unknown
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 docker hub 中使用 nvidia/cuda 图像来使用 GPU。所以我用 --gpus all 运行下面的代码。

docker run -it --gpus all -v --name my-gpu nvidia/cuda:11.7.0-cudnn8-devel-ubuntu22.04
Run Code Online (Sandbox Code Playgroud)

但这给了我错误,如下所示。

Unable to find image 'nvidia/cuda:11.7.0-cudnn8-devel-ubuntu22.04' locally

11.7.0-cudnn8-devel-ubuntu22.04: Pulling from nvidia/cuda
d19f32bd9e41: Already exists 
292e5e4dcc78: Already exists 
f027458ef473: Already exists 
ad9cd0a3350e: Already exists 
4c0e748dfb24: Already exists 
e40f2cbf6f5e: Pull complete 
3ac150f167fe: Pull complete 
dd80ebac36de: Pull complete 
fd2716719ab6: Pull complete 
e5ff1925518e: Pull complete 
Digest: …
Run Code Online (Sandbox Code Playgroud)

gpu docker

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

FFmpeg硬件加速 - > GPU + DirectShow

是否有FFmpeg的硬件加速版本(例如,使用GPU的版本)?

此外,是否有人使用FFmpeg支持GPU?可能用于缩放和转换视频格式?或者,例如,使用DirectShow进行图像缩放并在曲面上显示图像?如果是这样,任何人都可以提供小代码样本?

directshow gpu ffmpeg directshow.net

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

iOS12导致金属命令缓冲区执行错误,渲染是毛病或不会发生

我们有一个Metal用于渲染的应用程序.此应用程序在运行iOS11的设备上正常运行.在运行iOS12的设备上使用相同的应用程序时,我们开始出现故障,有时会在渲染中挂起.我们也试过重新编译iOS12并且得到了同样的不良行为.在控制台上,我们收到以下不同的消息:

2018-09-22 09:22:29.508576-0500 OurApp [1286:84481]由于执行期间的错误,命令缓冲区的执行被中止.丢弃(GPU错误/恢复的受害者)(IOAF代码5)

2018-09-22 09:29:55.654426-0500 OurApp [1286:84625]由于执行期间的错误,命令缓冲区的执行被中止.导致GPU挂起错误(IOAF代码3)

2018-09-22 09:34:37.718054-0500 OurApp [1286:87354]执行命令缓冲区因执行过程中的错误而中止.忽略(导致先前/过多的GPU错误)(IOAF代码4)

使用前两条消息,渲染看起来很奇怪,其中显示空白屏幕,然后最终渲染发生在屏幕上.使用最后一条消息,渲染实际上不会发生,并且消息将继续显示,直到我们移动到另一个视图.

此应用程序使用SceneKit,实例化a SCNView并使用默认值CIContext.它还使用基于物理的光照模型,该模型强制使用Metal渲染器.该应用程序具有简单的SCNNode几何形状,圆柱体.圆柱体的每个几何对象都获得正常纹理(总共3个).相同的漫反射,金属度和粗糙度值应用于圆柱体的所有几何对象.

有人遇到过这个问题吗?如果是这样,你是如何解决的?

谢谢

更新:当图像用作场景的照明环境时,似乎会出现问题:

let scene = SCNScene()
scene.lightingEnvironment.contents = UIImage(named: "ourLightingEnvironmentImage")
Run Code Online (Sandbox Code Playgroud)

当不使用照明环境时,问题就会消失.这开始看起来像一个Apple bug,我们将提交一个.我们陷入困境是因为我们需要照明环境来为我们的应用程序中的模型生成逼真的反射.

gpu ios scenekit swift metal

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