This is a specialized toolchain that uses an old Debian with a new Clang that can cross compile to any x86_64 microarchitecture. It's intended to build Linux binaries that only require the following ABIs:
Which are available on at least the following Linux platforms:
On Debian 8 (Jessie) Clang 6.0 can be installed as follows:
cat >>/etc/apt/sources.list <<'EOF' deb http://apt.llvm.org/jessie/ llvm-toolchain-jessie main deb-src http://apt.llvm.org/jessie/ llvm-toolchain-jessie main EOF wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - apt-key fingerprint |& grep '6084 F3CF 814B 57C1 CF12 EFD5 15CF 4D18 AF4F 7421' apt-get update apt-get install clang lld
This toolchain can compile TensorFlow in 2m30s on a 96-core Skylake GCE VM if the following .bazelrc settings are added:
startup --host_jvm_args=-Xmx30G startup --host_jvm_args=-Xms30G startup --host_jvm_args=-XX:MaxNewSize=3g startup --host_jvm_args=-XX:-UseAdaptiveSizePolicy startup --host_jvm_args=-XX:+UseConcMarkSweepGC startup --host_jvm_args=-XX:TargetSurvivorRatio=70 startup --host_jvm_args=-XX:SurvivorRatio=6 startup --host_jvm_args=-XX:+UseCMSInitiatingOccupancyOnly startup --host_jvm_args=-XX:CMSFullGCsBeforeCompaction=1 startup --host_jvm_args=-XX:CMSInitiatingOccupancyFraction=75 build --jobs=100 build --local_resources=200000,100,100 build --crosstool_top=@local_config_clang6//clang6 build --noexperimental_check_output_files build --nostamp build --config=opt build --noexperimental_check_output_files build --copt=-march=native build --host_copt=-march=native