问题标签 [cudnn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
theano - Theano 无法找到 Gpu - Ubuntu 16.04
警告(theano.sandbox.cuda):CUDA 已安装,但设备 gpu 不可用(错误:cuda 不可用)
尝试运行任何示例 Theano 程序时出现此错误。
我已经尝试了此线程中提供的所有建议修复。
nvcc --version
输出:
nvcc:NVIDIA (R) Cuda 编译器驱动程序
版权所有 (c) 2005-2015 NVIDIA Corporation
构建于 Tue_Aug_11_14:27:32_CDT_2015
Cuda 编译工具,版本 7.5,V7.5.17
nvidia-smi
输出:
gcc 版本:
我一直在努力让它工作一段时间,希望有人能指出我正确的方向。
amazon-ec2 - 无法在 g2.2xlarge 实例上安装带有 CUDA 8.0 和 Tensorflow 0.12 的 cuDNN 5.1.5
我采取的步骤如下。在此./configure
步骤中,除非我允许 cuDNN 版本 (v5) 的系统默认值而不是指定 v5.1.5(如我所愿),否则我会收到一条错误消息,指出 cuDNN 的环境版本 (v5) 与目标版本不匹配(5.1.5)。由于我从 Nvidia 下载了 CUDA 8.0 的 cuDNN v5.1.5 文件,我感到很困惑。
更重要的是,在第 240 行附近挖掘https://github.com/tensorflow/tensorflow/blob/master/third_party/gpus/cuda_configure.bzl之后,我看到 bazel 配置脚本检查的版本似乎只需要考虑到 cuDNN 版本的主要数字(我在 cudnn.h 中的主要、次要和补丁数字分别是 5、1、5)。所以,我不确定它如何允许安装 5.1.5 版。也许我看错了?
无论如何,有没有人可以在 g2.2xlarge 实例上安装带有 CUDA 8.0 和 Tensorflow 0.12 的 cuDNN 5.1.5 的方法?
谢谢!
脚步
(注意:这些工作,但它安装 cuDNN 5.0,而不是所需的 5.1.5)
供应
- 遵循以下配置步骤:https ://medium.com/@giltamari/tensorflow-getting-started-gpu-installation-on-ec2-9b9915d95d6f#.2hv67eeek
(即最多但不包括
sudo apt-get update && sudo apt-get -y upgrade
:)
安装依赖项和工具
- 熟悉:
- http://expressionflow.com/2016/10/09/installing-tensorflow-on-an-aws-ec2-p2-gpu-instance/
- http://ramhiser.com/2016/01/05/installing-tensorflow-on-an-aws-ec2-instance-with-gpu-support/
- https://alliseesolutions.wordpress.com/2016/09/08/install-gpu-tensorflow-from-sources-w-ubuntu-16-04-and-cuda-8-0-rc/
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential git python-pip libfreetype6-dev libxft-dev libncurses-dev libopenblas-dev gfortran python-matplotlib libblas-dev liblapack-dev libatlas-base-dev python-dev python-pydot linux-headers-generic linux-image-extra-virtual unzip python-numpy swig python-pandas python-sklearn unzip wget pkg-config zip g++ zlib1g-dev libcurl3-dev
sudo pip install -U pip
安装 Cuda 8
wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
rm cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
sudo apt-get update
sudo apt-get install -y cuda
安装 cuDNN
- 我们要下载并安装最新版本的 cuDNN。下载 cuDNN 需要登录 NVIDIA 开发者网站,所以我们不能使用 wget 来获取文件。从 NVIDIA 下载以下文件并将它们上传到您的 AWS 实例。
- 在 Linux 上为 CUDA 8.0 下载 cuDNN 5.1
- scp -i ssh-key.pem path/to/downloaded/cudnn ubuntu@ec2{instance}.us-west-1.compute.amazonaws.com:~/
sudo tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
配置环境
- 将以下内容放在末尾
~/.bashrc
:export CUDA_HOME=/usr/local/cuda
export CUDA_ROOT=/usr/local/cuda
export PATH=$PATH:$CUDA_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_ROOT/lib64:$CUDA_ROOT/extras/CUPTI/lib64
source ~/.bashrc
sudo reboot
安装 Bazel
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf- set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf- set-selections
sudo apt-get install -y oracle-java8-installer
sudo apt-get install pkg-config zip g++ zlib1g-dev
- scp
https://github.com/bazelbuild/bazel/releases/download/0.3.2/bazel-0.3.2-installer-linux-x86_64.sh
从本地机器到 ec2 实例 chmod +x bazel-0.1.4-installer-linux-x86_64.sh
./bazel-0.1.4-installer-linux-x86_64.sh --user
rm bazel-0.1.4-installer-linux-x86_64.sh
bazel version
构建和安装 TensorFlow
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
cd tensorflow
TF_UNOFFICIAL_SETTING=1 ./configure
- 全部按回车/默认,除了:
- CUDA 版本 = 8.0,CUDA 依赖项 = 3.0 (k520 gpu)
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
sudo pip install --upgrade /tmp/tensorflow_pkg/tensorflow-0.12.0rc1-cp27-cp27mu-linux_x86_64.whl
machine-learning - Tensorflow中CUDNN卷积BackwardFilter的等价物是什么?
我正在尝试移植一些在 Tensorflow 上使用 CUDNN 的代码。其中大部分都非常容易移植,但我在将 cudnnConvolutionBackwardFilter 移植到 Tensorflow 时遇到了问题。我尝试使用conv2d
,conv2d_transpose
但它们都不适用于此配置。[N, V, V, C]
这意味着我有and形式的输入,[N, F, F, K]
我需要[V-F, V-F, C, K]
. 我虽然做一个循环来做所有的卷积并对结果求和,但我没有找到在张量流图中做这样一个循环的方法。
我怎样才能将这样的代码翻译成 Tensorflow?
ubuntu - 我的机器上 VGG16 上的 Titan X Pascal 比基准测试慢得多
我有 Titan X Pascal、Intel i5-6600、16GB Ram 并在 Ubuntu 14.04 中运行 torch7。Nvidia 驱动程序版本为 375.20、CUDA Toolkit 8.0 和 cuDNN v5.1。
我使用来自 Caffe 的相同 VGG16 网络(通过 loadcaffe 导入)进行了与本 Benchmark 中相同的测试。但是,对于前向传递,我的设置需要 80 毫秒,这显然是基准测试所需时间的两倍。
我还生成了一批具有 3 个通道和 224x224 大小的 16 张图像。相关代码为:
输出是:
Forward time: 0.96536016464233
Forward time: 0.10063600540161
Forward time: 0.096444129943848
Forward time: 0.089151859283447
Forward time: 0.082037925720215
Forward time: 0.082045078277588
Forward time: 0.079913139343262
Forward time: 0.080273866653442
Forward time: 0.080694913864136
Forward time: 0.082727193832397
Forward time: 0.082070827484131
Forward time: 0.079407930374146
Forward time: 0.080456018447876
Forward time: 0.083559989929199
Forward time: 0.082060098648071
Forward time: 0.081624984741211
Forward time: 0.080413103103638
Forward time: 0.083755016326904
Forward time: 0.083209037780762
...
我是否需要做任何额外的事情才能达到这个速度?还是我在这里做错了什么?或者可能是因为我使用的是 Ubuntu 14.04,而不是 Ubuntu 16.04(尽管在基准测试中,在 Ubuntu 14.04 上运行的 GTX 1080 也只需要 60 毫秒)?
caffe - 在 Caffe 中暂时禁用 cuDNN
是否可以暂时禁用 Caffe 中的 cuDNN 而无需在我的 train_val 文件中的每一层上设置 engine: Caffe?我们希望为重构目的获得确定性结果,但当我们不这样做时继续使用 cuDNN。
python - 没有注册 OpKernel 以支持具有这些属性的 Op 'Conv2D'
对此的新手可能是愚蠢的,但无法让 conv2d 运行
窗户 10
蟒蛇 4.2.13
蟒蛇3.5.2
C:\windows\system32>nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2016 NVIDIA Corporation Built on Sat_Sep__3_19:05:48_CDT_2016 Cuda 编译工具,8.0 版,V8.0.44
库顿 5.1
TensorFlow 0.12
结果是:
cudnn - cudnnRNNForwardTraining seqLength / xDesc 用法
假设我有 N 个序列 x[i],每个序列的长度 seqLength[i] 为 0 <= i < N。据我从 cuDNN 文档中了解到,它们必须按序列长度排序,最长的在前,所以假设 seqLength[i] >= seqLength[i+1]。假设它们具有特征维度 D,因此 x[i] 是形状 (seqLength[i], D) 的二维张量。据我了解,我应该准备一个张量x
,其中所有 x[i] 都是连续的,即它的形状为 (sum(seqLength), D)。
根据 cuDNN 文档,函数cudnnRNNForwardInference
/cudnnRNNForwardTraining
获取参数int seqLength
和cudnnTensorDescriptor_t* xDesc
,其中:
seqLength
:要展开的迭代次数。
xDesc
:张量描述符数组。每个必须具有相同的第二维。第一个维度可能会从元素 n 减少到元素 n + 1,但可能不会增加。
我不确定我是否正确理解这一点。是seqLength
我的最大值(seqLength)吗?
并且xDesc
是一个数组。多长?最大(序列长度)?如果是这样,我假设它为每一帧描述了一批特征,但后面的一些帧中的序列会更少。听起来每帧的序列数是在第一维中描述的。所以:
对于所有 0 <= t < max(seqLength)。即 0 <= xDesc[t].shape[0]
<= N。
每个xDesc[t] 描述了多少维度,即len(xDesc[t].shape) 是什么?我假设它是2,第二维是特征维度,即D,即:
必须相应地设置步幅,尽管也不是很清楚。如果x
以行优先顺序存储,则
但是 cuDNN 如何计算 frame 的偏移量t
?我猜它会跟踪并因此计算sum([xDesc[t2].strides[0] for t2 in range(t)])
.
我见过的大多数示例代码都假设所有序列的长度相同。此外,它们都描述了每个 xDesc[t] 的 3 个维度,而不是 2 个。这是为什么呢?第三维始终为 1,第二维和第三维的步幅始终为 1,第一维的步幅为 N。因此假设张量x
是行主序且形状为 (max(seqLength), N , D)。代码实际上有点奇怪。例如来自 TensorFlow:
在我找到的所有示例中,代码看起来都非常相似。搜索cudnnSetTensorNdDescriptor
或cudnnRNNForwardTraining
。例如:
我找到了一个可以处理不同长度序列的示例。再次搜索cudnnSetTensorNdDescriptor
:
这声称每个xDesc[t]
. 它有评论:
这些维度是 CUDNN 所期望的:(小批量维度、数据维度和数字 1(因为每个描述符描述一帧数据)
编辑:在 2018 年底,在此提交中为 PyTorch 添加了对此的支持。
我是否遗漏了 cuDNN 文档中的某些内容?我真的没有在其中找到该信息。
我的问题基本上是,我的结论是关于如何设置参数x
,for / correct,seqLength
以及我的隐含假设,或者如果没有,我将如何使用它,内存布局如何,等等?xDesc
cudnnRNNForwardInference
cudnnRNNForwardTraining
cuda - cuDNN Error ARCH_MISMATCH on a Kepler GPU
I'm just running the Alea TK samples. As long as I don't activate cuDNN things work will except for the CNN, since it uses Pooling2D which relies on cuDNN.
If I now activate cuDNN (via app.config) I get this error [cuDNN Error] ARCH_MISMATCH
as soon as I call Context.GpuContext(0)
.
If I run Context.GpuContext(0) without cuDNN I can clearly see, it's my 'GT 730' which should have compute 3.0 capabilities.
Any idea, what's going wrong here?
matlab - CUDN_STATUS_BAD_PARAM:matlab中的Cnn
我目前正在尝试使用 gpu 使用 cnn 在 matlab 中训练和测试网络。我有 gpu -GTX 1070 和 CUDA 8.0 和 cudnn 5.1。我从链接https://www.mathworks.com/help/vision/examples/object-detection-using-deep-learning.html遵循了使用 mathworks 提供的深度学习进行对象检测的示例 在运行以下几行之后:
它给了我训练有素的网络作为输出。但是在我运行以下行之后
它给了我以下错误