Building opensuse with link-time optimizations. Jan Hubička and Martin Liška SUSElabs

Size: px
Start display at page:

Download "Building opensuse with link-time optimizations. Jan Hubička and Martin Liška SUSElabs"

Transcription

1 Building opensuse with link-time optimizations Jan Hubička and Martin Liška SUSElabs

2 Outlilne What is link-time optimization? Link-time optimization and GCC Benchmarks Can we build opensuse with link-time optimization by default?

3 What is link-time optimization?

4 Per-file compilation File1.c GCC File1.o File2.c GCC File2.o File3.c GCC File3.o ld / gold a.out File4.c GCC File4.o

5 Link-time optimization File1.c GCC File1.o IL ld / gold a.out File2.c GCC File2.o IL File3.c GCC File3.o IL LTO plug-in link-time compiler File4.c GCC File4.o IL

6 Benefits of LTO Symbol promotion (from linker s resolution data most symbols become static ) Cross-module inlining, constant propagation Aggressive unreachable code removal Profile propagation EH optimization (propagation of nothrow ) Identical code folding Optimized code layout and more :)

7 Problems of LTO Whole toolchain has to be restructured Slow compile-edit cycle Harder bugreports (often whole program needed to reproduce issue) Not 100% transparent to user, but in most cases all one needs to do is to add -flto

8 Link-time optimization and GCC

9 Modernizing GCC (LTO perspective) 1999 (GCC 2.95): Function-at-a-time 2001 (GCC 3.0): New inliner (first high-level opt. in gcc) 2004 (GCC 3.4): Unit-at-a-time; intermodule compilation for C; Inter-procedural optimization framework 2005 (GCC 4.0): New SSA optimization framework 2006 (GCC 4.1): Inter-procedural optimizations: profile guided inlining, pure/const discovery, mod/ref, inter-procedural constant propagation, --fwhole-program combine 2008 (GCC 4.4): Inter-procedural optimization on SSA; early optimization and inlining (GCC 4.5): Basic LTO framework (5 years in development) 2011 (GCC 4.6): WHOPR (parallel link-time optimization); Firefox builds

10 Link-time optimization File1.c GCC File1.o IL ld / gold a.out File2.c GCC File2.o IL File3.c GCC File3.o IL LTO plug-in link-time compiler File4.c GCC File4.o IL

11 Parallelized Link-time optimization (WHOPR) File1.c GCC File1.o IL ld / gold a.out File2.c GCC File2.o IL File3.c GCC File3.o IL LTO plguin Local opt. File4.c GCC File4.o IL Whole Program Analysis Local opt. Local opt

12 Modernizing GCC (LTO perspective) 2012 (GCC 4.7.0): Memory use optimizations, new inliner heuristics, new inter-procedural constant propagation with clonning 2013 (GCC 4.8.0): symbol table; propagation of values passed through aggregates 2014 (GCC 4.9.0): slim LTO objects by default; on demand loading of functions; devirtualization pass; feedback directed code layout 2015 (GCC 5): Identical Code Folding; COMDAT optimization; One Definition Rule for C++; alignment propagation; correct command line options handling with LTO 2016 (GCC 6): Linker-plugin now detects type of output binary. C&Fortran type merging. Better alias anaysis 2017 (GCC 7): Inter-procedural value range propagaion; bitwise propagation 2018 (GCC 8): Early debug info. Profile representation rewrite. Function splitting now by default. Reworked runtime estimation; Malloc attribute propagation

13 GCC optimization pipeline Compile time Parser IL generation Early opts: Early Inliner Constant prop. Forwward prop. Jump threading Scalar repl. of aggr. Alias analysis Redundancy ellim. Dead store ellim. Dead code ellim. Tail recursion Switch conversion pure/const/nothrow EH optimization Profile guessing IP analysis streaming out Link-time serial Streaming Symbol in & symbols, type types streaming and declarations in + merging & link Inter-procedural (whole program) Opts: Dead symbol ellim. Symbol promotion profile analysis Identical code folding devirtualization Constant propagation const/destr merging Inlining pure/const/nothrow mod/ref comdat Partitioning streaming out Link-time parallel Stream in and apply transformations High level opts: Constant prop. Complette unroll Forward prop. Alias analysis Return slot opt. Redudancy ellim. Jump threading Dead code ellim. Conditional store ellim. Copy prop. If combine Tail recursion Copy loop headers Scalar repl. of aggr. Dead store ellim. Dead code ellim. Reassociation Sincos, bswap opt. Loop invariant motion Partial redundancy ellim. Loop splitting Unroll and jam Loop dsitribution Loop interchange... Low level opts: Common subexpression ellim. Forward propagation Copy propagation Partial Redundancy Ellim. Code hoisting Copy propagation Store motion If conversion Loop invariant motion Loop unrolling Doloop optimization Web construction Copy propagation Common subexpression ellim. Dead store ellim. Instruction combine Function partitioning Instruction splitting Live range shrinking Scheduling Register allocation Global common subexpr. Ellim. Shrink wrapping Stack adjustment opt. Register renaming Constant prop. Code reordering Scheduling X87 register stack Code/data alignment Machine dependent reorg. Code output

14 Benchmarks

15 SPECint 2006 performance (relative to GCC 6) generic native GCC 7 -O2 GCC 8 -O2

16 SPECint 2006 performance (relative to GCC 6) generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast

17 SPECint 2006 performance (relative GCC -Ofast relative to to GCC 6 -O26) GCC 6 GCC 7 GCC mcf 458.sjeng 445.gobmk 403.gcc 462.libquantum 473.astar 464.h264ref 471.omnetpp 401.bzip2 483.xalancbmk 400.perlbench 456.hmmer Geomean generic native 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast

18 SPECint 2006 performance (relative to GCC 6) generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast

19 SPECint 2006 performance (relative to GCC 6) generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast

20 0 SPECint 2006 performance (relative to GCC 6) Clang & ICC -Ofast relative to GCC perlbench 401.bzip2 403.gcc 429.mcf 445.gobmk 456.hmmer 458.sjeng 462.libquantum 464.h264ref 471.omnetpp 473.astar 483.xalancbmk Geomean clang/flang 6 ICC generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast

21 SPECint 2006 performance (relative to GCC 6) generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast

22 SPECint 2006 performance (relative to GCC 6) generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto

23 SPECint 2006 performance (relative to GCC 6) GCC -Ofast -flto relative to -Ofast perlbench bzip gcc 429.mcf 445.gobmk 456.hmmer 458.sjeng 462.libquantum 464.h264ref 471.omnetpp 473.astar 483.xalancbmk Geomean generic native GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto

24 SPECint 2006 performance (relative to GCC 6) generic native 2 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto

25 SPECint 2006 performance (relative to GCC 6) generic native 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto clang/fllang 6 -Ofast -flto ICC 18 -Ofast -flto

26 SPECint 2006 performance (relative to GCC 6) Clang/flang 6 and ICC 18 relative to GCC 8 (-O2 -flto) clang/flang 6 ICC perlbench 401.bzip2 GCC 7 -O2 GCC 8 -O2 403.gcc 429.mcf 445.gobmk 456.hmmer GCC 6 -Ofast 464.h264ref GCC 8 -Ofast 458.sjeng 462.libquantum 471.omnetpp GCC 7 -Ofast 473.astar 483.xalancbmk Geomean clang/flang 6 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto clang/fllang 6 -Ofast -flto ICC 18 -Ofast -flto generic native

27 SPECint 2006 performance (relative to GCC 6) generic native 0 GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast clang/flang 6 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto clang/fllang 6 -Ofast -flto ICC 18 -Ofast -flto

28 Profile feedback & LTO works well together 25 Performance relative to GCC 8 -Ofast LTO FDO FDO+LTO perlbench bzip2 403.gcc 429.mcf 445.gobmk 458.sjeng 462.libquantum 464.h264ref 471.omnetpp 473.astar 483.xalancbmk Geomean Hmmer benchmark has problems; was excluded. To build with profile feedback often you can use:./configure ; CFLAGS= -O2 -fprofile-generate make ; make check ; make clean ; CFLAGS= -O2 -fprofile-use make

29 SPECint 2006 code size Non-LTO LTO GCC 7 -O2 GCC 8 -O2 GCC 7 -Ofast GCC 8 -OfastGCC 8 -Ofast + FDO Clang 6 -O2 Clang 6 -Ofast Icc 18 -Ofast

30 SPECfp 2006 performance (relative to GCC 6) generic native GCC 7 -O2 GCC 8 -O2 GCC 6 -Ofast GCC 7 -Ofast GCC 8 -Ofast ICC 18 -Ofast GCC 8 -O2 -flto GCC 8 -Ofast lto ICC 18 -Ofast -flto

31 Firefox performance summary 35 Firefox performance relative to non-lto build static Profile feedback responsiveness tp5o dromaeo dom Displaylist mutate tap paint speedometer a11yr svgr_opacity tp5o ARES6 stylebench tart dromaeo css tsvgx startup time

32 Firefox performance dromaeo DOM

33 Firefox performance tp5o page responsiveness

34 Firefox binary size gcc6 -O3 -flto + FDO gcc7 -O3 -flto + FDO gcc8 -O3 -flto + FDO gcc8 -O3 gcc8 -O2 gcc8 -O3 + FDO gcc8 -Os gcc8 -O3 -flto gcc8 -O2 -flto gcc8 -O3 -flto + FDO gcc8 -Os -flto clang6 -O3 clang6 -O3 + FDO clang6 -O2 clang6 -Os clang6 -Oz EH data relocations text clang6 -O3 -flto=thin clang6 -O3 -flto clang6 O3 -flto + FDO clang6 -O3 -flto=thin + FDO clang6 -O2 -flto clang6 -Oz -flto=thin clang6 -Oz -flto

35 Firefox binary size gcc6 -O3 -flto + FDO gcc7 -O3 -flto + FDO gcc8 -O3 -flto + FDO gcc8 -O3 gcc8 -O2 gcc8 -O3 + FDO gcc8 -Os gcc8 -O3 -flto gcc8 -O2 -flto gcc8 -O3 -flto + FDO gcc8 -Os -flto clang6 -O3 clang6 -O3 + FDO clang6 -O2 clang6 -Os clang6 -Oz EH data relocations text clang6 -O3 -flto=thin clang6 -O3 -flto clang6 O3 -flto + FDO clang6 -O3 -flto=thin + FDO clang6 -O2 -flto clang6 -Oz -flto=thin clang6 -Oz -flto

36 Firefox binary size gcc6 -O3 -flto + FDO gcc7 -O3 -flto + FDO gcc8 -O3 -flto + FDO gcc8 -O3 gcc8 -O2 gcc8 -O3 + FDO gcc8 -Os gcc8 -O3 -flto gcc8 -O2 -flto gcc8 -O3 -flto + FDO gcc8 -Os -flto clang6 -O3 clang6 -O3 + FDO clang6 -O2 clang6 -Os clang6 -Oz EH data relocations text clang6 -O3 -flto=thin clang6 -O3 -flto clang6 O3 -flto + FDO clang6 -O3 -flto=thin + FDO clang6 -O2 -flto clang6 -Oz -flto=thin clang6 -Oz -flto

37 Firefox binary size gcc6 -O3 -flto + FDO gcc7 -O3 -flto + FDO gcc8 -O3 -flto + FDO gcc8 -O3 gcc8 -O2 gcc8 -O3 + FDO gcc8 -Os gcc8 -O3 -flto gcc8 -O2 -flto gcc8 -O3 -flto + FDO gcc8 -Os -flto clang6 -O3 clang6 -O3 + FDO clang6 -O2 clang6 -Os clang6 -Oz EH data relocations text clang6 -O3 -flto=thin clang6 -O3 -flto clang6 O3 -flto + FDO clang6 -O3 -flto=thin + FDO clang6 -O2 -flto clang6 -Oz -flto=thin clang6 -Oz -flto

38 Firefox binary size gcc6 -O3 -flto + FDO gcc7 -O3 -flto + FDO gcc8 -O3 -flto + FDO gcc8 -O3 gcc8 -O2 gcc8 -O3 + FDO gcc8 -Os gcc8 -O3 -flto gcc8 -O2 -flto gcc8 -O3 -flto + FDO gcc8 -Os -flto clang6 -O3 clang6 -O3 + FDO clang6 -O2 clang6 -Os clang6 -Oz EH data relocations text clang6 -O3 -flto=thin clang6 -O3 -flto clang6 O3 -flto + FDO clang6 -O3 -flto=thin + FDO clang6 -O2 -flto clang6 -Oz -flto=thin clang6 -Oz -flto

39 Summary LTO now works and scale for large applications (Firefox, Libreoffice, ) Important size optimization especially for large C++ programs Often important performance optimization especially when combined with profile feedback Space for future improvements (both on GCC side and re-optimization of programs to LTO model)

40 LTO in opensuse Factory

41 LTO in opensuse Factory A new staging project (opensuse:factory:staging:n) Setting: Optflags: * -flto ~80 packages failed (out of all ~2300) Branch all failing packages and disable LTO LTO Factory (w/ some disabled packages) can run openqa testsuite (with a small fallout)

42 Package statistics Total ELF files in distribution: ~6700 Reduction: 1839 MB to 1736MB (-5.6%) libmergedlo.so: reduction 10MB (-16%) Biggest reduction: mysql_upgrade (-92%) Innochecksum (-94%) mbstream (-94%)

43 Issues Argyllcms: lto1: fatal error: multiple prevailing defs for 'xcal_read_icc': LD PR: GCC LTO miscompilation: in shared libraries: asm (".symver New symver function attribute must be added (GCC 9.1.0)

44 Issues (cont.) static libraries (*.la): e2fsprogs, btrfsprogs, Fat LTO objects must be used (-ffat-lto-objects) LTO elf sections should be stripped OBS sanitizer should be extended LTO mode can combine both LTO objects and assembly objects

45 Issues (cont. 2) LTO warnings (-Wodr,...): ltrace: error: type of 'filter_matches_symbol' does not match original declaration [-Werror=lto-type-mismatch] gdb: error: type 'struct ipa_sym_addresses' violates the C++ One Definition Rule [-Werror=odr] mpir: weak configure script that scans *.o file as a blob weak support for LTO debug info in dwz tool Maybe higher memory constaints for selected packages

46 Issues (cont. 3) Usage of top-level assembler ( Example of syscall.cc in Chromium project: asm volatile(".text\n" ".align 16, 0x90\n" ".type "SyscallAsm:.cfi_startproc\n" Error:nacl_helper.ltrans1.ltrans.o: In function `playground2::sandboxsyscall(int, long, long, long, long, long, long)': nacl_helper.ltrans1.o:(.text+0x4503): undefined reference to `SyscallAsm'

47 Histogram of text segment sizes ,000,000 10,000,000 15,000,000 20,000,000 25,000,000 30,000,000 35,000,000 40,000,000

48 Conclusion LTO looks mature enough to be used by default Do we want it for opensuse Factory? For the future, can we offer it also for SLE?

49 License This slide deck is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license. It can be shared and adapted for any purpose (even commercially) as long as Attribution is given and any derivative work is distributed under the same license. Details can be found at General Disclaimer This document is not to be construed as a promise by any participating organisation to develop, deliver, or market a product. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. opensuse makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. The development, release, and timing of features or functionality described for opensuse products remains at the sole discretion of opensuse. Further, opensuse reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All opensuse marks referenced in this presentation are trademarks or registered trademarks of SUSE LLC, in the United States and other countries. All third-party trademarks are the property of their respective owners. Credits Template Richard Brown rbrown@opensuse.org Design & Inspiration opensuse Design Team

openqa features capabilities bugs Ondrej Holecek /aaannz/

openqa features capabilities bugs Ondrej Holecek /aaannz/ openqa features capabilities bugs Ondrej Holecek /aaannz/ oholecek@suse.com What makes openqa User focused 3 Watching the screen User focused 4 Watching the screen Keyboard and mouse input User focused

More information

openqa making QA interesting since 2013 Ondrej Holecek /aaannz/

openqa making QA interesting since 2013 Ondrej Holecek /aaannz/ openqa making QA interesting since 2013 Ondrej Holecek /aaannz/ oholecek@suse.com opensuse storytime opensuse walking packaging stuff build check release time? manual QA 3 release/ milestone opensuse Leap-ing

More information

Collecting data from IoT devices using Sigfox network

Collecting data from IoT devices using Sigfox network Collecting data from IoT devices using Sigfox network Making data collection easier Jan Krupa Operations Engineer JKrupa@suse.com About me IoT networks Sigfox network What is Sigfox Sigfox employs

More information

openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager

openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager mawerner@suse.com Testing is HARD - Everyone who has built any software, ever. 2 Upstreams Upstream projects are moving

More information

Zdeněk Kubala Senior QA

Zdeněk Kubala Senior QA (Kernel) Isolation PV, HVM, OS-V technologies in Linux Introduction and description of the isolation diferences between HM, PV and OS-level virt. technologies. Zdeněk Kubala Senior QA Engineer zkubala@suse.com

More information

A Fast Instruction Set Simulator for RISC-V

A Fast Instruction Set Simulator for RISC-V A Fast Instruction Set Simulator for RISC-V Maxim.Maslov@esperantotech.com Vadim.Gimpelson@esperantotech.com Nikita.Voronov@esperantotech.com Dave.Ditzel@esperantotech.com Esperanto Technologies, Inc.

More information

Super-optimizing LLVM IR

Super-optimizing LLVM IR Super-optimizing LLVM IR Duncan Sands DeepBlueCapital / CNRS Thanks to Google for sponsorship Super optimization Optimization Improve code Super optimization Optimization Improve code Super-optimization

More information

openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager

openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager mawerner@suse.com Testing is HARD - Everyone who has built any software, ever. Upstreams Upstream projects are moving

More information

Compiler Optimization

Compiler Optimization Compiler Optimization The compiler translates programs written in a high-level language to assembly language code Assembly language code is translated to object code by an assembler Object code modules

More information

AMD S X86 OPEN64 COMPILER. Michael Lai AMD

AMD S X86 OPEN64 COMPILER. Michael Lai AMD AMD S X86 OPEN64 COMPILER Michael Lai AMD CONTENTS Brief History AMD and Open64 Compiler Overview Major Components of Compiler Important Optimizations Recent Releases Performance Applications and Libraries

More information

Updating the Compiler?

Updating the Compiler? Updating the Compiler? Take Advantage of The New Development Toolchain Andreas Jaeger Product Manager aj@suse.com Programming Languages C C++ Fortran And Go 2 Why new compiler? Faster applications Support

More information

Pushing The Limits Of Linux On ARM

Pushing The Limits Of Linux On ARM Pushing The Limits Of Linux On ARM LinuxCon Japan 2015 Andreas Färber afaerber@suse.de Overview Definition of Linux on ARM Transitioning from Embedded to Servers & Desktops Pushing the limits in general

More information

96Boards Enablement for opensuse

96Boards Enablement for opensuse 96Boards Enablement for opensuse Progress Report and Remaining Issues Andreas Färber Expert Virtualization andreas.faerber@suse.com The Presenter and ARM Background in virtualization software (QEMU) Involved

More information

LLVM Performance Improvements and Headroom

LLVM Performance Improvements and Headroom LLVM Performance Improvements and Headroom Gerolf Hoflehner Apple LLVM Developers Meeting 2015 San Jose, CA Messages Tuning and focused local optimizations Advancing optimization technology Getting inspired

More information

Optimizing large applications

Optimizing large applications Optimizing large applications Honza Hubička SuSE ČR s.r.o Martin Liška Charles University SUSElabs conf, 2013 Outline Massive performance regression from switching to gcc 4.5 Hi, Just wanted to give a

More information

ThinLTO. A Fine-Grained Demand-Driven Infrastructure. Teresa Johnson, Xinliang David Li

ThinLTO. A Fine-Grained Demand-Driven Infrastructure. Teresa Johnson, Xinliang David Li ThinLTO A Fine-Grained Demand-Driven Infrastructure Teresa Johnson, Xinliang David Li tejohnson,davidxl@google.com Outline CMO Background ThinLTO Motivation and Overview ThinLTO Details Build System Integration

More information

Samba and Ceph. Release the Kraken! David Disseldorp

Samba and Ceph. Release the Kraken! David Disseldorp Samba and Ceph Release the Kraken! David Disseldorp ddiss@samba.org Agenda Ceph Overview State of Samba Integration Performance Outlook Ceph Distributed storage system Scalable Fault tolerant Performant

More information

The CephFS Gateways Samba and NFS-Ganesha. David Disseldorp Supriti Singh

The CephFS Gateways Samba and NFS-Ganesha. David Disseldorp Supriti Singh The CephFS Gateways Samba and NFS-Ganesha David Disseldorp ddiss@samba.org Supriti Singh supriti.singh@suse.com Agenda Why Exporting CephFS over Samba and NFS-Ganesha What Architecture & Features Samba

More information

Open Enterprise & Open Community

Open Enterprise & Open Community Open Enterprise & Open Community Working Together Richard Brown opensuse Chairman SUSE Linux GmbH Andrew Wafaa Principal Engineer, Open Source ARM Ltd Stephan Kulow opensuse Release Manager SUSE Linux

More information

From GIT to a custom OS image in a few click OS image made easy

From GIT to a custom OS image in a few click OS image made easy From GIT to a custom OS image in a few click OS image made easy Frédéric Crozat Senior Software Engineer SUSE fcrozat@suse.com Goals Create ISO live image to ease testing Automate image creation as much

More information

Lightweight Memory Tracing

Lightweight Memory Tracing Lightweight Memory Tracing Mathias Payer*, Enrico Kravina, Thomas Gross Department of Computer Science ETH Zürich, Switzerland * now at UC Berkeley Memory Tracing via Memlets Execute code (memlets) for

More information

Clang - the C, C++ Compiler

Clang - the C, C++ Compiler Clang - the C, C++ Compiler Contents Clang - the C, C++ Compiler o SYNOPSIS o DESCRIPTION o OPTIONS SYNOPSIS clang [options] filename... DESCRIPTION clang is a C, C++, and Objective-C compiler which encompasses

More information

Building a Runnable Program and Code Improvement. Dario Marasco, Greg Klepic, Tess DiStefano

Building a Runnable Program and Code Improvement. Dario Marasco, Greg Klepic, Tess DiStefano Building a Runnable Program and Code Improvement Dario Marasco, Greg Klepic, Tess DiStefano Building a Runnable Program Review Front end code Source code analysis Syntax tree Back end code Target code

More information

Evaluation of RISC-V RTL with FPGA-Accelerated Simulation

Evaluation of RISC-V RTL with FPGA-Accelerated Simulation Evaluation of RISC-V RTL with FPGA-Accelerated Simulation Donggyu Kim, Christopher Celio, David Biancolin, Jonathan Bachrach, Krste Asanovic CARRV 2017 10/14/2017 Evaluation Methodologies For Computer

More information

The opensuse project. Motivation, Goals, and Opportunities. Sonja Krause-Harder Michael Löffler. March 6, 2006

The opensuse project. Motivation, Goals, and Opportunities. Sonja Krause-Harder Michael Löffler. March 6, 2006 The opensuse project Motivation, Goals, and Opportunities Sonja Krause-Harder Michael Löffler March 6, 2006 What is opensuse / SUSE Linux? opensuse is a community project (not a distribution) wiki, mailinglist,

More information

Essentials. Johannes Meixner. about Disaster Recovery (abbreviated DR) with Relax-and-Recover (abbreviated ReaR)

Essentials. Johannes Meixner. about Disaster Recovery (abbreviated DR) with Relax-and-Recover (abbreviated ReaR) Essentials about Disaster Recovery (abbreviated DR) with Relax-and-Recover (abbreviated ReaR) Johannes Meixner Why DR with ReaR matters Relax-and-Recover is currently used in particular

More information

Coverage-guided Fuzzing of Individual Functions Without Source Code

Coverage-guided Fuzzing of Individual Functions Without Source Code Coverage-guided Fuzzing of Individual Functions Without Source Code Alessandro Di Federico Politecnico di Milano October 25, 2018 1 Index Coverage-guided fuzzing An overview of rev.ng Experimental results

More information

LLVM performance optimization for z Systems

LLVM performance optimization for z Systems LLVM performance optimization for z Systems Dr. Ulrich Weigand Senior Technical Staff Member GNU/Linux Compilers & Toolchain Date: Mar 27, 2017 2017 IBM Corporation Agenda LLVM on z Systems Performance

More information

Cloud in a box. Fully automated installation of SUSE Openstack Cloud 5 on Dell VRTX. Lars Everbrand. Software Developer

Cloud in a box. Fully automated installation of SUSE Openstack Cloud 5 on Dell VRTX. Lars Everbrand. Software Developer Cloud in a box Fully automated installation of SUSE Openstack Cloud 5 on Dell VRTX Lars Everbrand Software Developer lars.everbrand@ericsson.com 2 From 3 To Introduction Disclaimer All views expressed

More information

CS377P Programming for Performance Single Thread Performance Out-of-order Superscalar Pipelines

CS377P Programming for Performance Single Thread Performance Out-of-order Superscalar Pipelines CS377P Programming for Performance Single Thread Performance Out-of-order Superscalar Pipelines Sreepathi Pai UTCS September 14, 2015 Outline 1 Introduction 2 Out-of-order Scheduling 3 The Intel Haswell

More information

Microarchitecture Overview. Performance

Microarchitecture Overview. Performance Microarchitecture Overview Prof. Scott Rixner Duncan Hall 3028 rixner@rice.edu January 15, 2007 Performance 4 Make operations faster Process improvements Circuit improvements Use more transistors to make

More information

Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world.

Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world. Under the Compiler's Hood: Supercharge Your PLAYSTATION 3 (PS3 ) Code. Understanding your compiler is the key to success in the gaming world. Supercharge your PS3 game code Part 1: Compiler internals.

More information

Kruiser: Semi-synchronized Nonblocking Concurrent Kernel Heap Buffer Overflow Monitoring

Kruiser: Semi-synchronized Nonblocking Concurrent Kernel Heap Buffer Overflow Monitoring NDSS 2012 Kruiser: Semi-synchronized Nonblocking Concurrent Kernel Heap Buffer Overflow Monitoring Donghai Tian 1,2, Qiang Zeng 2, Dinghao Wu 2, Peng Liu 2 and Changzhen Hu 1 1 Beijing Institute of Technology

More information

How To Make Databases on SUSE Linux Enterprise Server Highly Available Mike Friesenegger

How To Make Databases on SUSE Linux Enterprise Server Highly Available Mike Friesenegger How To Make Databases on SUSE Linux Enterprise Server Highly Available Mike Friesenegger SUSE Sales Engineer mikef@suse.com Agenda Clarify the term "Availability" What is High Availability Minimize a Database

More information

Novell SLES 10/Xen. Roadmap Presentation. Clyde R. Griffin Manager, Xen Virtualization Novell, Inc. cgriffin at novell.com.

Novell SLES 10/Xen. Roadmap Presentation. Clyde R. Griffin Manager, Xen Virtualization Novell, Inc. cgriffin at novell.com. Novell SLES 10/Xen Roadmap Presentation Clyde R. Griffin Manager, Xen Virtualization Novell, Inc. cgriffin at novell.com September 8, 2006 SUSE Linux Enterprise Server 10 SLES 10 w/xen 3.0.2 is now available

More information

Measuring the User Debugging Experience. Greg Bedwell Sony Interactive Entertainment

Measuring the User Debugging Experience. Greg Bedwell Sony Interactive Entertainment Measuring the User Debugging Experience Greg Bedwell Sony Interactive Entertainment introducing DExTer introducing Debugging Experience Tester introducing Debugging Experience Tester (currently in internal

More information

Introduction to Compilers

Introduction to Compilers Introduction to Compilers Compilers are language translators input: program in one language output: equivalent program in another language Introduction to Compilers Two types Compilers offline Data Program

More information

INSTRUCTION LEVEL PARALLELISM

INSTRUCTION LEVEL PARALLELISM INSTRUCTION LEVEL PARALLELISM Slides by: Pedro Tomás Additional reading: Computer Architecture: A Quantitative Approach, 5th edition, Chapter 2 and Appendix H, John L. Hennessy and David A. Patterson,

More information

Welcome to SUSE Expert Days 2017 Service Delivery with DevOps

Welcome to SUSE Expert Days 2017 Service Delivery with DevOps Welcome to SUSE Expert Days 2017 Service Delivery with DevOps Changing Application Service Delivery with DevOps 2 Key Components for DevOps Success Good habits and people Development done now Automate

More information

UCB CS61C : Machine Structures

UCB CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 36 Performance 2010-04-23 Lecturer SOE Dan Garcia How fast is your computer? Every 6 months (Nov/June), the fastest supercomputers in

More information

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program. Language Translation Compilation vs. interpretation Compilation diagram Step 1: compile program compiler Compiled program Step 2: run input Compiled program output Language Translation compilation is translation

More information

Code Merge. Flow Analysis. bookkeeping

Code Merge. Flow Analysis. bookkeeping Historic Compilers Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit permission to make copies of these materials

More information

Baikal-T1 Microprocessor Performance Tests

Baikal-T1 Microprocessor Performance Tests Baikal-T1 Microprocessor Performance Tests Revision list Revision Date Author Description 1.0 15.03.2017 Initial version 1.1 08.08.2017 Added SPEC CPU2006 Int, iperf results Revision list... 1 1. List

More information

Overview of a Compiler

Overview of a Compiler Overview of a Compiler Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit permission to make copies of

More information

Khem Raj Embedded Linux Conference 2014, San Jose, CA

Khem Raj Embedded Linux Conference 2014, San Jose, CA Khem Raj khem@himvis.com Embedded Linux Conference 2014, San Jose, CA } Introduction } What is GCC } General Optimizations } GCC specific Optimizations } Embedded Processor specific Optimizations } What

More information

Introduction to Software Defined Infrastructure SUSE Linux Enterprise 15

Introduction to Software Defined Infrastructure SUSE Linux Enterprise 15 Introduction to Software Defined Infrastructure SUSE Linux Enterprise 15 Matthias G. Eckermann Director Product Management SUSE Linux Enterprise Helsinki, 2018-03-08 SUSE Software-defined Infrastructure

More information

IA-64 Compiler Technology

IA-64 Compiler Technology IA-64 Compiler Technology David Sehr, Jay Bharadwaj, Jim Pierce, Priti Shrivastav (speaker), Carole Dulong Microcomputer Software Lab Page-1 Introduction IA-32 compiler optimizations Profile Guidance (PGOPTI)

More information

Overview of a Compiler

Overview of a Compiler Overview of a Compiler Copyright 2017, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit permission to make copies of

More information

Introduction. No Optimization. Basic Optimizations. Normal Optimizations. Advanced Optimizations. Inter-Procedural Optimizations

Introduction. No Optimization. Basic Optimizations. Normal Optimizations. Advanced Optimizations. Inter-Procedural Optimizations Introduction Optimization options control compile time optimizations to generate an application with code that executes more quickly. Absoft Fortran 90/95 is an advanced optimizing compiler. Various optimizers

More information

The SGI Pro64 Compiler Infrastructure - A Tutorial

The SGI Pro64 Compiler Infrastructure - A Tutorial The SGI Pro64 Compiler Infrastructure - A Tutorial Guang R. Gao (U of Delaware) J. Dehnert (SGI) J. N. Amaral (U of Alberta) R. Towle (SGI) Acknowledgement The SGI Compiler Development Teams The MIPSpro/Pro64

More information

Overview of a Compiler

Overview of a Compiler High-level View of a Compiler Overview of a Compiler Compiler Copyright 2010, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have

More information

Resource-Conscious Scheduling for Energy Efficiency on Multicore Processors

Resource-Conscious Scheduling for Energy Efficiency on Multicore Processors Resource-Conscious Scheduling for Energy Efficiency on Andreas Merkel, Jan Stoess, Frank Bellosa System Architecture Group KIT The cooperation of Forschungszentrum Karlsruhe GmbH and Universität Karlsruhe

More information

Introduction to Machine-Independent Optimizations - 1

Introduction to Machine-Independent Optimizations - 1 Introduction to Machine-Independent Optimizations - 1 Department of Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of

More information

Packaging made easy. How the opensuse build service makes building packages easy for developers who don't care about packaging

Packaging made easy. How the opensuse build service makes building packages easy for developers who don't care about packaging Packaging made easy How the opensuse build service makes building packages easy for developers who don't care about packaging Cornelius Schumacher Motivation Packaging: Creating installable

More information

15-411: LLVM. Jan Hoffmann. Substantial portions courtesy of Deby Katz

15-411: LLVM. Jan Hoffmann. Substantial portions courtesy of Deby Katz 15-411: LLVM Jan Hoffmann Substantial portions courtesy of Deby Katz and Gennady Pekhimenko, Olatunji Ruwase,Chris Lattner, Vikram Adve, and David Koes Carnegie What is LLVM? A collection of modular and

More information

The View from 35,000 Feet

The View from 35,000 Feet The View from 35,000 Feet This lecture is taken directly from the Engineering a Compiler web site with only minor adaptations for EECS 6083 at University of Cincinnati Copyright 2003, Keith D. Cooper,

More information

M2 Instruction Set Architecture

M2 Instruction Set Architecture M2 Instruction Set Architecture Module Outline Addressing modes. Instruction classes. MIPS-I ISA. Translating and starting a program. High level languages, Assembly languages and object code. Subroutine

More information

Lecture 20 CIS 341: COMPILERS

Lecture 20 CIS 341: COMPILERS Lecture 20 CIS 341: COMPILERS Announcements HW5: OAT v. 2.0 records, function pointers, type checking, array-bounds checks, etc. Due: TOMORROW Wednesday, April 11 th Zdancewic CIS 341: Compilers 2 A high-level

More information

CSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation

CSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation CSE 501: Compiler Construction Course outline Main focus: program analysis and transformation how to represent programs? how to analyze programs? what to analyze? how to transform programs? what transformations

More information

Flang - the Fortran Compiler SYNOPSIS DESCRIPTION. Contents. Flang the Fortran Compiler. flang [options] filename...

Flang - the Fortran Compiler SYNOPSIS DESCRIPTION. Contents. Flang the Fortran Compiler. flang [options] filename... Flang - the Fortran Compiler Contents Flang the Fortran Compiler o SYNOPSIS o DESCRIPTION o OPTIONS SYNOPSIS flang [options] filename... DESCRIPTION Flang is the Fortran front-end designed for integration

More information

Link 3. Symbols. Young W. Lim Mon. Young W. Lim Link 3. Symbols Mon 1 / 42

Link 3. Symbols. Young W. Lim Mon. Young W. Lim Link 3. Symbols Mon 1 / 42 Link 3. Symbols Young W. Lim 2017-09-11 Mon Young W. Lim Link 3. Symbols 2017-09-11 Mon 1 / 42 Outline 1 Linking - 3. Symbols Based on Symbols Symbol Tables Symbol Table Examples main.o s symbol table

More information

BOV89296 SUSE Best Practices Sharing Expertise, Experience and Knowledge. Christoph Wickert Technical Writer SUSE /

BOV89296 SUSE Best Practices Sharing Expertise, Experience and Knowledge. Christoph Wickert Technical Writer SUSE / BOV89296 SUSE Best Practices Sharing Expertise, Experience and Knowledge Christoph Wickert Technical Writer SUSE / cwickert@suse.com AGENDA The SUSE Documentation Team SUSE Best Practices Open Source Tools

More information

What run-time services could help scientific programming?

What run-time services could help scientific programming? 1 What run-time services could help scientific programming? Stephen Kell stephen.kell@cl.cam.ac.uk Computer Laboratory University of Cambridge Contrariwise... 2 Some difficulties of software performance!

More information

Improving Cache Performance by Exploi7ng Read- Write Disparity. Samira Khan, Alaa R. Alameldeen, Chris Wilkerson, Onur Mutlu, and Daniel A.

Improving Cache Performance by Exploi7ng Read- Write Disparity. Samira Khan, Alaa R. Alameldeen, Chris Wilkerson, Onur Mutlu, and Daniel A. Improving Cache Performance by Exploi7ng Read- Write Disparity Samira Khan, Alaa R. Alameldeen, Chris Wilkerson, Onur Mutlu, and Daniel A. Jiménez Summary Read misses are more cri?cal than write misses

More information

Control Flow Analysis

Control Flow Analysis Control Flow Analysis Last time Undergraduate compilers in a day Today Assignment 0 due Control-flow analysis Building basic blocks Building control-flow graphs Loops January 28, 2015 Control Flow Analysis

More information

Compiler Passes. Optimization. The Role of the Optimizer. Optimizations. The Optimizer (or Middle End) Traditional Three-pass Compiler

Compiler Passes. Optimization. The Role of the Optimizer. Optimizations. The Optimizer (or Middle End) Traditional Three-pass Compiler Compiler Passes Analysis of input program (front-end) character stream Lexical Analysis Synthesis of output program (back-end) Intermediate Code Generation Optimization Before and after generating machine

More information

GAS Tutorial - 7. Directives (3)

GAS Tutorial - 7. Directives (3) GAS Tutorial - 7. Directives (3) Young W. Lim 2016-07-13 Thr Young W. Lim GAS Tutorial - 7. Directives (3) 2016-07-13 Thr 1 / 48 Outline 1 Section Related Directivqes Young W. Lim GAS Tutorial - 7. Directives

More information

Call Paths for Pin Tools

Call Paths for Pin Tools , Xu Liu, and John Mellor-Crummey Department of Computer Science Rice University CGO'14, Orlando, FL February 17, 2014 What is a Call Path? main() A() B() Foo() { x = *ptr;} Chain of function calls that

More information

UCB CS61C : Machine Structures

UCB CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c UCB CS61C : Machine Structures Lecture 38 Performance 2008-04-30 Lecturer SOE Dan Garcia How fast is your computer? Every 6 months (Nov/June), the fastest supercomputers in

More information

ATOS introduction ST/Linaro Collaboration Context

ATOS introduction ST/Linaro Collaboration Context ATOS introduction ST/Linaro Collaboration Context Presenter: Christian Bertin Development team: Rémi Duraffort, Christophe Guillon, François de Ferrière, Hervé Knochel, Antoine Moynault Consumer Product

More information

Best practices with SUSE Linux Enterprise Server Starter System and extentions Ihno Krumreich

Best practices with SUSE Linux Enterprise Server Starter System and extentions Ihno Krumreich Best practices with SUSE Linux Enterprise Server Starter System and extentions Ihno Krumreich Project Manager for Linux on System z Ihno@SUSE.de SHARE Atlanta 2012 Session 10728 Reasoning Requirements

More information

Architecture of Parallel Computer Systems - Performance Benchmarking -

Architecture of Parallel Computer Systems - Performance Benchmarking - Architecture of Parallel Computer Systems - Performance Benchmarking - SoSe 18 L.079.05810 www.uni-paderborn.de/pc2 J. Simon - Architecture of Parallel Computer Systems SoSe 2018 < 1 > Definition of Benchmark

More information

Tour of common optimizations

Tour of common optimizations Tour of common optimizations Simple example foo(z) { x := 3 + 6; y := x 5 return z * y } Simple example foo(z) { x := 3 + 6; y := x 5; return z * y } x:=9; Applying Constant Folding Simple example foo(z)

More information

Exploring History with Hawk

Exploring History with Hawk Exploring History with Hawk An Introduction to Cluster Forensics Kristoffer Grönlund High Availability Software Developer kgronlund@suse.com This tutorial High Availability in 5 minutes Introduction to

More information

lld: A Fast, Simple and Portable Linker Rui Ueyama LLVM Developers' Meeting 2017

lld: A Fast, Simple and Portable Linker Rui Ueyama LLVM Developers' Meeting 2017 lld: A Fast, Simple and Portable Linker Rui Ueyama LLVM Developers' Meeting 2017 Talk overview 1. Implementation status 2. Design goals 3. Comparisons with other linkers 4. Concurrency

More information

DragonEgg - the Fortran compiler

DragonEgg - the Fortran compiler DragonEgg - the Fortran compiler Contents DragonEgg - the Fortran compiler o SYNOPSIS o DESCRIPTION o BUILD DRAGONEGG PLUGIN o USAGE OF DRAGONEGG PLUGIN TO COMPILE FORTRAN PROGRAM o LLVM Optimizations

More information

Docker Networking In OpenStack What you need to know now. Fawad Khaliq

Docker Networking In OpenStack What you need to know now. Fawad Khaliq Docker Networking In OpenStack What you need to know now Fawad Khaliq About Me OpenStack Community Member Developer in Neutron Maintainer of PLUMgrid Neutron Plugin (networking-plumgrid) How to contact

More information

Architectural Supports to Protect OS Kernels from Code-Injection Attacks

Architectural Supports to Protect OS Kernels from Code-Injection Attacks Architectural Supports to Protect OS Kernels from Code-Injection Attacks 2016-06-18 Hyungon Moon, Jinyong Lee, Dongil Hwang, Seonhwa Jung, Jiwon Seo and Yunheung Paek Seoul National University 1 Why to

More information

USC 227 Office hours: 3-4 Monday and Wednesday CS553 Lecture 1 Introduction 4

USC 227 Office hours: 3-4 Monday and Wednesday  CS553 Lecture 1 Introduction 4 CS553 Compiler Construction Instructor: URL: Michelle Strout mstrout@cs.colostate.edu USC 227 Office hours: 3-4 Monday and Wednesday http://www.cs.colostate.edu/~cs553 CS553 Lecture 1 Introduction 3 Plan

More information

Optimization Prof. James L. Frankel Harvard University

Optimization Prof. James L. Frankel Harvard University Optimization Prof. James L. Frankel Harvard University Version of 4:24 PM 1-May-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. Reasons to Optimize Reduce execution time Reduce memory

More information

SUSE Linux Enterprise Kernel Back to the Future

SUSE Linux Enterprise Kernel Back to the Future SUSE Enterprise Kernel Back to the Future Olaf Kirch Director Server Engineering okir@suse.com Agenda SUSE Enterprise Service Packs What makes a SUSE Enterprise kernel an enterprise kernel? Bringing you

More information

Goals of Program Optimization (1 of 2)

Goals of Program Optimization (1 of 2) Goals of Program Optimization (1 of 2) Goal: Improve program performance within some constraints Ask Three Key Questions for Every Optimization 1. Is it legal? 2. Is it profitable? 3. Is it compile-time

More information

Gold. Ian Lance Taylor Google. What? Why? How? Gold. Performance. Features. Future. Ian Lance Taylor Google. Who? June 17, 2008

Gold. Ian Lance Taylor Google. What? Why? How? Gold. Performance. Features. Future. Ian Lance Taylor Google. Who? June 17, 2008 June 17, 2008 What is gold? gold is a new linker. gold is now part of the GNU binutils (if you configure with --enable-gold, gold is built instead of GNU ld). gold only supports ELF, which is used by all

More information

CS 701. Class Meets. Instructor. Teaching Assistant. Key Dates. Charles N. Fischer. Fall Tuesdays & Thursdays, 11:00 12: Engineering Hall

CS 701. Class Meets. Instructor. Teaching Assistant. Key Dates. Charles N. Fischer. Fall Tuesdays & Thursdays, 11:00 12: Engineering Hall CS 701 Charles N. Fischer Class Meets Tuesdays & Thursdays, 11:00 12:15 2321 Engineering Hall Fall 2003 Instructor http://www.cs.wisc.edu/~fischer/cs703.html Charles N. Fischer 5397 Computer Sciences Telephone:

More information

LLVM & LLVM Bitcode Introduction

LLVM & LLVM Bitcode Introduction LLVM & LLVM Bitcode Introduction What is LLVM? (1/2) LLVM (Low Level Virtual Machine) is a compiler infrastructure Written by C++ & STL History The LLVM project started in 2000 at the University of Illinois

More information

Incremental Linking with Gold

Incremental Linking with Gold Incremental Linking with Gold Linux Foundation Collaboration Summit April 5, 2012 Cary Coutant This work is licensed under the Creative Commons Attribution-NoDerivs 3.0 Unported License. To view a copy

More information

SUSE Manager Roadmap OS Lifecycle Management from the Datacenter to the Cloud

SUSE Manager Roadmap OS Lifecycle Management from the Datacenter to the Cloud SUSE Manager Roadmap OS Lifecycle Management from the Datacenter to the Cloud Joachim Werner Senior Product Manager joe@suse.com Jeff Lindholm Sales Engineer Jlindholm@suse.com SUSE and Linux Workloads

More information

2012 LLVM Euro - Michael Spencer. lld. Friday, April 13, The LLVM Linker

2012 LLVM Euro - Michael Spencer. lld. Friday, April 13, The LLVM Linker lld Friday, April 13, 2012 The LLVM Linker What is lld? A system linker Produce final libraries and executables, no other tools or runtime required Understands platform ABI What is lld? A system linker

More information

COMS W4115 Programming Languages and Translators Lecture 21: Code Optimization April 15, 2013

COMS W4115 Programming Languages and Translators Lecture 21: Code Optimization April 15, 2013 1 COMS W4115 Programming Languages and Translators Lecture 21: Code Optimization April 15, 2013 Lecture Outline 1. Code optimization strategies 2. Peephole optimization 3. Common subexpression elimination

More information

OpenPrefetch. (in-progress)

OpenPrefetch. (in-progress) OpenPrefetch Let There Be Industry-Competitive Prefetching in RISC-V Processors (in-progress) Bowen Huang, Zihao Yu, Zhigang Liu, Chuanqi Zhang, Sa Wang, Yungang Bao Institute of Computing Technology(ICT),

More information

AN4464 Application note

AN4464 Application note Application note Porting a Green Hills SW to SPC5Studio Introduction SPC5Studio provides a comprehensive framework to design, build and deploy embedded applications for SPC56 Power Architecture 32-bit

More information

Linking. Explain what ELF format is. Explain what an executable is and how it got that way. With huge thanks to Steve Chong for his notes from CS61.

Linking. Explain what ELF format is. Explain what an executable is and how it got that way. With huge thanks to Steve Chong for his notes from CS61. Linking Topics How do you transform a collection of object files into an executable? How is an executable structured? Why is an executable structured as it is? Learning Objectives: Explain what ELF format

More information

Enhanced Operating System Security Through Efficient and Fine-grained Address Space Randomization

Enhanced Operating System Security Through Efficient and Fine-grained Address Space Randomization Enhanced Operating System Security Through Efficient and Fine-grained Address Space Randomization Anton Kuijsten Andrew S. Tanenbaum Vrije Universiteit Amsterdam 21st USENIX Security Symposium Bellevue,

More information

Using GCC as a Research Compiler

Using GCC as a Research Compiler Using GCC as a Research Compiler Diego Novillo dnovillo@redhat.com Computer Engineering Seminar Series North Carolina State University October 25, 2004 Introduction GCC is a popular compiler, freely available

More information

Define Your Future with SUSE

Define Your Future with SUSE Define Your Future with SUSE SUSE Linux Enterprise and more Bo Jin Sales Engineer bo.jin@suse.com SUSE auf einen Blick 25+ +8% Jahre Erfahrung in der Open-SourceEntwicklung SUSE-Wachstum vgl. mit anderen

More information

NightWatch: Integrating Transparent Cache Pollution Control into Dynamic Memory Allocation Systems

NightWatch: Integrating Transparent Cache Pollution Control into Dynamic Memory Allocation Systems NightWatch: Integrating Transparent Cache Pollution Control into Dynamic Memory Allocation Systems Rentong Guo 1, Xiaofei Liao 1, Hai Jin 1, Jianhui Yue 2, Guang Tan 3 1 Huazhong University of Science

More information

The GNU Compiler Collection

The GNU Compiler Collection The GNU Compiler Collection Diego Novillo dnovillo@redhat.com Gelato Federation Meeting Porto Alegre, Rio Grande do Sul, Brazil October 3, 2005 Introduction GCC is a popular compiler, freely available

More information

CS 426 Fall Machine Problem 4. Machine Problem 4. CS 426 Compiler Construction Fall Semester 2017

CS 426 Fall Machine Problem 4. Machine Problem 4. CS 426 Compiler Construction Fall Semester 2017 CS 426 Fall 2017 1 Machine Problem 4 Machine Problem 4 CS 426 Compiler Construction Fall Semester 2017 Handed out: November 16, 2017. Due: December 7, 2017, 5:00 p.m. This assignment deals with implementing

More information

Using SAT for solving package dependencies. Michael Schröder Novell, Inc.

Using SAT for solving package dependencies. Michael Schröder Novell, Inc. Using SAT for solving package dependencies Michael Schröder Novell, Inc. What was wrong with the old solver Much too slow with bug repositories solving could take several minutes Complex code, many special

More information

SUSE Manager in Large Scale 17220

SUSE Manager in Large Scale 17220 SUSE Manager in Large Scale 17220 Don Vosburg Alejandro Bonilla Sales Engineer dvosburg@suse.com Sales Engineer abonilla@suse.com Geeko comes to SHARE Agenda What is SUSE Manager? What can I do with it

More information