Tensorflow: 奇迹3.0?

创建于 2015-11-09  ·  101评论  ·  资料来源: tensorflow/tensorflow

是否有计划支持 Cuda 计算能力 3.0?

最有用的评论

至于为 Cuda 3.0 设备构建,如果您同步最新的 TensorFlow 代码,您可以执行以下操作。 官方文档将很快更新。 但这就是它的样子:

$ TF_UNOFFICIAL_SETTING=1 ./configure

...与上面的官方设置相同

警告:您正在 TensorFlow 中配置非官方设置。 因为有些
外部库不向后兼容,这些设置主要是
未经测试且不受支持。

请指定您想要的逗号分隔的 Cuda 计算功能列表
建立。 您可以在以下位置找到设备的计算能力:
https://developer.nvidia.com/cuda-gpus。
请注意,每增加一个计算能力都会显着增加
您的构建时间和二进制大小。 [默认为:“3.5,5.2”]:3.0

设置 Cuda 包括
设置 Cuda lib64
设置 Cuda bin
设置 Cuda nvvm
配置完成

所有101条评论

官方支持 Cuda 计算能力 3.5 和 5.2。 您可以尝试通过修改构建脚本来启用其他计算能力:

https://github.com/tensorflow/tensorflow/blob/master/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc#L236

谢谢! 将尝试并在这里报告。

这还没有得到官方的支持。 但是如果你想在本地启用 Cuda 3.0,这里有一些额外的地方需要改变:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L610
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L629
其中较小的 GPU 设备被忽略。

官方支持最终将以不同的形式出现,我们确保修复适用于所有不同的计算环境。

我对上面的行进行了更改,并且能够编译和运行入门页面上的基本示例:http: //tensorflow.org/get_started/os_setup.md#try_your_first_tensorflow_program - 它没有抱怨 gpu,但它也没有报告使用gpu。

我如何帮助后续步骤?

infojunkie@,你能发布你的步骤并上传日志吗?

如果您遵循此示例:

bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

如果您看到以下行,则表示正在创建 GPU 逻辑设备:

创建 TensorFlow 设备 (/gpu:0) -> (device: ..., name: ..., pci bus id: ...)

如果您想绝对确定使用了 GPU,请设置 CUDA_PROFILE=1 并启用 Cuda 分析器。 如果生成了 Cuda 分析器日志,则确定使用了 GPU。

http://docs.nvidia.com/cuda/profiler-users-guide/#command -line-profiler-control

我得到以下日志:

I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:888] 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_init.cc:88] Found device 0 with properties: 
name: GeForce GT 750M
major: 3 minor: 0 memoryClockRate (GHz) 0.967
pciBusID 0000:02:00.0
Total memory: 2.00GiB
Free memory: 896.49MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:122] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_region_allocator.cc:47] Setting region size to 730324992
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8

我想这意味着 GPU 被发现并使用。 如果您认为它有用,我可以尝试使用 CUDA 分析器。

请优先考虑这个问题。 它阻止了 OSX 和 AWS 的 K520 上的 gpu 使用,对于许多人来说,这是唯一可用的环境。
谢谢!

不是最好的修复,但只需注释掉 _gpu_device.c_ 第610616行的 cuda 计算版本检查,重新编译,amazon g2 GPU 加速似乎工作正常:

example

作为参考,这是我使用 Cuda 3.0 的非常原始的补丁: https ://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e

@infojunkie我应用了您的修复程序,但计算输出中有很多 nan:

$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu
000006/000003 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000004/000003 lambda = 2.000027 x = [79795.101562 -39896.468750] y = [159592.375000 -79795.101562]
000005/000006 lambda = 2.000054 x = [39896.468750 -19947.152344] y = [79795.101562 -39896.468750]
000001/000007 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000002/000003 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000009/000008 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000004/000004 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000001/000005 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000006/000007 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000003/000006 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000006/000006 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]

@markusdr ,这很奇怪。 您能否发布构建二进制文件的完整步骤?

您正在运行什么 GPU 和操作系统? 您使用的是 Cuda 7.0 和 Cudnn 6.5 V2 吗?

只需 +1 即可尽快在 AWS 上解决此问题。 我们没有任何其他 GPU 卡可供我们研究。

嗨,不确定这是否是一个单独的问题,但我正在尝试使用 CUDA 3.0 GPU(Geforce 660 Ti)进行构建,并且在使用 --config=cuda 时遇到了很多错误。 请参阅下面的附件。 它似乎与上面推荐的更改无关。 我注意到它试图编译一个临时的 compute_52.cpp1.ii 文件,这对于我的 GPU 来说是错误的版本。

我在 Ubuntu 15.10 上。 我修改了 Cuda 包含的 host_config.h 以删除对 gcc 的版本检查。 我按照推荐使用 Cuda 7.0 和 cuDNN 6.5 v2,尽管我也安装了更新的版本。

cuda_build_fail.txt

是的,我在 EC2 g2.2xlarge 实例上使用了 Cuda 7.0 和 Cudnn 6.5,并使用了这个 AIM:
cuda_7 - ami-12fd8178
ubuntu 14.04、gcc 4.8、cuda 7.0、atlas 和 opencv。
为了构建,我按照 tensorflow.org 上的说明进行操作。

看起来我们看到了 Compute Capability v3 和 Compute Capability v3.5 之间的 API 不兼容; 发布infojunkie 的补丁修复,我遇到了这个问题

I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] 创建 TensorFlow 设备 (/gpu:0) -> (设备: 0, 名称: Quadro K2100M, pci bus id: 0000:01:00.0)
I tensorflow/core/common_runtime/local_session.cc:45] 本地会话间操作并行线程:8
F tensorflow/stream_executor/cuda/cuda_blas.cc:229] 检查失败:f != nullptr _could not find cublasCreate_v2 in cuBLAS DSO_; dlerror:bazel-bin/tensorflow/cc/tutorials_example_trainer:未定义符号:cublasCreate_v2

我在 Ubuntu 15.04、gcc 4.9.2、CUDA Toolkit 7.5、cuDNN 6.5 上运行;

+1 支持计算能力 v3

cublas 安装了吗? 它链接到哪里
ls -lah /usr/local/cuda/lib64/libcublas.so ?

@allanzelener ,你有哪些操作系统和 GCC 版本? 您的错误似乎来自不兼容的 C++ 编译器。

推荐使用 Ubuntu 14.04 和 GCC 4.8 和 TensorFlow。

@vsrikarunyan ,最好按照推荐使用 CUDA Toolkit 7.0。 您可以安装较旧的 CUDA 工具包和较新的工具包。 运行 TensorFlow 时,只需将 TensorFlow“配置”和可能的 LD_LIBRARY_PATH 指向 CUDA 7.0。

@avostryakov@infojunkie的早期补丁应该可以在 AWS 上运行。

https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e

官方补丁正在通过管道进行。 它会公开一个配置选项,让您选择计算目标。 但在下面,它做了类似的变化。 我已经在 AWS g2 上进行了尝试,并且在我完全卸载 NVIDIA 驱动程序并重新安装 NVIDIA 最新的 GPU 驱动程序后发现一切正常。

同样,此时 AWS 上的推荐设置如下。
Ubuntu 14.04、GCC 4.8、CUDA 工具包 7.0 和 CUDNN 6.5。 对于最后两个,安装它们而不影响您现有的其他版本的安装是可以的。 最后两个的官方推荐版本也可能很快改变。

我在 g2.2xlarge 实例上应用了相同的补丁,并得到了与 @markusdr 相同的结果……一堆 nan。

@zheng-xq 是的,我在 Ubuntu 15.10 上使用 GCC 5.2.1。 问题是编译器。 我不知道如何用 bazel 更改编译器,但简单地安装 gcc-4.8 并使用 update-alternatives 更改 usr/bin 中的符号链接似乎有效。 (更多信息:http://askubuntu.com/questions/26498/choose-gcc-and-g-version)。 感谢您的帮助,如果我遇到任何进一步的问题,我会报告。

我确实让它在 g2.2xlarge 实例上工作,并让训练示例运行,并使用 nvidia-smi 工具验证 gpu 是活动的,但是在运行 mnist 的 convolutional.py 时,它的内存不足。 我怀疑这与批量大小以及 aws gpus 没有太多内存的事实有关,但只是想把它扔在那里以确保它听起来正确。 为了澄清,我运行了以下,它运行了大约 15 分钟,然后内存不足。

python张量流/模型/图像/mnist/convolutional.py

@nbenhaim ,你需要做什么才能让它工作?

@markusdr@jbencook ,NAN 很麻烦。 我自己跑了同样的事情,没有任何问题。

如果您使用推荐的软件设置:Ubuntu 14.04、GCC 4.8、Cuda 7.0 和 Cudnn 6.5,那么我的下一个猜测是 Cuda 驱动程序。 您能否卸载并重新安装最新的 Cuda 驱动程序。

这是我在 AWS 上尝试的顺序,您的里程可能会有所不同:

sudo apt-get remove --purge "nvidia*"
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/352.55/NVIDIA-Linux-x86_64-352.55.run
sudo ./NVIDIA-Linux-x86_64-352.55.run --accept-license --no-x-check --no-recursion

感谢您关注@zheng-xq - 今天我会试一试。

另一个支持 3.5 之前的 GPU 的 +1,因为其他人对真实数据进行训练的唯一现实选择是 AWS GPU 实例。

即使对于本地测试,我的(最近的,开发人员)笔记本电脑的 GPU 也不支持 3.5 :-(

@anjishnu在按照说明进行全新安装和构建后,我只是按照@infojunkie的补丁https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e进行操作。

一些评论 - 我使用的 AMI 安装了 NVIDIA cuda 工具包 6.5,所以当我点击 tensorflow 入门指南中的链接时,我下载了 ubuntu 14.04 的 7.0 .run 文件,升级了驱动程序,并将 cuda 7.0 安装到/usr/local/cuda-7.0 没有创建到 /usr/local/cuda 的符号链接,因为我已经安装了 6.5 并且不想杀死它

然后,在构建时,我只是指定了 cuda 7.0 的正确位置。 一件令人困惑的事情是,在构建 python 库时,教程并没有提醒您指定 --config=cuda ,但是如果您希望 python 库使用 gpu,则必须这样做

@markusdr@jbencook ,当我最初应用补丁时,我得到了一个 NaN 和各种混乱的值,但修复它的是在进行 @infojunkie 中概述的建议更改后进行“ bazel clean”并从头开始重建的补丁。 你试过这个吗?

有趣...不,我还没有机会。 您是否尝试过从入门指南运行 CNN?

python tensorflow/models/image/mnist/convolutional.py

很想知道这是否正常工作。

@jbencook正如我所提到的,convolutional.py 似乎运行正确,但大约 15 分钟后它由于内存不足而崩溃,但输出看起来正确,我使用 nvidia-smi 的工具来验证它实际上是在 GPU 上运行,它是。 我怀疑这是因为批量大小......我知道 ec2 上的 gpus 没有那么多内存,但我现在真的不确定它为什么内存不足

在 GeForce GTX 780 Ti 上,convolutional.py 示例也耗尽了我的 GPU 内存。

在经历了很多痛苦之后,我能够将它安装在 AWS 上。 请参阅https://gist.github.com/erikbern/78ba519b97b440e10640 – 我还构建了一个 AMI:ami-cf5028a5(在弗吉尼亚地区)

它适用于 g2.2xlarge 和 g2.8xlarge 并正确检测设备(分别为 1 和 4)。 但是,我没有看到 g2.8xlarge 上的 4 个 GPU 卡有任何加速。 两台机器每秒处理大约 330 个示例,运行具有多个 GPU 的 CIFAR 10 示例。 MNIST 卷积示例的性能也非常相似。 它还会在大约 15 分钟后崩溃,并出现“GPU 内存不足,请参阅上面的内存状态转储”,正如上面提到的其他人

我已经运行了 CIFAR 示例大约一个小时,到目前为止它似乎运行得很好

至于为 Cuda 3.0 设备构建,如果您同步最新的 TensorFlow 代码,您可以执行以下操作。 官方文档将很快更新。 但这就是它的样子:

$ TF_UNOFFICIAL_SETTING=1 ./configure

...与上面的官方设置相同

警告:您正在 TensorFlow 中配置非官方设置。 因为有些
外部库不向后兼容,这些设置主要是
未经测试且不受支持。

请指定您想要的逗号分隔的 Cuda 计算功能列表
建立。 您可以在以下位置找到设备的计算能力:
https://developer.nvidia.com/cuda-gpus。
请注意,每增加一个计算能力都会显着增加
您的构建时间和二进制大小。 [默认为:“3.5,5.2”]:3.0

设置 Cuda 包括
设置 Cuda lib64
设置 Cuda bin
设置 Cuda nvvm
配置完成

@nbenhaim @markusdr

内存不足问题可能是由于convolutional.py对整个测试数据集 (10000) 示例运行评估。 它发生在训练完成后,作为最后一步:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/image/mnist/convolutional.py#L266

您可以尝试将train_datatest_labels切片以使其更小吗?

我可以确认使用@erikbern的安装脚本和最新的 TensorFlow 主分支cifar10_multi_gpu_train.py在 GPU 上按预期工作:

step 100, loss = 4.49 (330.8 examples/sec; 0.387 sec/batch)

尽管此行现在由于代码更改而中断。

此外,如果我采用 1000 个测试样本, convolutional.py示例也可以。

编辑: bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu示例也可以在不给我一堆 nan 的情况下工作。

我确认最新版本支持通过指定计算能力
$ TF_UNOFFICIAL_SETTING=1 ./configure
无需补丁。 谢谢!

我认为这个问题可以关闭,除非有人遇到 Cuda < 3.5 失败的实际功能。

实际上,让我收回 :-) ./configure脚本通过使用手动指定的 Cuda 版本更改相关行来修改源代码。 然后 git 报告未提交的更改,并且如果不还原更改、 git pull并再次配置,则很难使用此代码库,更不用说提交贡献了。

更好的方法是从配置文件中读取这些版本设置。

上面的 ErikBern 和他的 AMI 正在为我工​​作 cifar - ami-cf5028a5

每秒获得约 320 个样本,而我在 docker 上的 i7 windows 盒子每秒获得约 105 个样本,用于 cifar10_train.py

@infojunkie :是的,这并不理想(@zheng-xq 和我在审查期间讨论了这个问题!)。

我们将尝试想出一种更好的方法来处理这个问题,尽管我们希望保持运行时设备过滤的能力与构建二进制文件的方式同步(因此需要编辑源代码以进行编译和运行)。 否则用户会遇到难以调试的错误。

我们将继续努力使这更容易,但希望这可以为您带来一些进步。

@vrv :是的,我绝对可以通过这些修复继续我的工作。 感谢您的支持!

只是好奇,因为具有 16 个 vCpus 的 c4.4xlarge 大约是每小时 0.88 个,而 gpu 实例是每小时 0.65 个,使用多个 cpu 不是比 gpu 更好吗?

@timshephard我对此表示怀疑,但可以随意运行一些基准测试——您可以在 c4.4xlarge 上安装我的 AMI (ami-cf5028a5) 并运行 cifar10_train.py

实际上,g2.2xlarge 在 GPU 旁边有 8 个 CPU。 打算试试。

支持多线程 CPU,但如果你想做任何真正的训练,
GPU 4 Life,直到他们发布分布式实现

2015 年 11 月 12 日星期四下午 4:53,Erik Bernhardsson < [email protected]

写道:

@timshephard https://github.com/timshephard我对此表示怀疑,但请随意
运行一些基准测试——您可以将我的 AMI (ami-cf5028a5) 安装在
c4.4xlarge 并运行 cifar10_train.py


直接回复此邮件或在 GitHub 上查看
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -156274039
.

我在 docker 上的 windows CPU 上的亚马逊 GPU 速度只有 3 倍。 很好,但这只是我的核心之一。 我的 windows 盒子上的所有 4 个内核可能都可以击败亚马逊 GPU。

这很有趣,因为使用 caffe 时,我没有做任何实际的基准测试,
但是在 CPU 模式下训练是可怕的,比如数量级或更多
区别。 也许 TF 在 CPU 模式下优化得更好 - 不会感到惊讶
我。

2015 年 11 月 12 日星期四下午 5:01,timshephard [email protected]
写道:

我的 Windows CPU 上的亚马逊 GPU 速度只有 3 倍
码头工人。 很好,但这只是我的核心之一。 全部用于我的 4 核
windows box 可能会击败亚马逊 GPU。


直接回复此邮件或在 GitHub 上查看
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -156275410
.

请记住,cifar10 教程并不是要作为基准。 它旨在展示一些不同的功能,例如保护程序和摘要。 在目前的形式下,它将受到 CPU 的限制,即使使用 GPU 也是如此。 要进行基准测试,必须更加小心,并且只使用基本功能。

可能只是亚马逊 GPU 由于某种原因速度很慢https://www.reddit.com/r/MachineLearning/comments/305me5/slow_gpu_performance_on_amazon_g22xlarge/
有趣的报告:“g2.2xlarge 是降频的 GK104 (797 MHz),它的速度是最近发布的 TitanX 的 1/4,比 GTX 980 慢 2.7 倍。”

fwiw,得到 2015-11-13 00:38:05.472034:第 20 步,损失 = 4.64(362.5 个示例/秒;0.353 秒/批)
现在有 7 个 CPU 和 cifar10_multi_gpu_train.py。 如果有意义的话,我将所有设备引用从 gpu 更改为 cpu。

好吧,奇怪。 2015-11-13 00:43:56.914273:第 10 步,损失 = 4.65(347.4 个示例/秒;0.368 秒/批次)并使用 2 个 CPU,所以很明显这里有些失败。 必须仍在使用GPU。 有趣的是,它的处理速度比脚本的单个 gpu 版本快一点。

即使有埃里克伯恩的指示,我仍然得到

AssertionError:当我尝试 cifar_train.py 和运行 mnist/convolutional.py 时,模型以 loss = NaN 发散

纪元 1.63
Minibatch loss:nan,学习率:nan
小批量错误:90.6%
验证错误:90.4%
纪元 1.75
Minibatch loss:nan,学习率:0.000000
小批量错误:92.2%
验证错误:90.4%
纪元 1.86
Minibatch loss:nan,学习率:0.000000

我让它在 AWS 上的 GPU 上运行,但和其他人一样,我的速度并不令人印象深刻。

在使用@zheng-xq 建议的在运行configure 时设置选项的正确修复后,我能够让convolutional.py 示例运行而不会耗尽内存

从提交 9c3043ff3bf31a6a81810b4ce9e87ef936f1f529 起, @erikbern提供的安装脚本不再有效

最近的提交引入了这个错误, @keveman已经在此处对提交进行了注释:
https://github.com/tensorflow/tensorflow/commit/9c3043ff3bf31a6a81810b4ce9e87ef936f1f529#diff -1a60d717df0f558f55ec004e6af5c7deL25

你好! 我在使用 GTX 670 编译 tensorflow 时遇到问题。我运行

TF_UNOFFICIAL_SETTING=1 ./configure
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer

我收到错误:

INFO: Found 1 target...
INFO: From Compiling tensorflow/core/kernels/bias_op_gpu.cu.cc:
tensorflow/core/kernels/bias_op_gpu.cu.cc(40): error: identifier "__ldg" is undefined
          detected during:
            instantiation of "void tensorflow::functor::BiasOpCustomKernel(int, const T *, const T *, int, int, T *) [with T=float]" 
(57): here
            instantiation of "void tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::operator()(const tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::Device &, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::ConstTensor, tensorflow::TTypes<T, 1, Eigen::DenseIndex>::ConstVec, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::Tensor) [with T=float, Dims=2]" 
(69): here

tensorflow/core/kernels/bias_op_gpu.cu.cc(40): error: identifier "__ldg" is undefined
          detected during:
            instantiation of "void tensorflow::functor::BiasOpCustomKernel(int, const T *, const T *, int, int, T *) [with T=double]" 
(57): here
            instantiation of "void tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::operator()(const tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::Device &, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::ConstTensor, tensorflow::TTypes<T, 1, Eigen::DenseIndex>::ConstVec, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::Tensor) [with T=double, Dims=2]" 
(69): here

2 errors detected in the compilation of "/tmp/tmpxft_000067dd_00000000-7_bias_op_gpu.cu.cpp1.ii".
ERROR: /home/piotr/tensorflow/tensorflow/tensorflow/core/BUILD:248:1: output 'tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/bias_op_gpu.cu.o' was not created.
ERROR: /home/piotr/tensorflow/tensorflow/tensorflow/core/BUILD:248:1: not all outputs were created.
Target //tensorflow/cc:tutorials_example_trainer failed to build

来自 NVIDIA 示例 deviceQuery 的关于我的卡的信息:

Device 0: "GeForce GTX 670"
  CUDA Driver Version / Runtime Version          7.5 / 7.0
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 2046 MBytes (2145235968 bytes)
  ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
  GPU Max Clock rate:                            980 MHz (0.98 GHz)
  Memory Clock rate:                             3004 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.0, NumDevs = 1, Device0 = GeForce GTX 670

任何想法为什么它不起作用?
谢谢!

我认为 __ldg 原语仅适用于 3.5+。 我们有一个内部修复来支持两者,我们将尽快推出。

有关更多详细信息,请参阅https://github.com/tensorflow/tensorflow/issues/320

谢谢! 从 #320 添加修复对我有帮助,我可以编译(有很多警告)并执行

bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

当我运行示例时:

tensorflow/models/image/mnist$ python convolutional.py 

我收到警告:

Ignoring gpu device (device: 0, name: GeForce GTX 670, pci bus id: 0000:01:00.0) with Cuda compute capability 3.0. The minimum required Cuda capability is 3.5.

如何在 tensorflow/models/images 的示例中启用 GPU?

@erikbern
您是否在亚马逊上发现了多个 GPU 问题? 我也在运行 CIFAR 多个 GPU 实例,但没有看到加速。

这是 GPU 利用率状态,似乎所有 GPU 都在使用,但它们没有做任何事情。

+-------------------------------------------------- -----+
| NVIDIA-SMI 346.46 驱动程序版本:346.46 |
|-------------------------------+----------------- -----+-----------+
| GPU名称持久化-M| 总线 ID Disp.A | 挥发性的 Uncorr。 纠错 |
| Fan Temp Perf Pwr:Usage/Cap | 内存使用 | GPU-Util Compute M. |
|=================================+================= =====+========================|
| 0 网格 K520 关闭 | 0000:00:03.0 关闭 | 不适用 |
| 不适用 54C P0 55W / 125W | 3832MiB / 4095MiB | 37% 默认 |
+-------------------------------+------------------ -----+-----------+
| 1 格 K520 关闭 | 0000:00:04.0 关闭 | 不适用 |
| 不适用 42C P0 42W / 125W | 3796MiB / 4095MiB | 0% 默认 |
+-------------------------------+------------------ -----+-----------+
| 2 格子 K520 关闭 | 0000:00:05.0 关闭 | 不适用 |
| 不适用 46C P0 43W / 125W | 3796MiB / 4095MiB | 0% 默认 |
+-------------------------------+------------------ -----+-----------+
| 3 格 K520 关闭 | 0000:00:06.0 关闭 | 不适用 |
| 不适用 43C P0 41W / 125W | 3796MiB / 4095MiB | 0% 默认 |
+-------------------------------+------------------ -----+-----------+

+-------------------------------------------------- --------------------------------------------+
| 进程:GPU 内存 |
| GPU PID 类型 进程名称 用法 |
|=================================================== =============================|
| 0 60160 C 蟒蛇 3819MiB |
| 1 60160 C 蟒蛇 3783MiB |
| 2 60160 C 蟒蛇 3783MiB |
| 3 60160 C 蟒蛇 3783MiB |
+-------------------------------------------------- --------------------------------------------+

@mhejrati根据对https://news.ycombinator.com/item?id=10555692的评论,您似乎无法在 AWS 中做到这一点:

Xen 虚拟化禁用了 P2P 副本,因此 GPU 具有我们所说的“无法通信以及您无法访问的某些 GPU(无需通过 CPU)”。

不确定 HN 评论的可信度如何,但到目前为止我只知道这些

@erikbern @mhejrati我不太确定 Xen 的特定属性是否存在问题。 P2P 副本似乎不是必需的,因为 cpu 仍然可以将工作分配给每个 GPU,而无需 GPU 相互通信。 奇怪的是,实例上的所有 GPU 似乎都处于这种半使用状态,但工作继续进行而没有错误。

我会关闭这个错误。 如果此处的某些问题仍未解决,请打开一个具有更具体标题的新标题。

这是否意味着 tensorflow 的最新版本可以在没有任何黑客攻击的情况下在 Amazon g2 实例上运行? 这是否意味着它可以在那里使用多个 GPU?

我不确定我们是否应该将 TF_UNOFFICIAL_* 称为“不是黑客”,但是是的,它_应该_工作。 如果没有,它可能与 Cuda 3.0 本身无关,我们应该有一个更具体的错误。

是否可以在亚马逊实例上的两个或多个 GPU 上执行代码? 例如,用于训练 CIFAR 示例中的模型的数据并行性。 几个人在这条评论之上只有 5 条评论写道,这是不可能的。

我不知道。 但如果这仍然是 0.6.0 的问题,那应该是一个错误,只是一个关于多个 GPU 的更具体的问题。

我在 ubuntu 上使用 0.6.0,不能使用多个 GPU。 一个 GPU 上的 GPU 利用率始终为 0。

仅供参考,租用 K40 或 K80 实际上并不昂贵。 亚马逊没有,但http://www.nvidia.com/object/gpu-cloud-computing-services.html上的几个选项有。 (有些低至 3 美元/小时)

Theano 和 Torch 对计算 3.0 没有任何问题。 我们可以期待 TensorFlow 很快支持计算 3.0 吗?

或者至少添加无需重新编译即可覆盖限制的能力。

@Dringite ,您可以使用以下命令启用 Cuda 3.0:

TF_UNOFFICIAL_SETTING=1 ./configure

它应该是功能性的。 如果没有,请随时提交另一个问题来跟踪它。

tensorflow 安装指南现在还包括对 cuda 3.0 的修复

2016 年 2 月 10 日星期三下午 2:37,zheng-xq [email protected]写道:

@Dringite https://github.com/Dringite ,您可以使用启用 Cuda 3.0
下列:

TF_UNOFFICIAL_SETTING=1 ./configure

它应该是功能性的。 如果没有,请随时提交另一个
问题来跟踪它。


直接回复此邮件或在 GitHub 上查看
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -182610763
.

我认为当前指南不适用于 gpu - 测试返回 nan 之前报告的。
特别是你仍然需要这样做:
TF_UNOFFICIAL_SETTING=1 ./configure

我找不到包含 cuda 3.0 修复程序的安装指南,有人可以为我指出吗? 谢谢!

printf "\ny\n7.5\n\n\n\n3.0\n" | 。/配置

7.5 是 cuda 版本,3.0 是计算版本。

与单 GPU 相比,亚马逊的多 GPU(CUDA=7.5,cudnn =4.0,compute = 3.0)仍然没有性能提升。

有人在 Cuda 计算能力 2.0 上取得成功吗?

已验证 'TF_UNOFFICIAL_SETTING=1 ./configure' 适用于配备 GeForce GT 750M 的 macbook pro。 谢谢!

有官方修复的预计到达时间吗? 在生产环境中维护(例如使用我们自己的 dockerfile 构建图像)真的很痛苦。

当我尝试运行 mnist sample 时,我的笔记本电脑给了我这个日志:
“忽略具有 Cuda 计算能力 2.1 的 gpu 设备(设备:0,名称:GeForce GT 635M,pci 总线 ID)。所需的最低 Cuda 能力为 3.0。”
那么这是否意味着我不能使用 GPU 版本,因为 tensorflow 的最小 Cuda 是 3.0 ?
谢谢

如果您使用预构建的二进制文件,是的。 如果你从源代码构建,你可以
使用 Cuda 2.1 支持构建,但我不知道这是否真的有效。 它是
可能有效的最小值是 cuda 3.0。
2016 年 9 月 10 日星期六 11:51 Mojtaba Tabatabaie [email protected]
写道:

当我尝试运行 mnist sample 时,我的笔记本电脑给了我这个日志:
“使用 Cuda 忽略 gpu 设备(设备:0,名称:GeForce GT 635M,pci 总线 ID)
计算能力 2.1. 所需的最低 Cuda 功能是 3.0 。 "
那么这是否意味着我不能使用 GPU 版本,因为最低 Cuda
张量流是 3.0 吗?
谢谢


您收到此消息是因为您修改了打开/关闭状态。
直接回复此邮件,在 GitHub 上查看
https://github.com/tensorflow/tensorflow/issues/25#issuecomment -246128896,
或使线程静音
https://github.com/notifications/unsubscribe-auth/AAjO_Rv​​NrRMQEmsueXWoaU5FX4tWHZq3ks5qovwegaJpZM4Ge0kc
.

@smtabatabaie您是否尝试过按照@martinwicke 的建议从源代码构建cuDNN ,我面临的问题与您的完全相同,如果您分享您的经验,它会对我有很大帮助吗?

请帮忙。 我收到相同的错误消息“忽略可见 gpu 设备(设备:0,名称:GeForce GT 750M,pci 总线 ID:0000:01:00.0),Cuda 计算能力为 3.0。所需的最低 Cuda 能力为 3.5。”

我已经阅读了其他人的帖子,唯一的问题是这是一个直接的 Windows 安装,而不是在 AWS 上,因为我假设这里的大多数人都有。 在tensorflow网站上,说至少需要3.0,为什么我无法使用这个? 我怎样才能绕过它?

请就如何做到这一点提出建议。

@gunan @mrry是不是用 cuda 3.0 构建的 Windows 包? 这就是为什么
他们这么小?

@martinwicke睡衣是,rc1 也应该是。

是的。
rc0 我认为是 3.5。
我们是否选择了使用 3.0 到 r0.12 的更改?

我们确实挑选了变化。
@cydal ,您可以在这里使用每晚构建:
http://ci.tensorflow.org/view/Nightly/job/nightly-win/14/DEVICE=gpu,OS=windows/artifact/cmake_build/tf_python/dist/tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64 。 whl

或者你可以等待0.12.0rc1,它应该在几天内登陆。

谢谢大家的快速回复,至少我有一段时间没想到。 抱歉,如果这听起来像是一个愚蠢的问题,我该如何安装? 我只是简单地安装它吗? (如果是这样,我是否删除了以前的 tensorflow gpu?还是它会自动删除?)还是需要下载它并以某种方式手动安装它? 把我当作一个新手。

该链接指向“PIP 包”。
如果您使用了pip install命令,您应该能够使用带有--upgrade标志的相同命令。
或者你可以运行pip uninstall tensorflow然后安装上面列出的包。
一旦你给 pip 命令提供 URL,它将自动下载并安装。

这就是我在您的系统、python 发行版等方面知识有限的情况下所能提供的全部内容。
考虑在 Google 上搜索有关 pip 包安装如何与您的 python 发行版配合使用的更多详细信息。

你好,我只是卸载了前一个并重新安装,它的工作原理! 非常感谢,您让我免于购买新笔记本电脑。

@gunan与 3.5 兼容性的最新更改,我得到以下日志:

>>>> sess = tf.Session()
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties:
name: Quadro K4100M
major: 3 minor: 0 memoryClockRate (GHz) 0.7055
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.69GiB
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (d
evice: 0, name: Quadro K4100M, pci bus id: 0000:01:00.0)
E c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:586] Could not identify NUMA node of /job:loca
lhost/replica:0/task:0/gpu:0, defaulting to 0.  Your kernel may not have been bu
ilt with NUMA support.

我怎样才能绕过它? 关于如何做到这一点的建议最受欢迎。

@kay10看起来有效。 最后一行的错误消息是无害的,将在版本中删除。

正如我在这个帖子中看到的,每个人的兼容性级别都为 3。对于兼容性为 2 的人,有没有不编译源代码的解决方案?
我尝试了@gunan共享的夜间构建并得到了错误:
tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64.whl is not a supported wheel on this platform.
它不是一个 linux 轮子,我很快就意识到了。

16.04 Ubuntu 上的当前情况。
I tensorflow/core/common_runtime/gpu/gpu_device.cc:948] Ignoring visible gpu device (device: 0, name: GeForce GTX 590, pci bus id: 0000:03:00.0) with Cuda compute capability 2.0. The minimum required Cuda capability is 3.0. I tensorflow/core/common_runtime/gpu/gpu_device.cc:948] Ignoring visible gpu device (device: 1, name: GeForce GTX 590, pci bus id: 0000:04:00.0) with Cuda compute capability 2.0. The minimum required Cuda capability is 3.0.

@batuhandayioglugil我们太多的 GPU 内核依赖于仅在 3.0 及更高版本中可用的功能,因此很遗憾您将需要更新的 GPU。 您也可以考虑尝试其中一种云服务。

@vrv我在这些问题上花费了相当长的时间并购买了新的 PSU 之后才来到这一点,因此我花了很多钱。 为了避免进一步浪费时间,我想问一个问题:我听说的深度学习库至少有 15 个。 Cuda 和 cuDNN 是 tensorflow 所必需的。 这种情况(计算能力)对于 cuda 库来说是特殊的吗? 我还有其他机会吗? 如果没有,我将放弃正确的知识并继续使用CPU(请原谅我的疏忽)

我认为这将比尝试让您的 2.0 卡工作更麻烦——您现有的 CPU 可能与您的特定 GPU 一样快或更快,并且开始时的麻烦要少得多。 不幸的是,我不知道其他库需要什么。

它是否已经支持 GPU 计算 3.0?

是的。

@martinwicke感谢您的快速响应。 我仍然需要从源代码构建它,还是直接 pip 安装它? 我在 Arch linux 上并且努力从源代码构建它,并使用 c 编译器给出错误。

我认为它应该从二进制工作。

我也有同样的问题:“Ignoring gpu device (device:0,name:GeForce GT 635M, pci bus id) with Cuda compute capability 2.1。最低要求的Cuda能力是3.0。” . @smtababaie @martinwicke @alphajatin。 帮助 !!!!

计算能力 2.1 太低,无法运行 TensorFlow。 您需要更新(或更强大)的显卡才能在 GPU 上运行 TensorFlow。

问题答案的 url 无效。 你能更新一下吗?

对于 nightly pip 包,推荐的安装方式是使用pip install tf-nightly命令。
ci.tensorflow.org 已弃用。

此页面是否有帮助?
0 / 5 - 0 等级