我对运行which nvcc和显示的不同CUDA版本感到非常困惑nvidia-smi.
我的ubuntu 16.04上安装了cuda9.2和cuda10.现在我将PATH设置为指向cuda9.2.所以当我跑:
$ which nvcc
/usr/local/cuda-9.2/bin/nvcc
Run Code Online (Sandbox Code Playgroud)
但是,当我跑
$ nvidia-smi
Wed Nov 21 19:41:32 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.72 Driver Version: 410.72 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 106... Off | 00000000:01:00.0 Off | N/A |
| N/A 53C P0 26W / N/A | 379MiB / 6078MiB | 2% …Run Code Online (Sandbox Code Playgroud) 在训练模型时,我遇到了以下问题:
RuntimeError: CUDA out of memory. Tried to allocate 304.00 MiB (GPU 0; 8.00 GiB total capacity; 142.76 MiB already allocated; 6.32 GiB free; 158.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
正如我们所看到的,当尝试分配 304 MiB 内存时发生错误,而 6.32 GiB 是空闲的!问题是什么?正如我所看到的,建议的选项是设置 max_split_size_mb 以避免碎片。它会有帮助吗?如何正确地做到这一点?
这是我的 PyTorch 版本:
火炬==1.10.2+cu113
火炬视觉==0.11.3+cu113
火炬音频===0.10.2+cu113
如果我用matplotlib制作一个散点图:
plt.scatter(randn(100),randn(100))
# set x, y lims
plt.xlim([...])
plt.ylim([...])
Run Code Online (Sandbox Code Playgroud)
我想(x, y)用箭头指向它和标签来注释给定点.我知道这可以完成annotate,但我希望箭头及其标签以"最佳"方式放置,如果可能(给定当前轴比例/限制)箭头和标签不重叠与其他点.例如,如果你想标记异常点.有没有办法做到这一点?它不一定是完美的,而只是箭头/标签的智能放置,只给出(x,y)要标记的点的坐标.谢谢.
根据
https://www.tensorflow.org/install/install_mac注意:从版本1.2开始,TensorFlow不再在Mac OS X上提供GPU支持.不再提供对OS X的GPU支持.
但是,我想通过thunderbolt 3来运行像akitio节点这样的e-gpu设置.
要使此设置生效,需要执行哪些步骤?到目前为止,我知道
是必要的.还有什么需要让CUDA/tensorflow工作?
我尝试将 Tensorflow 2.7.0 与 GPU 结合使用,但我不断遇到同样的问题:
2022-02-03 08:32:31.822484: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /home/username/.cache/pypoetry/virtualenvs/poetry_env/lib/python3.7/site-packages/cv2/../../lib64:/home/username/miniconda3/envs/project/lib/
2022-02-03 08:32:31.822528: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Run Code Online (Sandbox Code Playgroud)
这个问题已经在这里和 github 上出现过多次。然而,通常建议的解决方案是:a) 下载丢失的 CUDA 文件,b) 降级/升级到正确的 CUDA 版本,c) 设置正确的LD_LIBRARY_PATH.
我已经在我的电脑上使用了支持 CUDA 的 PyTorch,并且没有遇到任何问题。我nvidia-smi返回的是 11.0 版本,这正是我想要的唯一版本。另外,如果我尝试运行:
import os
LD_LIBRARY_PATH = '/home/username/miniconda3/envs/project/lib/'
print(os.path.exists(os.path.join(LD_LIBRARY_PATH, "libcudart.so.11.0")))
Run Code Online (Sandbox Code Playgroud)
它返回True。这正是 …
有人可以帮我一个关于如何使用共享内存的一个非常简单的例子吗?Cuda C编程指南中包含的示例似乎与不相关的细节混杂在一起.
例如,如果我将一个大型数组复制到设备全局内存并想要对每个元素求平方,那么如何使用共享内存来加快速度呢?或者在这种情况下它没用?
当我开始训练一些神经网络时,它遇到了CUDA_ERROR_OUT_OF_MEMORY但是训练可以继续进行而没有错误.因为我想使用gpu内存,所以我设置了gpu_options.allow_growth = True.日志如下:
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:951] Found device 0 with properties: …Run Code Online (Sandbox Code Playgroud) 当我运行仅分配少量全局内存(低于20 M)的CUDA程序时,出现"内存不足"错误.(从其他人的帖子中,我认为问题与内存碎片有关)我试着理解这个问题,并意识到我有几个与CUDA内存管理有关的问题.
CUDA中是否有虚拟内存概念?
如果只允许一个内核同时在CUDA上运行,在终止后,它使用或分配的所有内存都将被释放?如果没有,这些内存何时免费发布?
如果允许在CUDA上运行多个内核,他们如何确保他们使用的内存不重叠?
谁能帮我回答这些问题?谢谢
编辑1:操作系统:x86_64 GNU/Linux CUDA版本:4.0设备:Geforce 200,它是连接到机器的GPUS之一,我不认为它是显示设备.
编辑2:以下是我做了一些研究后得到的结果.随意纠正我.
CUDA将为每个主机线程创建一个上下文.此上下文将保留诸如内存的哪一部分(预先分配的内存或动态分配的内存)等信息已保留给此应用程序,以便其他应用程序无法写入该应用程序.当此应用程序终止(不是内核)时,将释放这部分内存.
CUDA内存由链接列表维护.当应用程序需要分配内存时,它将通过此链接列表查看是否有可用于分配的连续内存块.如果找不到这样的块,即使总可用内存大小大于请求的内存,"内存不足"错误也会向用户报告.这就是与内存碎片有关的问题.
cuMemGetInfo将告诉您有多少可用内存,但不一定是由于内存碎片而可以在最大分配中分配多少内存.
在Vista平台(WDDM)上,GPU内存虚拟化是可能的.也就是说,多个应用程序几乎可以分配整个GPU内存,WDDM将管理交换数据到主内存.
新问题:1.如果在应用程序终止后上下文中保留的内存将完全释放,则不应存在内存碎片.内存中必须留有某种数据.2.有没有办法重构GPU内存?
我正在尝试tensorflow-gpu==2.0.0-beta1在我的 Windows 10 机器上安装并收到此错误:
导入错误:找不到“cudart64_100.dll”。TensorFlow 要求将此 DLL 安装在 %PATH% 环境变量中命名的目录中。从此 URL 下载并安装 CUDA 10.0:https : //developer.nvidia.com/cuda-90-download-archive
我做了所有的东西:
PATH变量:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\binCUDA_PATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0在变量中C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\cudart64_100.dll存在但是还是会出现错误
我怎样才能解决这个问题?
在新的 ubunto 上,我安装了 docker,当我运行图像时,出现以下错误
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "--gpus": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container: context canceled
Run Code Online (Sandbox Code Playgroud)
这就是我让系统准备就绪的方法
sudo apt updat
sudo apt full-upgrade
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)
#通过软件和更新安装 GPU 驱动程序
sudo apt install nvidia-cuda-toolkit
sudo apt install docker.io
Run Code Online (Sandbox Code Playgroud)
#这里是docker文件
FROM python:3
WORKDIR /workspace
COPY test.py /workspace
RUN pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
CMD ["python", "./test.py"]
Run Code Online (Sandbox Code Playgroud)
#这里是test.py文件
import …Run Code Online (Sandbox Code Playgroud)