问题标签 [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.

0 投票
1 回答
590 浏览

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 版本:

我一直在努力让它工作一段时间,希望有人能指出我正确的方向。

0 投票
0 回答
1640 浏览

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:)

安装依赖项和工具

安装 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*

配置环境

  • 将以下内容放在末尾~/.bashrcexport 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
  • scphttps://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
0 投票
1 回答
363 浏览

machine-learning - Tensorflow中CUDNN卷积BackwardFilter的等价物是什么?

我正在尝试移植一些在 Tensorflow 上使用 CUDNN 的代码。其中大部分都非常容易移植,但我在将 cudnnConvolutionBackwardFilter 移植到 Tensorflow 时遇到了问题。我尝试使用conv2dconv2d_transpose但它们都不适用于此配置。[N, V, V, C]这意味着我有and形式的输入,[N, F, F, K]我需要[V-F, V-F, C, K]. 我虽然做一个循环来做所有的卷积并对结果求和,但我没有找到在张量流图中做这样一个循环的方法。

我怎样才能将这样的代码翻译成 Tensorflow?

0 投票
1 回答
121 浏览

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 毫秒)?

0 投票
0 回答
910 浏览

caffe - 在 Caffe 中暂时禁用 cuDNN

是否可以暂时禁用 Caffe 中的 cuDNN 而无需在我的 train_val 文件中的每一层上设置 engine: Caffe?我们希望为重构目的获得确定性结果,但当我们不这样做时继续使用 cuDNN。

0 投票
1 回答
5721 浏览

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


结果是:

0 投票
1 回答
368 浏览

machine-learning - cudnn:当 CUDNN_SOFTMAX_ACCURATE 工作正常时,CUDNN_SOFTMAX_FAST 输出 NaN

当使用设置 CUDNN_SOFTMAX_FAST 而不是 CUDNN_SOFTMAX_ACCURATE 时,为 cudnnSoftmaxForward 使用某些浮点值集会产生 NaN 输出。有谁知道为什么会这样?这是库中的错误吗?

以下是使用 CUDNN_SOFTMAX_FAST 的结果:

在此处输入图像描述

以下是使用 CUDNN_SOFTMAX_ACCURATE 的结果:

在此处输入图像描述

0 投票
0 回答
813 浏览

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 seqLengthcudnnTensorDescriptor_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:

在我找到的所有示例中,代码看起来都非常相似。搜索cudnnSetTensorNdDescriptorcudnnRNNForwardTraining。例如:

我找到了一个可以处理不同长度序列的示例。再次搜索cudnnSetTensorNdDescriptor

这声称每个xDesc[t]. 它有评论:

这些维度是 CUDNN 所期望的:(小批量维度、数据维度和数字 1(因为每个描述符描述一帧数据)

编辑:在 2018 年底,在此提交中为 PyTorch 添加了对此的支持。

我是否遗漏了 cuDNN 文档中的某些内容?我真的没有在其中找到该信息。

我的问题基本上是,我的结论是关于如何设置参数x,for / correct,seqLength以及我的隐含假设,或者如果没有,我将如何使用它,内存布局如何,等等?xDesccudnnRNNForwardInferencecudnnRNNForwardTraining

0 投票
1 回答
302 浏览

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?

MyDevidce

0 投票
1 回答
1038 浏览

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 提供的深度学习进行对象检测的示例 在运行以下几行之后:

它给了我训练有素的网络作为输出。但是在我运行以下行之后

它给了我以下错误