标签: gpu

与第三方CUDA库链接会降低cudaMalloc的速度

在CUDA 4.x上第一次调用cudaMalloc 可能是非常慢的(这被报告过几次)并不是秘密,似乎是CUDA驱动程序中的一个错误.

最近,我注意到了奇怪的行为:运行时间cudaMalloc 直接取决于我链接到我的程序的第三方CUDA库(请注意,我不使用这些库,只是将程序链接到它们)

我使用以下程序运行了一些测试:

int main() {
  cudaSetDevice(0);
  unsigned int *ptr = 0;
  cudaMalloc((void **)&ptr, 2000000 * sizeof(unsigned int));   
  cudaFree(ptr);
return 1;
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

  • 挂具:-lcudart -lnpp -lcufft -lcublas -lcusparse -lcurand运行时间:5.852449

  • 链接:-lcudart -lnpp -lcufft -lcublas运行时间:1.425120

  • 链接:-lcudart -lnpp -lcufft运行时间:0.905424

  • 链接:-lcudart运行时间:0.394558

根据'gdb',时间确实进入了我的cudaMalloc,所以它不是由某些库初始化例程引起的.

我想知道是否有人对此有合理的解释?

cuda gpu gpgpu gpu-programming

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

启用nvidia-smi权限以由所有用户运行

如何为所有用户启用 nvidia-smi。我可以以 sudo 用户身份运行它,但作为普通用户,我得到:

Failed to initialize NVML: Insufficient Permissions
Run Code Online (Sandbox Code Playgroud)

gpu

9
推荐指数
2
解决办法
6911
查看次数

在火炬分布式训练中获取本地世界大小

假设我有 2 台机器,每台机器有 4 个 GPU。假设训练算法的每个实例需要 2 个 GPU。我想运行 4 个进程,每台机器 2 个,每个进程使用 2 个 GPU。

如何让每个进程检索同一台计算机上运行的本地进程的数量?我可以检测world size

torch.distributed.get_world_size()
Run Code Online (Sandbox Code Playgroud)

global rank

torch.distributed.get_rank()
Run Code Online (Sandbox Code Playgroud)

但是,鉴于我不想对参数进行硬编码,有没有办法恢复每个节点上运行 2 个进程?这对于我将 GPU 平均分配给每个进程很有用。

示例:假设我知道一台机器有 4 个 GPU,并且上面有 2 个进程,我将分配 GPU[0, 1]来处理local rank0 级的进程,分配 GPU[2, 3]来处理本地等级 1 的进程。我知道进程总数,但我无法理解它们是否是在同一台机器上,所以我无法决定他们可以使用多少个 GPU。

我需要一个可以调用的函数torch.distributed.get_local_world_size()

gpu distributed-computing pytorch

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

当在 Windows 上使用 PyTorch 的 CUDA 时,GPU 使用率显示为零

我有pytorch脚本。

import torch

torch.cuda.is_available() 
# True

device=torch.device('cuda:0') 
# I moved my tensors to device
Run Code Online (Sandbox Code Playgroud)

但是当 pytorch 脚本运行时,Windows 任务管理器显示 GPU (NVIDIA GTX 1050TI) 使用率为零,我的脚本速度很好,如果我将 torch.device 更改为 CPU 而不是 GPU,速度会变慢,因此 cuda (GPU) 正在工作。为什么 Windows 任务管理器不显示 GPU 使用情况?

我的代码示例:

device=torch.device("cuda:0")
model=torch.load('mymodel.pth', map_location=torch.device(device))
image=Image.open('picture.png').convert('RGB')
transform=transforms.Compose([
            transforms.Resize(224),
            transforms.CenterCrop(224),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ])
input=transform(image)
input=torch.unsqueeze(input, 0)
input=input.to(device)
output=model(input)
Run Code Online (Sandbox Code Playgroud)

windows gpu pytorch

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

如何卸载 NVIDIA 内核模块“nvidia”以安装新驱动程序?

我需要升级我的 nvidia 驱动程序,以便我尝试运行NVIDIA-LInux-x86_64.run文件

但是,我看到以下消息

ERROR: An NVIDIA kernel module 'nvidia' appears to already be loaded in your kernel.  This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading.  Please be sure to exit any programs that may be using the GPU(s) before attempting to upgrade your driver.  If no GPU-based programs …
Run Code Online (Sandbox Code Playgroud)

ubuntu gpu nvidia tensorflow ubuntu-18.04

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

如何在 python 中重置 CUDA GPU

有没有办法在 python 中重新启动 CUDA GPU?或者释放它以便另一个脚本可以访问它?

\n\n

我有时会在 python 中使用 GPU 时遇到错误,再次访问 GPU 的唯一解决方案是重新启动我的 Jupyter 笔记本。

\n\n

PS:我使用 GPU 来使用 pytorch 进行一些计算。

\n\n

我得到的具体错误是:

\n\n
RuntimeError: CUDA error: device-side assert triggered\n
Run Code Online (Sandbox Code Playgroud)\n\n

我见过https://towardsdatascience.com/cuda-error-device-side-assert-triggered-c6ae1c8fa4c3和许多其他人讨论这个问题。我的主要问题是如何在不重新启动 Jupyter 内核的情况下继续使用 GPU 会话

\n\n

即我想捕获这个错误,我用 try/ except 执行此错误并继续,因为我正在一个接一个地训练多个模型,所以我无法重新启动来解决我的问题。

\n\n

编辑重新启动内核似乎是公认的天真的解决方案,请参阅:

\n\n

- https://forums.fast.ai/t/how-to-free-up-gpu-memory-in-pytorch-0-2-x/9256/2 \n- https://towardsdatascience.com/cuda -error-device-side-assert-triggered-c6ae1c8fa4c3,其中她提到“在 Kaggle 上工作?Here\xe2\x80\x99s 为什么即使按照上述步骤操作,你仍然在挣扎”

\n

python gpu pytorch

9
推荐指数
0
解决办法
6056
查看次数

macOS 从终端获取 GPU 历史记录(使用情况)

在最新版本的 Activity Monitor 中,可以按 CMD+4 并获取 GPU 使用情况的图形表示。但是,我想从我的本机 macOS 应用程序获取此信息,因此我正在寻找一种从 macOS 命令行获取此数据(显示在活动监视器中)的方法。

macOS 上的活动监视器 GPU 历史记录信息

macos terminal command-line gpu

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

除了“cuda”之外,您能否在“hip”或“OpenCL”等其他内容上加速 torch DL 训练?

我注意到torch.device可以接受一系列参数,确切地说是cpu, cuda, mkldnn, opengl, opencl, ideep, hip, msnpu

然而,在训练深度学习模型时,我只见过cuda或被cpu使用过。很多时候代码看起来像这样

if torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")
Run Code Online (Sandbox Code Playgroud)

我从未见过其他任何人被使用,并且想知道它们是否可以使用以及如何使用。我相信配备 AMD 显卡的最新 MacBook 应该可以使用"hip",但这是真的吗?训练速度会与使用一个 CUDA GPU 相似吗?torch.device如果不是,那么如果实际上无法使用这些选项,那么接受这些选项又有什么意义呢?

gpu opencl deep-learning pytorch

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

tensorflow.python.framework.errors_impl.ResourceExhaustedError:无法分配内存[Op:AddV2]

你好,我是深度学习和张量流的初学者,

我创建了一个 CNN(你可以看到下面的模型)

model = tf.keras.Sequential()

model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=7, activation="relu", input_shape=[512, 640, 3]))
model.add(tf.keras.layers.MaxPooling2D(2))
model.add(tf.keras.layers.Conv2D(filters=128, kernel_size=3, activation="relu"))
model.add(tf.keras.layers.Conv2D(filters=128, kernel_size=3, activation="relu"))
model.add(tf.keras.layers.MaxPooling2D(2))
model.add(tf.keras.layers.Conv2D(filters=256, kernel_size=3, activation="relu"))
model.add(tf.keras.layers.Conv2D(filters=256, kernel_size=3, activation="relu"))
model.add(tf.keras.layers.MaxPooling2D(2))

model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(2, activation='softmax'))

optimizer = tf.keras.optimizers.SGD(learning_rate=0.2) #, momentum=0.9, decay=0.1)
model.compile(optimizer=optimizer, loss='mse', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

我尝试使用 cpu 构建和训练它,并且成功完成(但速度非常慢),所以我决定安装 tensorflow-gpu。按照https://www.tensorflow.org/install/gpu中的说明安装了所有内容。

但现在当我尝试构建模型时出现此错误:

> Traceback (most recent call last):   File
> "C:/Users/thano/Documents/Py_workspace/AI_tensorflow/fire_detection/main.py",
> line 63, in <module>
>     model = create_models.model1()   File "C:\Users\thano\Documents\Py_workspace\AI_tensorflow\fire_detection\create_models.py",
> line 20, in model1
>     model.add(tf.keras.layers.Dense(128, activation='relu')) …
Run Code Online (Sandbox Code Playgroud)

python gpu deep-learning conv-neural-network tensorflow

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

某些 Intel 集成图形处理器中的 WebGL 故障

我遇到的情况是,着色器在我的 Apple (M1) iMac(以及 iPhone)上产生的输出与我的 Intel(i5-4300U / Haswell-ULT 集成图形控制器)Thinkpad 440 上产生的输出完全不同(更多信息见评论)。然而,Chrome 和 Safari 等浏览器之间似乎没有区别。Chrome 和 GNOME Web 在 iMac 上分别生成相同的图像。笔记本电脑。我的 Intel Thinkpad 13 Chromebook 也显示 Intel 版本(显然无法测试除 Chrome 之外的其他浏览器)。这可能是什么原因?

[编辑] 大多数人(朋友和下面评论的人)似乎都获得了苹果版本,所以只有我和我的两台笔记本电脑显然获得了英特尔版本?

这是着色器:

  const gl = document.querySelector("canvas").getContext("webgl");
  gl.canvas.width = gl.canvas.height = 512
  gl.viewport(0, 0, 512, 512);
  const programInfo = twgl.createProgramInfo(gl, ["vs", "fs"]);
  const bufferInfo = twgl.createBufferInfoFromArrays(gl, {
    a_Position: {
      numComponents: 2,
      data: [-1, -1, -1, 3, 3, -1]
    },
  });
  gl.useProgram(programInfo.program);
  twgl.setBuffersAndAttributes(gl, programInfo, bufferInfo);
  twgl.drawBufferInfo(gl, bufferInfo);
Run Code Online (Sandbox Code Playgroud)
<script src="https://twgljs.org/dist/4.x/twgl-full.min.js"></script>
<script id="vs" type="x-shader/x-vertex"> …
Run Code Online (Sandbox Code Playgroud)

javascript gpu intel glsl webgl

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