我必须在使用不同设备的不同类型的 pytorch 模型上堆叠一些我自己的层。
例如,A是cuda模型,B是cpu模型(但在获得设备类型之前我不知道)。那么新模型分别是C和D,其中
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在相同的设备,即base和extra的C是CUDA模型和D的是CPU的型号。所以我试过这个__inin__:
def __init__(self, base):
super(NewModule, self).__init__()
self.base = base
self.extra = …Run Code Online (Sandbox Code Playgroud) 限制之一是我们每次只能连续获得 12 小时。GPU和TPU的使用有限制吗?
我正在尝试尽快求解大量线性方程。为了找出最快的方法,我在 CPU 和 GeForce 1080 GPU 上对NumPy和PyTorch进行了基准测试(使用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) 我正在尝试将 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) 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) 我的电脑只有 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 版本。 …
我已按照https://docs.nvidia.com/cuda/wsl-上的说明在台式机(配备 RTX3080 的 AMD 5950X 系统)和笔记本电脑(配备 i7-7700HQ 和 GTX1050 的戴尔 XPS 9560)上安装了 Windows 10 21H2用户指南/index.html:
wsl --update$ 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)
错误:
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) 是否有FFmpeg的硬件加速版本(例如,使用GPU的版本)?
此外,是否有人使用FFmpeg支持GPU?可能用于缩放和转换视频格式?或者,例如,使用DirectShow进行图像缩放并在曲面上显示图像?如果是这样,任何人都可以提供小代码样本?
我们有一个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,我们将提交一个.我们陷入困境是因为我们需要照明环境来为我们的应用程序中的模型生成逼真的反射.