首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编译优化在微信视频号的落地实践

编译通过但是发现运行问题反馈优化和LTO优化使用中发现的编译器bug编译速度的挑战我们协同业务团队解决了上述问题,以下将我们的实践经验分享出来。.../gcc/cc1': execv: Argument list too long微信的bazel build需要传入非常多的-isystem 参数到gcc中作为预编译头文件。...gcc driver在fork后invoke cc1plus的时候参数超过256K的时候就开始报参数过长的错误:“execv: Argument list too long” 但是系统的限制约为2M,单独的测试案例直接...invoke cc1plus也只会在2M之后报参数过长,需要分析看GCC在什么地方做了额外的设置导致提前报错。...但同时也可能高版本的编译器的检查选项更严格,有些以前没有暴露的错误被暴露出来,导致编译报错,有时是源代码本身的问题,也有些可能是编译器内部的问题,需要按照特定情况去解决。

43110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)

    降低版本 网上说cuda8.0不支持5.0以上的编译器,因此需要降级,把编译器版本降到4.9,但我看了CUDA8.0的安装手册《NVIDIA CUDA INSTALLATION GUIDE FOR LINUX...》,并没有发现这一条,《NVIDIA CUDA INSTALLATION GUIDE FOR LINUX》 在实际使用中,还是将GCC做了降级(PS,在安装时可以先不降级,看看是否会出问题),GCC降级方法如下...+ /usr/bin/g++ 30 sudo update-alternatives --set c++ /usr/bin/g++ 7 安装Bazel Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具...TensorFlow的编译是基于Bazel完成的。.../configure 9.3编译安装 bazel build -c opt //tensorflow/tools/pip_package:build_pip_package bazel build -c

    1.8K60

    【原创】记录我一次详细的TensorFlow源代码编译构建安装包总结

    于是我去Google搜索了下出现这个错误的原因,发现是因为我们服务器的CPU不支持AVX指令集导致的,而使用pip安装的TensorFlow需要依赖AVX指令集,为了确认我们的CPU是否真的不支持AVX...又不支持又想用咋办,后来经过网上查询了一下,我们可以自己使用TensorFlow的源代码来编译和构建一个TensorFlow的版本,这样的话就可以在不支持AVX指令集的机器上使用TensorFlow了。...在构建TensorFlow之前,我们要先做两件事: 下载TensorFlow的源码 下载和安装Bazel构建工具 在下载TensorFlow源码如果网速比较好的话,可以直接使用下面的命令从...下载和安装Bazel构建工具这里我要特别说一下,一般来讲,Bazel的安装方式有2种,一种是使用Bazelisk来安装,另外一种是手动安装,我使用的是后者。...我们发现,可以正常导入和使用,至此,整个TensorFlow源码的编译、构建以及安装环境完成。

    2.3K50

    记录我一次详细的TensorFlow源代码编译构建安装包总结

    最近公司给我们分配了2台虚拟机服务器用于强化学习训练,我们在虚拟环境中安装好了TensorFlow环境后,在import tensorflow时发现报了下面的错误: 于是我去Google搜索了下出现这个错误的原因...又不支持又想用咋办,后来经过网上查询了一下,我们可以自己使用TensorFlow的源代码来编译和构建一个TensorFlow的版本,这样的话就可以在不支持AVX指令集的机器上使用TensorFlow了。...在构建TensorFlow之前,我们要先做两件事: 下载TensorFlow的源码 下载和安装Bazel构建工具  在下载TensorFlow源码如果网速比较好的话,可以直接使用下面的命令从GitHub...下载和安装Bazel构建工具这里我要特别说一下,一般来讲,Bazel的安装方式有2种,一种是使用Bazelisk来安装,另外一种是手动安装,我使用的是后者。...keras_applications --no-depspip install keras_preprocessing --no-deps 然后我们使用gcc --version查看下我们的gcc

    1.4K10

    【C++】基础:代码编译与构建工具介绍

    知识介绍 C++ 编译与构建工具主要用于将 C++ 源代码转换为可执行程序。它们可以分为以下几类: 1.编译器: 将 C++ 源代码转换为机器代码。...常用的构建工具包括: Make:GNU 的构建工具,使用 Makefile 文件描述构建规则。 CMake:跨平台构建工具,使用 CMakeLists.txt 文件描述构建规则。...对于大型项目,建议使用构建工具自动化编译和链接过程。 如果需要跨平台编译,建议使用 CMake 等跨平台构建工具。 2....gcc可以将C语言源程序编译、链接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件(g++类似,是编译C++程序的)。...CMake可以生成Makefile或Visual Studio项目文件等,使开发人员可以在不同的平台和编译器上使用相同的配置文件进行构建。

    27210

    重构基于CMake的构建工具链

    但是即便是比较主流的 bazel 和 vcpkg,也无法满足我们的需求。 Bazel的问题 bazel 号称是原生支持分布式编译的构建系统。...而 bazel 构建的包,大多情况下由那个包本身去提供一些config,来实现不同的功能组,而编译的时候需要用户去设置使用哪些功能组。...在使用GCC的时候: gRPC 要 1.33 版本开始升级 了protobuf 到 1.34,这是第一个支持 bazel 4 的版本 原先依赖的 gRPC 1.28 仅支持 bazel 3。...所以最佳的方法是高版本的gcc使用最新的gRPC,但是 gcc 4.8 仅使用 gRPC 1.33 。...但是某些场景,比如自定义内部源、组件版本好控制和低版本编译器支持它也不是很香。 cmake-toolset 我原先项目管理使用的也是 cmake ,所以现在也是使用的 cmake 和 git。

    5.1K10

    手把手教你用 buildroot 构建根文件系统

    使用 busybox 构建文件系统,仅仅只是帮我们构建好了一些常用的命令和文件,像 lib 库、/etc 目录下的一些文件都需要自己手动创建,我们还要自己去移植一些第三方软件和库,比如 alsa、iperf...如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。...point strategy = NEON/VFPv4 -> ARM instruction set = ARM 2、配置 Toolchain 此配置项用于配置交叉编译工具链,设置为我们自己所使用的交叉编译器...一个典型的ARM Linux工具链包含arm-linux-gnueabihf-gcc(后续工具省略前缀)、strip、gcc、objdump、ld、gprof、nm、readelf、 addr2line...编译过程需要一定的额外内存,注意需要留好内存,否则会报错如下: g++: internal compiler error: Killed (program cc1plus) Please submit

    9.1K31

    AI运行环境的搭建

    为了使安装步骤对操作系统影响最小,安装时不使用root账户以及sudo权限,而是使用了一个普通账户makeuser进行操作(少数步骤需要使用root操作) 安装使用到的软件版本 gcc 4.9.4 python...因为这里编译的gcc高版本只用于编译tensorflow,并且不希望对系统原来的gcc产生影响。所以单独创建一个文件夹用于安装编译使用的环境软件。使用 --prefix 可以自定义安装路径。...编译,编译时出现了类似下面的问题后来尝试使用0.4.5未出现此问题 ERROR: /home/krishna/tensorflow/WORKSPACE:3:1: //external:io_bazel_rules_closure...,但安装后运行时会出现 _pywrap_tensorflow_internal.so: undefined symbol: clock_gettime 等类似链接符号错误) 将tensorflow.bzl....so 文件复制到/usr/local/lib下就可以使用了 cp bazel-bin/tensorflow/libtensorflow_cc.so /usr/local/lib/ #将需要的文件放入

    1.8K20

    用Tensorflow让神经网络自动创造音乐

    在这里(https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html)安装python、bazel和Tensorflow 注...:我在安装bazel的时候一直出现“Segmentation fault:11”的错误,google了很多解决方法后发现是gcc的安装版本问题,如果你是mac用户,下载了xcode,并不代表你安装了gcc...如果安装失败了,用下载好的bazel再输入“bazel install gcc”,下载完检测一下gcc -v,如果依然是"Segmentation fault:11"错误,恭喜你,遇到和我一样的错误了,...恭喜你,又犯了和我同样的错误:)这个错误是说测试文件太大了,不能一下子全部测试(我16g的内存还不够吗 = =),所以你可以跟我一样手动测试,以其中一个举例: 1 >>>bazel-bin/magenta...如果你有GPU或者愿意等个几天跑程序,可以把迭代次数设置的大一点,等算法收敛后再进行测试。模型训练的好坏直接决定最后得到的音乐的好听程度,所以最好等算法收敛后在进行测试。

    1.3K90

    NeilBlog

    1.编译和链接 像VS,Delphi这种集成开发环境(IDE),他们一般把编译和链接的过程一步完成,将这种编译和链接合并到一起的过程叫做构建,构建的英文名是Build,所以你可以看到VS的编译就是这个词...2.中间的过程 比如一个hello world的小程序,编译过程也是很复杂的,可以分为4步:预处理,编译,汇编,链接 2.1预处理 对C语言来说,比如源文件是.c,那他就会把.c以及相关的头文件,全部被预编译器...保留所有的#pragma编译器指令,因为编译器需要使用他们 经过这些处理后的.i文件不包含宏定义,因为已经被展开了,并且包含的文件也已经被插入到.i文件里 2.2编译 就是把预处理完的文件,经过一系列词法分析...,语法分析,语义分析以及优化后生成的相应的汇编代码文件,所以本质上生成的是汇编代码,现代gcc把预编译和编译两个步骤合并为一个,使用一个叫cc1的程序完成这两个步骤,执行完后,会生成汇编文件,hello.s...文件 对C语言的话,是cc1 C++是cc1plus Objective-C是cc1obj fortran是f771 Java是jc1 实际上gcc这个命令只是这些后台程序的包装,它会根据不同的参数要求去调用预编译编译程序

    6910

    Tensorflow c++ 实践及各种坑

    众所周知,python在开发效率、易用性上有着巨大的优势,但作为一个解释性语言,在性能方面还是存在比较大的缺陷,在各类AI服务化过程中,采用python作为模型快速构建工具,使用高级语言(如C++,java...)作为服务化程序实现是大势所趋。...实现方案 对于tensorflow c++库的使用,有两种方法: (1) 最佳方式当然是直接用C++构建graph,但是当前c++tensorflow库并不像python api那样full-featured..., GCC版本 >= 4.8.5 安装组件: protobuf 3.3.0 bazel 0.5.0 python 2.7 java8 机器要求: 4GB内存 a....c++ api加载,报以上错误,采用tensorflow python加载模型报同样错: 原因是模型中用到了BatchNorm,修复方式如上面c中给出的方案 (4) 模型加载及运行 构建输入输出 模型输入输出主要就是构造输入输出矩阵

    7K40

    TensorFlow 的 c ++ 实践及各种坑!

    众所周知,python在开发效率、易用性上有着巨大的优势,但作为一个解释性语言,在性能方面还是存在比较大的缺陷,在各类AI服务化过程中,采用python作为模型快速构建工具,使用高级语言(如C++,java...)作为服务化程序实现是大势所趋。...实现方案 对于tensorflow c++库的使用,有两种方法: (1) 最佳方式当然是直接用C++构建graph,但是当前c++tensorflow库并不像python api那样full-featured...版本, GCC版本 >= 4.8.5 安装组件: protobuf 3.3.0 bazel 0.5.0 python 2.7 java8 机器要求: 4GB内存 a....c++ api加载,报以上错误,采用tensorflow python加载模型报同样错: [1511168812774_4812_1511168890001.jpg] 原因是模型中用到了BatchNorm

    6.7K20
    领券