当前位置: 首页 > 知识库问答 >
问题:

使用所需的优化标志重新构建Tensorflow

柳弘方
2023-03-14

提前感谢您的考虑,

我刚刚使用以下步骤安装了tensorflow(在一台已经安装了Ubuntu 16.04和CUDA 8.0的新机器上):

最初,我使用--copt=-march=native。我收到了留言

TensorFlow库没有编译成使用SSE3指令,但是这些指令在您的机器上可用,可以加快CPU计算速度。

W tensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库的编译不是为了使用SSE4.1指令,但这些指令在您的机器上可用,可以加快cpu计算。

TensorFlow库没有编译成使用SSE4.2指令,但是这些指令在您的机器上可用,可以加快CPU计算速度。

W tensorflow/core/platform/cpu\u feature\u guard.cc:45]tensorflow库的编译不是为了使用AVX指令,但这些指令在您的机器上可用,可以加快cpu计算。

TensorFlow库没有编译成使用AVX2指令,但这些指令在您的机器上可用,可以加快CPU计算速度。

W tensorflow/core/platform/cpu\u feature\u guard.cc:45]tensorflow库的编译不是为了使用FMA指令,但是这些指令可以在您的机器上使用,并且可以加快cpu计算。

因此,为了解决这个问题,我搜索了解决方案,并使用了以下如何使用SSE4.2和AVX指令编译Tensorflow的答案?

通过使用nVidia的上述程序,从

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

但是我仍然收到与上面相同的消息。我觉得我好像犯了一个很简单的错误,有什么想法吗?

谢谢

共有1个答案

梁丘缪文
2023-03-14

通过遵循NVIDIA指令,您将TensorFlow存储库重置为旧的提交,在SIMD指令优化可用之前(1.0r):

git重置——硬70de76e

这个提交可以追溯到以前的版本,当时这个功能还没有实现,所以它实际上是按照它应该的方式工作的。

解决方案是遵循TensorFlow官方文档。

对于未来的情况,始终建议在寻求第三方解决方案之前使用官方资源,因为它们可能越有帮助,官方资源就越可靠,维护也更好。

注意,在配置过程中,由于上述原因,没有提示您要使用哪些CPU指令来构建TF,因此,您无法使用它们进行构建。

当指定bazel选项“-config=opt”时,请指定编译期间要使用的优化标志[默认值为-march=native]:

遵循相应的官方文件,它将起作用。如果您有任何后续问题,请随时提问,或者如果您面临任何问题,请在Github上打开一个问题:)

 类似资料:
  • 问题内容: 我最近一直在用C编写很多代码,现在正在切换到Java。我当前正在实现一个大型数据结构,并且想知道在调用Java编译器时是否可以打开任何优化标志,以提高gcc之类的性能。 我习惯于: 有类似的命令javac吗? 我正在使用JDK并正在运行Ubuntu 10.04。 问题答案: Java中的优化主要由JIT编译器在运行时完成。因此,没有必要试图指示它在编译时优化某种方式(无论如何它仅创建字

  • 我正在使用GCC4.4.2构建一些大型项目。因为我想构建它以供发布,所以我使用了GCC优化标志,但不幸的是,它在某种程度上弄乱了我的代码,最终的二进制文件没有按照预期工作,当使用标志(或没有优化)构建时,一切都很好。我之前的项目也有类似的问题,当时是标志在优化级别上造成了问题,我通过搜索本文档中提到的所有标志,就优化级别而言,设法发现它是由该特定标志引起的: http://gcc.gnu.org/

  • 存在与循环有关的问题。为什么?也许是虫子? 我使用的是最新的4.8.0,经过测试的x64、x86以及其他版本。都是同样的行为。

  • 我正在尝试禁用所有日志 } 但是当我设置 生成失败错误 com.android.build.api.transform。TransformException:com.android.ide.common.process。ProcessException:org.gradle.process.internal。ExecException:进程“command”/Library/Java/JavaVi

  • 我有一个用于将实时数据移动到测试环境中的事务数据置乱的过程。该表包含大约一亿行,分布在50个分区中。每月添加一个新分区。随着音量的增加,过程的执行速度比以前慢。 我正在考虑在我的代码中引入某种程度的并行化。这是一个新领域,我想知道是否有任何最佳实践。也许使用dbms_parallel_execute将更新拆分为块? 任何关于如何优化我的代码的建议都非常感谢! 编辑,我的解决方案基于以下反馈:重写部

  • 我正试图提出一种优化的架构,将事件日志消息存储在Elasticsearch上。 以下是我的规格/需求: 消息是只读的;输入后,仅查询报告 因此,执行最频繁的查询将是:获取给定的所有登录项、客户id和时间戳范围。 以下是登录项的外观: 我需要帮助索引我的数据。 我一直在读什么是elasticsearch索引?使用elasticsearch为客户提供事件服务,以获得良好索引架构的想法,但我需要专业人士