我花了很多时间在运行 Ubuntu Linux (11.04) 的机器上设置 CUDA 工具链。该装备有两个 NVIDIA Tesla GPU,我能够从 NVIDIA GPU Computing SDK 编译和运行测试程序,例如 deviceQuery、deviceQueryDrv 和带宽测试。
当我尝试从书籍和在线资源编译基本示例程序时,我的问题就出现了。我知道您应该使用 NVCC 进行编译,但是每当我使用它时都会出现编译错误。基本上任何涉及 CUDA 库的包含语句都会导致丢失文件/库错误。一个例子是:
#include <cutil.h>
Run Code Online (Sandbox Code Playgroud)
我是否需要某种 makefile 来将编译器定向到这些库,或者在使用 NVCC 进行编译时是否需要设置其他标志?
我遵循了这些指南:
http://hdfpga.blogspot.com/2011/05/install-cuda-40-on-ubuntu-1104.html http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc /CUDA_C_Getting_Started_Linux.pdf
我的问题是是否可以以某种方式查询 MPS 服务器并检查它是否在应用程序运行时在 GPU 上运行?
据我所知,通过使用 nvidia-smi 可以检查 CUDA MPS Server 是否在 GPU 上运行,但我不确定如何在应用程序运行时使用此系统命令。是否有其他方法可以检查 MPS 服务器在应用程序运行时是否在 GPU 上运行?
我使用此代码查找显卡:
ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_VideoController");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
string graphicsCard = "";
foreach (ManagementObject mo in queryCollection)
{
foreach (PropertyData property in mo.Properties)
{
if (property.Name == "Description")
{
graphicsCard += property.Value.ToString() + " ";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有两张显卡:
上面的代码返回所有图形卡。
如何找到windows选择的活动显卡?
在成功安装和测试使用 GPU 支持编译的 Tensorflow 后,我最近遇到了一个问题。
重新启动机器后,当我尝试运行 Tensorflow 程序时收到以下错误消息:
...
('Extracting', 'MNIST_data/t10k-labels-idx1-ubyte.gz')
modprobe: FATAL: Module nvidia-uvm not found in directory /lib/modules/4.4.0-34-generic
E tensorflow/stream_executor/cuda/cuda_driver.cc:491] failed call to cuInit: CUDA_ERROR_UNKNOWN
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:140] kernel driver does not appear to be running on this host (caffe-desktop): /proc/driver/nvidia/version does not exist
I tensorflow/core/common_runtime/gpu/gpu_init.cc:92] No GPU devices available on machine.
(0, 114710.45)
(1, 95368.891)
...
(98, 56776.922)
(99, 57289.672)
Run Code Online (Sandbox Code Playgroud)
代码:https : //github.com/llSourcell/autoencoder_demo
问题:为什么重启 Ubuntu 16.04 机器会破坏 Tensorflow?
我正在尝试使用 NVIDIA 的nvapi,但出现了我不完全理解的编译错误。也许我使用了错误的编译器?
#include "nvapi.h"
#include <iostream>
int main()
{
printf("Hello nvapi!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
汇编:
g++ nvapi_hello.cpp
输出(因太长而被截断):
In file included from nvapi_lite_d3dext.h:35:0,
from nvapi.h:6,
from nvapi_hello.cpp:1:
nvapi_lite_salstart.h:821:41: warning: '__success' initialized and declared 'extern'
#define NVAPI_INTERFACE extern __success(return == NVAPI_OK) NvAPI_Status __cdecl
^
nvapi.h:99:1: note: in expansion of macro 'NVAPI_INTERFACE'
NVAPI_INTERFACE NvAPI_Initialize();
^~~~~~~~~~~~~~~
nvapi_lite_salstart.h:821:42: error: expected primary-expression before 'return'
#define NVAPI_INTERFACE extern __success(return == NVAPI_OK) NvAPI_Status __cdecl
^
nvapi.h:99:1: note: in expansion of macro 'NVAPI_INTERFACE'
NVAPI_INTERFACE NvAPI_Initialize(); …Run Code Online (Sandbox Code Playgroud) 我们正在寻求一些有关 slurm salloc GPU 分配的建议。目前,给出:
% salloc -n 4 -c 2 -gres=gpu:1
% srun env | grep CUDA
CUDA_VISIBLE_DEVICES=0
CUDA_VISIBLE_DEVICES=0
CUDA_VISIBLE_DEVICES=0
CUDA_VISIBLE_DEVICES=0
Run Code Online (Sandbox Code Playgroud)
然而,我们希望使用的不仅仅是设备 0。
有没有办法用 srun/mpirun 指定 salloc 以获得以下内容?
CUDA_VISIBLE_DEVICES=0
CUDA_VISIBLE_DEVICES=1
CUDA_VISIBLE_DEVICES=2
CUDA_VISIBLE_DEVICES=3
Run Code Online (Sandbox Code Playgroud)
这是期望的,以便每个任务获得 1 个 GPU,但总体 GPU 使用量分布在 4 个可用设备中(请参阅下面的 gres.conf)。不是所有任务都获得 device=0 的地方。
这样,每个任务就不会像当前的情况一样等待设备 0 释放其他任务。
或者即使我们有超过 1 个可用/空闲的 GPU(总共 4 个)用于 4 个任务,这是否是预期的行为?我们遗漏或误解了什么?
总结我们希望能够使用 slurm 和 mpi,以便每个等级/任务使用 1 个 GPU,但作业可以在 4 个 GPU 之间分散任务/等级。目前看来我们仅限于设备 0。我们还希望避免由于 mpi 使用而在 salloc/sbatch 中多次提交 srun。
操作系统:CentOS …
我刚刚在带有 2 个 GPU(Nvidia Tesla K80)的 Google Compute Engine 上启动了一个实例。并且在启动后立即,我可以看到nvidia-smi其中一个已经被充分利用。
我检查了正在运行的进程列表,但根本没有任何运行。这是否意味着 Google 已将相同的 GPU 出租给其他人?
这一切都在这台机器上运行:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
Run Code Online (Sandbox Code Playgroud)
我正在尝试理解和调试我的代码。我尝试使用在 GPU 上的 tf2.0/tf.keras 下开发的 CNN 模型进行预测,但得到了那些错误消息。有人可以帮我修吗?
这是我的环境配置
enviroments:
python 3.6.8
tensorflow-gpu 2.0.0-rc0
nvidia 418.x
CUDA 10.0
cuDNN 7.6+**
Run Code Online (Sandbox Code Playgroud)
和日志文件,
2019-09-28 13:10:59.833892: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2019-09-28 13:11:00.228025: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2019-09-28 13:11:00.957534: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2019-09-28 13:11:00.963310: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2019-09-28 13:11:00.963416: W tensorflow/core/common_runtime/base_collective_executor.cc:216] BaseCollectiveExecutor::StartAbort Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking …Run Code Online (Sandbox Code Playgroud) 安装 Debian 10 (Buster) 时,桌面/GUI 应用程序速度很慢。打开应用程序(例如 Firefox、Terminal...)需要很长时间,并且系统根本无法使用。
apt update && apt upgrade
Run Code Online (Sandbox Code Playgroud)
根本没有帮助。显然这是CPU或GPU驱动程序的问题。我在 Intel i5 + Nvidia GTX 版本上安装了 Debian(不确定 GPU 是否也负责这里)。
我能找到的唯一信息是这个,但这并没有解决问题
如果我运行以下命令:
import torch
import sys
print('A', sys.version)
print('B', torch.__version__)
print('C', torch.cuda.is_available())
print('D', torch.backends.cudnn.enabled)
device = torch.device('cuda')
print('E', torch.cuda.get_device_properties(device))
print('F', torch.tensor([1.0, 2.0]).cuda())
Run Code Online (Sandbox Code Playgroud)
我明白了:
A 3.7.5 (default, Nov 7 2019, 10:50:52)
[GCC 8.3.0]
B 1.8.0.dev20210115+cu110
C True
D True
E _CudaDeviceProperties(name='GeForce RTX 3090', major=8, minor=6, total_memory=24267MB, multi_processor_count=82)
F
<stacktrace>
CUDA error: no kernel image is available for execution on the device
Run Code Online (Sandbox Code Playgroud)
关于我的系统的更多信息: