github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/toolchains/clang6/README.md (about)

     1  # TensorFlow Bazel Clang
     2  
     3  This is a specialized toolchain that uses an old Debian with a new Clang that
     4  can cross compile to any x86_64 microarchitecture. It's intended to build Linux
     5  binaries that only require the following ABIs:
     6  
     7  - GLIBC_2.18
     8  - CXXABI_1.3.7 (GCC 4.8.3)
     9  - GCC_4.2.0
    10  
    11  Which are available on at least the following Linux platforms:
    12  
    13  - Ubuntu 14+
    14  - CentOS 7+
    15  - Debian 8+
    16  - SuSE 13.2+
    17  - Mint 17.3+
    18  - Manjaro 0.8.11
    19  
    20  # System Install
    21  
    22  On Debian 8 (Jessie) Clang 6.0 can be installed as follows:
    23  
    24  ```sh
    25  cat >>/etc/apt/sources.list <<'EOF'
    26  deb http://apt.llvm.org/jessie/ llvm-toolchain-jessie main
    27  deb-src http://apt.llvm.org/jessie/ llvm-toolchain-jessie main
    28  EOF
    29  wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
    30  apt-key fingerprint |& grep '6084 F3CF 814B 57C1 CF12  EFD5 15CF 4D18 AF4F 7421'
    31  apt-get update
    32  apt-get install clang lld
    33  ```
    34  
    35  # Bazel Configuration
    36  
    37  This toolchain can compile TensorFlow in 2m30s on a 96-core Skylake GCE VM if
    38  the following `.bazelrc` settings are added:
    39  
    40  ```
    41  startup --host_jvm_args=-Xmx30G
    42  startup --host_jvm_args=-Xms30G
    43  startup --host_jvm_args=-XX:MaxNewSize=3g
    44  startup --host_jvm_args=-XX:-UseAdaptiveSizePolicy
    45  startup --host_jvm_args=-XX:+UseConcMarkSweepGC
    46  startup --host_jvm_args=-XX:TargetSurvivorRatio=70
    47  startup --host_jvm_args=-XX:SurvivorRatio=6
    48  startup --host_jvm_args=-XX:+UseCMSInitiatingOccupancyOnly
    49  startup --host_jvm_args=-XX:CMSFullGCsBeforeCompaction=1
    50  startup --host_jvm_args=-XX:CMSInitiatingOccupancyFraction=75
    51  
    52  build --jobs=100
    53  build --local_resources=200000,100,100
    54  build --crosstool_top=@local_config_clang6//clang6
    55  build --noexperimental_check_output_files
    56  build --nostamp
    57  build --config=opt
    58  build --noexperimental_check_output_files
    59  build --copt=-march=native
    60  build --host_copt=-march=native
    61  ```
    62  
    63  # x86_64 Microarchitectures
    64  
    65  ## Intel CPU Line
    66  
    67  - 2003 P6 M           SSE SSE2
    68  - 2004 prescott       SSE3 SSSE3 (-march=prescott)
    69  - 2006 core           X64 SSE4.1 (only on 45nm variety) (-march=core2)
    70  - 2008 nehalem        SSE4.2 VT-x VT-d (-march=nehalem)
    71  - 2010 westmere       CLMUL AES (-march=westmere)
    72  - 2012 sandybridge    AVX TXT (-march=sandybridge)
    73  - 2012 ivybridge      F16C MOVBE (-march=ivybridge)
    74  - 2013 haswell        AVX2 TSX BMI2 FMA (-march=haswell)
    75  - 2014 broadwell      RDSEED ADCX PREFETCHW (-march=broadwell - works on trusty gcc4.9)
    76  - 2015 skylake        SGX ADX MPX AVX-512[xeon-only] (-march=skylake / -march=skylake-avx512 - needs gcc7)
    77  - 2018 cannonlake     AVX-512 SHA (-march=cannonlake - needs clang5)
    78  
    79  ## Intel Low Power CPU Line
    80  
    81  - 2013 silvermont     SSE4.1 SSE4.2 VT-x (-march=silvermont)
    82  - 2016 goldmont       SHA (-march=goldmont - needs clang5)
    83  
    84  ## AMD CPU Line
    85  
    86  - 2003 k8             SSE SSE2 (-march=k8)
    87  - 2005 k8 (Venus)     SSE3 (-march=k8-sse3)
    88  - 2008 barcelona      SSE4a?! (-march=barcelona)
    89  - 2011 bulldozer      SSE4.1 SSE4.2 CLMUL AVX AES FMA4?! (-march=bdver1)
    90  - 2011 piledriver     FMA (-march=bdver2)
    91  - 2015 excavator      AVX2 BMI2 MOVBE (-march=bdver4)
    92  
    93  ## Google Compute Engine Supported CPUs
    94  
    95  - 2012 sandybridge 2.6gHz -march=sandybridge
    96  - 2012 ivybridge   2.5gHz -march=ivybridge
    97  - 2013 haswell     2.3gHz -march=haswell
    98  - 2014 broadwell   2.2gHz -march=broadwell
    99  - 2015 skylake     2.0gHz -march=skylake-avx512
   100  
   101  See: <https://cloud.google.com/compute/docs/cpu-platforms>