Openmp 4.5 Validation and Verification Testsuite

Total Page:16

File Type:pdf, Size:1020Kb

Openmp 4.5 Validation and Verification Testsuite OPENMP 4.5 VALIDATION AND VERIFICATION TESTSUITE DESIGN AND IMPLEMENTATION FOR OFFLOADING FEATURES by Jose Manuel Monsalve Diaz A Master Thesis submitted to the Faculty of the University of Delaware in partial fulfillment of the requirements for the degree of Master of Science in Electrical and Computer Engineering Winter 2020 c 2020 Jose Manuel Monsalve Diaz All Rights Reserved OPENMP 4.5 VALIDATION AND VERIFICATION TESTSUITE DESIGN AND IMPLEMENTATION FOR OFFLOADING FEATURES by Jose Manuel Monsalve Diaz Approved: Sunita Chandrasekaran, Ph.D. Professor in charge of Master Thesis on behalf of the Advisory Committee Approved: Guang R. Gao, Ph.D. Co-Professor in charge of Master Thesis on behalf of the Advisory Com- mittee Approved: Kenneth E. Barner, Ph.D. Chair of the Department of Electrical and Computer Engineering Approved: Levi Thompson, Ph.D. Dean of the College of Engineering Approved: Douglas J. Doren, Ph.D. Interim Vice Provost for Graduate and Professional Education and Dean of the Graduate College ACKNOWLEDGMENTS This material is based upon work supported by the U.S. Department of Energy, Office of Science, the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration under contract number DE-AC05-00OR22725. This project is a joint effort between several laboratories of the Department of Energy, and the University of Delaware. In particular, Oak Ridge National Laboratory and Argonne National Laboratory are both large contributors in this project. This project has been an effort of many people that are acknowledge in our website for their contributions. While my contribution has been considerable, there is also a large group of people involved in this project whose contributions are invaluable. In particular Dr. Swaroop Pophale (ORNL), Dr. Oscar Hernandez(ORNL), Dr. David E. Bernholdt(ORNL), Dr. Hal Finkel(ANL), and Professor Sunita Chandrasekaran (UD) are major leaders of this project which is part of the SOLLVE initiative of the Exascale Computing Project. Additionally, Sergio Pino MS, as well as undergraduate students Joshua Davis, Kyle Friedline and Thomas Huber have heavily contributed to this project, and they have created many of the tests presented in this work. Special recognition to other external collaborators such as many of the members of the OpenMP ARB, application developers that have submitted tests and ideas, as well as vendors that have contributed with hardware donations. In particular, special recognition to AMD and NVIDIA for their donations of GPGPU accelerators which we have used to run this testsuite. Also, special thanks to all the vendors that have provided us with feedback through the use of this software. iii To my parents, my brother, my wife and all my family. They are who I would like to be one day. iv TABLE OF CONTENTS LIST OF TABLES :::::::::::::::::::::::::::::::: viii LIST OF FIGURES ::::::::::::::::::::::::::::::: ix LIST OF LISTINGS :::::::::::::::::::::::::::::: xi ABSTRACT ::::::::::::::::::::::::::::::::::: xiii Chapter 1 INTRODUCTION :::::::::::::::::::::::::::::: 1 2 OBJECTIVES AND PROBLEM FORMULATION ::::::::: 8 3 BACKGROUND AND MOTIVATION ::::::::::::::::: 9 3.1 A brief history and overview of OpenMP :::::::::::::::: 9 3.2 OpenMP Accelerators Offloading support :::::::::::::::: 12 3.3 Implementation of OpenMP offloading support in compilers ::::: 15 3.3.1 Challenges for compilers ::::::::::::::::::::: 16 3.3.2 Translating code for GPGPU device offloading ::::::::: 17 3.3.2.1 Dynamic Parallelism :::::::::::::::::: 19 3.3.2.2 If-Master coordination ::::::::::::::::: 21 3.3.2.3 Executor/Inspector ::::::::::::::::::: 22 3.4 Compilers supporting OpenMP Offloading ::::::::::::::: 25 3.4.1 GNU GCC: :::::::::::::::::::::::::::: 25 3.4.2 LLVM: ::::::::::::::::::::::::::::::: 26 3.4.3 Other Vendors and Devices ::::::::::::::::::: 27 4 RELATED WORK ::::::::::::::::::::::::::::: 29 v 5 TEST SUITE INFRASTRUCTURE DESIGN :::::::::::: 31 5.1 Test design and review process :::::::::::::::::::::: 32 5.2 Infrastructure ::::::::::::::::::::::::::::::: 34 5.2.1 Development environment and website ::::::::::::: 35 5.2.2 Folder Structure :::::::::::::::::::::::::: 36 5.2.3 Tests structure, Header file and Fortran Module :::::::: 36 5.2.4 Makefile :::::::::::::::::::::::::::::: 39 5.2.4.1 Rules for Makefile ::::::::::::::::::: 39 5.2.4.2 Options for Makefile :::::::::::::::::: 40 5.2.4.2.1 CC, CXX, and FC: compiler selection :: 40 5.2.4.2.2 OMP VERSION :::::::::::::: 41 5.2.4.2.3 SOURCES ::::::::::::::::: 42 5.2.4.2.4 TESTS TO RUN ::::::::::::: 43 5.2.4.2.5 VERBOSE and VERBOSE TESTS ::: 43 5.2.4.2.6 LOG and LOG ALL :::::::::::: 44 5.2.4.2.7 LOG DIR and BIN DIR ::::::::: 44 5.2.4.2.8 SYSTEM, MODULE LOAD and ADD BATCH SCHED :::::::::: 45 5.2.4.2.9 NO OFFLOADING :::::::::::: 45 5.2.4.2.10 REPORT ONLINE TAG and REPORT ONLINE APPEND :::::: 46 5.3 System customization ::::::::::::::::::::::::::: 46 5.4 Results, Logs and Reports :::::::::::::::::::::::: 47 5.4.1 Raw format :::::::::::::::::::::::::::: 48 5.4.2 Summary Report ::::::::::::::::::::::::: 48 5.4.3 JSON format ::::::::::::::::::::::::::: 49 5.4.4 CSV Format :::::::::::::::::::::::::::: 50 5.4.5 HTML format ::::::::::::::::::::::::::: 50 5.4.6 Online Report ::::::::::::::::::::::::::: 52 5.5 Online Result report tool ::::::::::::::::::::::::: 53 5.5.1 The create tag operation :::::::::::::::::::: 55 5.5.2 The obtain result operation :::::::::::::::::: 55 5.5.3 The delete result operation :::::::::::::::::: 56 vi 5.5.4 The update result operation :::::::::::::::::: 56 5.5.5 The append result operation :::::::::::::::::: 57 5.6 Measuring overhead in current OpenMP offloading implementations : 57 6 TEST EXAMPLES ::::::::::::::::::::::::::::: 61 6.1 Offloading to multiple devices :::::::::::::::::::::: 61 6.2 Handling task dependencies ::::::::::::::::::::::: 63 6.3 Mapping C++ features :::::::::::::::::::::::::: 65 6.4 Mapping linked-list to device ::::::::::::::::::::::: 69 6.5 Matrix Multiplication ::::::::::::::::::::::::::: 71 7 FINDINGS AND RESULTS OF THIS WORK :::::::::::: 73 7.1 Test bed configurations :::::::::::::::::::::::::: 73 7.2 Specification findings ::::::::::::::::::::::::::: 75 7.3 Testsuite results :::::::::::::::::::::::::::::: 77 7.3.1 Summary of used systems, compilers and compiler versions :: 78 7.3.2 Programming language evolution :::::::::::::::: 78 7.3.3 Compiler version results, errors and evolution ::::::::: 80 7.3.3.1 AOMP ::::::::::::::::::::::::: 80 7.3.3.2 IBM XL ::::::::::::::::::::::::: 82 7.3.3.3 GNU GCC ::::::::::::::::::::::: 84 7.3.3.4 LLVM/Clang :::::::::::::::::::::: 86 7.4 Overhead ::::::::::::::::::::::::::::::::: 87 7.4.1 Offloading on Summit :::::::::::::::::::::: 88 7.4.2 Offloading on Fatnode :::::::::::::::::::::: 91 7.4.3 Combined Constructs ::::::::::::::::::::::: 95 7.4.4 The effect of number of teams and number of threads ::::: 96 8 CONCLUSIONS AND FUTURE WORK ::::::::::::::: 99 8.1 The future of OpenMP :::::::::::::::::::::::::: 101 REFERENCES :::::::::::::::::::::::::::::::::: 104 vii LIST OF TABLES 5.1 List of operations supported by the OMPVV header files for test formatting :::::::::::::::::::::::::::::::: 38 5.2 Set of rules available in the Makefile ::::::::::::::::: 40 5.3 List of supported out-of-the-box compilers with the used flags for each 42 7.1 List of used compiler vendors, languages and their versions ::::: 78 7.2 List of compilers per system, compiler versions and used flags ::: 79 viii LIST OF FIGURES 1.1 Top 500 List: number of systems reported in the list using accelerators (left axis), and evolution of the average number of cores per sockets (yellow line and right axis) :::::::::::::::: 1 1.2 Overlapping the evolution of OpenMP and OpenACC directive base programming models specification releases with figure 1.1 :::::: 3 1.3 Counting elements per OpenMP Specification Documents. Number of pages in the PDF, Number of Constructs and Directives defined, Number of API functions defined, and number of Environmental Variables defined. :::::::::::::::::::::::::::: 6 3.1 OpenMP 4.0+ Execution model. ::::::::::::::::::: 14 5.1 Workflow for developing the Validation and Verification Suite ::: 34 5.2 Project folder tree structure. :::::::::::::::::::::: 36 5.3 Snapshot of the HTML report generated by the testsuite :::::: 51 5.4 Diagram of the Online Report Infrastructure ::::::::::::: 54 6.1 Task graph created by Code 6.2 :::::::::::::::::::: 64 6.2 UML Diagram of the example in listings 6.3, 6.4, and 6.5 :::::: 66 7.1 Testbed systems. The different execution environments used in this study :::::::::::::::::::::::::::::::::: 74 7.2 Percentage of Pass and Fail in all results per programming language 80 7.3 AOMP Version evolution :::::::::::::::::::::::: 81 7.4 IBM XL Version evolution ::::::::::::::::::::::: 82 ix 7.5 GNU GCC Version Evolution ::::::::::::::::::::: 84 7.6 LLVM/Clang Version evolution. YTK Corresponds to the CORAL Clang Compiler. :::::::::::::::::::::::::::: 86 7.7 Overhead measurement for offloading directives on Fatnode cluster 89 7.8 Overhead measurement for offloading directives on Summit ::::: 92 7.9 Comparing Combined directives vs. Nesting of those directives OpenMP directives ::::::::::::::::::::::::::: 93 7.10 target teams distribute varying the number of teams. Effects of the number of teams on the overhead of the runtime on multiple compilers and systems ::::::::::::::::::::::::: 94 7.11 Effects of the number of teams and number of threads on the overhead of the runtime on multiple compilers and systems
Recommended publications
  • Release 0.11 Todd Gamblin
    Spack Documentation Release 0.11 Todd Gamblin Feb 07, 2018 Basics 1 Feature Overview 3 1.1 Simple package installation.......................................3 1.2 Custom versions & configurations....................................3 1.3 Customize dependencies.........................................4 1.4 Non-destructive installs.........................................4 1.5 Packages can peacefully coexist.....................................4 1.6 Creating packages is easy........................................4 2 Getting Started 7 2.1 Prerequisites...............................................7 2.2 Installation................................................7 2.3 Compiler configuration..........................................9 2.4 Vendor-Specific Compiler Configuration................................ 13 2.5 System Packages............................................. 16 2.6 Utilities Configuration.......................................... 18 2.7 GPG Signing............................................... 20 2.8 Spack on Cray.............................................. 21 3 Basic Usage 25 3.1 Listing available packages........................................ 25 3.2 Installing and uninstalling........................................ 42 3.3 Seeing installed packages........................................ 44 3.4 Specs & dependencies.......................................... 46 3.5 Virtual dependencies........................................... 50 3.6 Extensions & Python support...................................... 53 3.7 Filesystem requirements........................................
    [Show full text]
  • Compiler Information
    Compiler Information ©1995, Intel Corporation Intro • Compilers for Intel Architecture processors have been continuously improved over the past 2-3 years • Application performance has been improved > 25% during this period of time • All improvements have come from processor independent compiler techniques and enhancements Use a “new generation” compiler as a part of your APP development With on-going compiler improvements, there is tremendous benefit to be realized by using the latest compilers in your application development. These can provide performance enhancements for your applications when running on an Intel486™, Pentium®, or P6 processor. Compiler Program Status Versions of Compilers* w/Optimizations including Pentium® Processor Awareness Gen’l Availability – Absoft: Ftn, C for UNIX Now (4/93) – Borland: C/C++ for NT, Win32s, DOS32 Now (Q4’93) – IBM: C/C++ for OS/2 Now (6/93) – Lahey Ftn90 for DOS32 Now – Liant: Ftn, C for UNIX Now – MetaWare: C/C++ for UNIX Now (6/93) – Microsoft: C/C++ for NT, Win32s Now (8/93) – Microsoft: Fortran for NT, Win32s Now (11/93) – SCO: C for SCO UNIX Now (3/93) – SunPro: C/C++, Ftn for Solaris Now (5/93) – USL: C for UNIX SVR4 Now (Q4’92) – WATCOM: C/C++, Ftn for NT, Win32s, Now (6/93) DOS32, OS/2 Most optimizing compilers have been available since Summer ‘93! *other brands and names are property of their respective owners. Above is a quick list of compilers optimized for the Intel Architecture in general (with Pentium® processor awareness built into the code scheduling) over the last 2 years. The first formal release of Proton (Intel’s reference compiler whose purpose is to offer new compiler technology to the industry) was in March ‘93.
    [Show full text]
  • Supported and Compatible Compilers – Release 2020A
    Supported and Compatible Compilers – Release 2020a A number of MathWorks products or product features require that you have a third-party compiler installed on your system. The tables below outline the compilers that are supported by various MathWorks products. These compilers are provided by a number of vendors and are available under a variety of commercial, academic, or open source terms; visit the providers’ websites for further information. Please see Polyspace documentation for the list of compilers that Polyspace supports in the current release. See Supported Interfaces to Other Languages for information about using MATLAB with other programming languages. Windows MinGW is a supported C/C++ compiler which is available free of charge. Download MinGW now. Note: • MinGW will be updated to version 8.3 in a future release. mathworks.com MATLAB Product Family – Release 2020a Fixed Point HDL HDL Audio ROS MATLAB MATLAB Coder GPU Coder SimBiology Designer Coder Verifier Toolbox Toolbox For MEX-file For all features For all features For For For For DPI For For ROS 2 compilation, accelerated accelerated accelerated and TLM validating and custom Compiler loadlibrary, computation computation testbench component generating messages and external simulation generation audio and code usage of plugins generation MATLAB Engine and MAT-file APIs MinGW 6.3 C/C++ (Distributor: mingw-w64) Download Now Available at no charge Microsoft Visual C++ Update 3 Update 5 Update 5 Update 5 Update 5 2019 product family Microsoft Visual C++ 2017 product family11
    [Show full text]
  • The Definitive Guide to GCC
    The Definitive Guide to GCC KURT WALL AND WILLIAM VON HAGEN APress Media, LLC The Definitive Guide to GCC Copyright ©2004 by Kurt Wall and William von Hagen Originally published by Apress in 2004 All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN 978-1-59059-109-3 ISBN 978-1-4302-0704-7 (eBook) DOI 10.1007/978-1-4302-0704-7 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Technical Reviewer: Gene Sally Editorial Board: Steve Anglin, Dan Appleman, Gary Cornell, James Cox, Tony Davis, John Franklin, Chris Mills, Steven Rycroft, Dominic Shakeshaft, Julian Skinner, Martin Streicher, Jim Sumser, Karen Watterson, Gavin Wray, John Zukowski Assistant Publisher: Grace Wong Project Manager: Sofia Marchant Copy Editor: Ami Knox Production Manager: Kari Brooks Production Editor: Janet Vaii Proofreader: Elizabeth Berry Compositor and Artist: Kinetic Publishing Services, llC Indexer: Valerie Perry Cover Designer: Kurt Krames Manufacturing Manager: Tom Debolski The information in this book is distributed on an "as is" hasis, without warranty. Although every precaution bas been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work.
    [Show full text]
  • Nber Working Paper Series
    1%(5:25.,1*3$3(56(5,(6 $&203$5,6212)352*5$00,1*/$1*8$*(6,1(&2120,&6 6%RUD ğ an Aruoba -HV~V)HUQiQGH]9LOODYHUGH :RUNLQJ3DSHU KWWSZZZQEHURUJSDSHUVZ 1$7,21$/%85($82)(&2120,&5(6($5&+ 0DVVDFKXVHWWV$YHQXH &DPEULGJH0$ -XQH :HWKDQN0DQXHO$PDGRUIRUKLVKHOSZLWKPDNLQJRXU3\WKRQDQG0DWKHPDWLFDFRGHVPRUHLGLRPDWLF 0DWWKHZ0DF.D\DQG-RKQ6WDFKXUVNLIRUWKHLULQFUHGLEOHKHOSZLWK1XPED)ORULDQ2VZDOGIRUSRLQWLQJ RXWWKHLPSRUWDQFHRIRSWLRQDOW\SLQJLQ-XOLD/XLJL%RFROD*XVWDYR&DPLORDQG3DEOR&XED%RUGD IRUUHVHDUFKDVVLVWDQFH3DX5DEDQDO7KLEDXW/DPDGRQDQGWKHPHPEHUVRIWKH-XOLDXVHUJURXSIRU FRPPHQWVDQGWKH16)IRUILQDQFLDOVXSSRUW7KHYLHZVH[SUHVVHGKHUHLQDUHWKRVHRIWKHDXWKRUV DQGGRQRWQHFHVVDULO\UHIOHFWWKHYLHZVRIWKH1DWLRQDO%XUHDXRI(FRQRPLF5HVHDUFK 1%(5ZRUNLQJSDSHUVDUHFLUFXODWHGIRUGLVFXVVLRQDQGFRPPHQWSXUSRVHV7KH\KDYHQRWEHHQSHHU UHYLHZHGRUEHHQVXEMHFWWRWKHUHYLHZE\WKH1%(5%RDUGRI'LUHFWRUVWKDWDFFRPSDQLHVRIILFLDO 1%(5SXEOLFDWLRQV © 2014 by S. Bora ğDQ$UXREDDQG-HV~V)HUQiQGH]9LOODYHUGH$OOULJKWVUHVHUYHG6KRUWVHFWLRQV RIWH[WQRWWRH[FHHGWZRSDUDJUDSKVPD\EHTXRWHGZLWKRXWH[SOLFLWSHUPLVVLRQSURYLGHGWKDWIXOO FUHGLWLQFOXGLQJQRWLFHLVJLYHQWRWKHVRXUFH $&RPSDULVRQRI3URJUDPPLQJ/DQJXDJHVLQ(FRQRPLFV S. Bora÷DQ$UXREDDQG-HV~V)HUQiQGH]9LOODYHUGH 1%(5:RUNLQJ3DSHU1R -XQH -(/1R&( ABSTRACT :HVROYHWKHVWRFKDVWLFQHRFODVVLFDOJURZWKPRGHOWKHZRUNKRUVHRIPRGHUQPDFURHFRQRPLFVXVLQJ &)RUWUDQ-DYD-XOLD3\WKRQ0DWODE0DWKHPDWLFDDQG5:HLPSOHPHQWWKHVDPHDOJRULWKP YDOXHIXQFWLRQLWHUDWLRQZLWKJULGVHDUFKLQHDFKRIWKHODQJXDJHV:HUHSRUWWKHH[HFXWLRQWLPHVRI WKHFRGHVLQD0DFDQGLQD:LQGRZVFRPSXWHUDQGFRPPHQWRQWKHVWUHQJWKDQGZHDNQHVVRIHDFK ODQJXDJH S. Bora÷DQ$UXRED 'HSDUWPHQWRI(FRQRPLFV
    [Show full text]
  • MATLAB® 7 External Interfaces
    MATLAB® 7 External Interfaces How to Contact MathWorks www.mathworks.com Web comp.soft-sys.matlab Newsgroup www.mathworks.com/contact_TS.html Technical Support [email protected] Product enhancement suggestions [email protected] Bug reports [email protected] Documentation error reports [email protected] Order status, license renewals, passcodes [email protected] Sales, pricing, and general information 508-647-7000 (Phone) 508-647-7001 (Fax) The MathWorks, Inc. 3 Apple Hill Drive Natick, MA 01760-2098 For contact information about worldwide offices, see the MathWorks Web site. MATLAB® External Interfaces © COPYRIGHT 1984–2010 by The MathWorks, Inc. The software described in this document is furnished under a license agreement. The software may be used or copied only under the terms of the license agreement. No part of this manual may be photocopied or reproduced in any form without prior written consent from The MathWorks, Inc. FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation by, for, or through the federal government of the United States. By accepting delivery of the Program or Documentation, the government hereby agrees that this software or documentation qualifies as commercial computer software or commercial computer software documentation as such terms are used or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern theuse,modification,reproduction,release,performance,display,anddisclosureoftheProgramand Documentation by the federal government (or other entity acquiring for or through the federal government) and shall supersede any conflicting contractual terms or conditions.
    [Show full text]
  • Supported and Compatible Compilers – Release 2019B
    Supported and Compatible Compilers – Release 2019b A number of MathWorks products or product features require that you have a third-party compiler installed on your system. The tables below outline the compilers that are supported by various MathWorks products. These compilers are provided by a number of vendors and are available under a variety of commercial, academic, or open source terms; visit the providers’ websites for further information. Please see Polyspace documentation for the list of compilers that Polyspace supports in the current release. See Supported Interfaces to Other Languages for information about using MATLAB with other programming languages. Windows MinGW is a supported C/C++ compiler which is available free of charge. Download MinGW now. Note: • Microsoft Visual Studio 2019 is supported as of R2019b. (Support for MEX and S-Functions were included with R2019a Update 3) • Intel Parallel Studio XE 2015 for C/C++ and Fortran are not supported as of R2019b. • Intel Parallel Studio XE 2016 for C/C++ and Fortran are not supported as of R2019b. mathworks.com MATLAB Product Family – Release 2019b Fixed Point HDL HDL Audio MATLAB MATLAB Coder GPU Coder SimBiology Designer Coder Verifier Toolbox For MEX-file For all features For all features For For For For DPI For compilation, accelerated accelerated accelerated and TLM validating and Compiler loadlibrary, computation computation testbench component generating and external simulation generation audio usage of plugins MATLAB Engine and MAT-file APIs MinGW 6.3 C/C++ (Distributor:
    [Show full text]
  • A Comparison of Programming Languages in Economics∗
    A Comparison of Programming Languages in Economics S. Boragan¼ Aruobay Jesús Fernández-Villaverdez University of Maryland University of Pennsylvania August 5, 2014 Abstract We solve the stochastic neoclassical growth model, the workhorse of mod- ern macroeconomics, using C++11, Fortran 2008, Java, Julia, Python, Matlab, Mathematica, and R. We implement the same algorithm, value function iteration with grid search, in each of the languages. We report the execution times of the codes in a Mac and in a Windows computer and briefly comment on the strengths and weaknesses of each language. Key words: Dynamic Equilibrium Economies, Computational Methods, Pro- gramming Languages. JEL classifications: C63, C68, E37. We thank Manuel Amador for his help with making our Python and Mathematica codes more idiomatic, Matthew MacKay and John Stachurski for their help with Numba, basthtage for moving our code to Cython, Matt Dziubinski and Santiago González for alternative implementations of our C++ code, Anastasios Stamulis for porting our code to C#, Luigi Bocola, Gustavo Camilo and Pablo Cuba-Borda for research assistance, Thomas Jones, Thibaut Lamadon, Florian Oswald, Pau Rabanal, Pablo Winant, and the members of the Julia user group for comments, and the NSF for financial support. yUniversity of Maryland, <[email protected]>. zUniversity of Pennsylvania, NBER and CEPR <[email protected]>. 1 1. Introduction Computation has become a central tool in economics. From the solution of dynamic equilib- rium models in macroeconomics or industrial organization, to the characterization of equilibria in game theory, or in estimation by simulation, economists spend a considerable amount of their time coding and running fairly sophisticated software.
    [Show full text]
  • The Definitive Guide to GCC Second Edition
    The Definitive Guide to GCC Second Edition ■■■ William von Hagen The Definitive Guide to GCC, Second Edition Copyright © 2006 by William von Hagen All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-59059-585-5 ISBN-10 (pbk): 1-59059-585-8 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editors: Jason Gilmore, Keir Thomas Technical Reviewer: Gene Sally Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick, Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser, Keir Thomas, Matt Wade Project Manager: Richard Dal Porto Copy Edit Manager: Nicole LeClerc Copy Editor: Jennifer Whipple Assistant Production Director: Kari Brooks-Copony Production Editor: Katie Stence Compositor: Susan Glinert Proofreader: Elizabeth Berry Indexer: Toma Mulligan Artist: April Milne Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springeronline.com.
    [Show full text]
  • C-Keele Kompilaatori Realiseerimise Analüüs Mikrokontrollerile Piske
    TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Thomas Johann Seebecki elektroonikainstituut IE40LT Jaan Hendrik Murumets 142951IALB C-KEELE KOMPILAATORI REALISEERIMISE ANALÜÜS MIKROKONTROLLERILE PISKE Bakalaureusetöö Juhendaja: Eero Haldre Dipl. Ins. Kaasjuhendaja: Peeter Ellervee PhD Tallinn 2017 Autorideklaratsioon Kinnitan, et olen koostanud antud lõputöö iseseisvalt ning seda ei ole kellegi teise poolt varem kaitsmisele esitatud. Kõik töö koostamisel kasutatud teiste autorite tööd, olulised seisukohad, kirjandusallikatest ja mujalt pärinevad andmed on töös viidatud. Autor: Jaan Hendrik Murumets 22.05.2017 2 Annotatsioon Töö eesmärk on analüüsida, millised võimalused on (pehmetuumalisele) protsessorile PISKE C-keele kompilaatori saamiseks. Töös vaadeldakse esmalt PISKE ehitust, eelkõige kompilaatori ja programmeerija vaatenurgast. Seejärel kompileerimise protsessi nii tervikuna kui ka üksikute sammudena, jällegi sihitud arhitektuuri vaatenurgast. Jõudes järeldusele, et vaadelda tasub vaid korralikke, hästi toetatud kompilaatoreid, võrreldakse kahte enim kasutatavat kompilaatorite perekonda – GCC ja LLVM. Seejärel selgitatakse, miks töös püstitatud eesmärgi täitmiseks on just LLVM projekt sobivaim. Viimaks selgitatakse ülevaatlikult milliseid sammud tuleb selle kompilaatori portimiseks astuda. Lõputöö on kirjutatud eesti keeles ning sisaldab teksti 28 leheküljel, 7 peatükki, 12 joonist, 1 tabelit. 3 Abstract Analysis of implementing a C-language compiler for PISKE MCU This thesis analyses methods to compile the C programming language
    [Show full text]
  • Supported Compilers
    Supported and Compatible Compilers – Release 2020b A number of MathWorks products or product features require that you have a third-party compiler installed on your system. The tables below outline the compilers that are supported by various MathWorks products. These compilers are provided by a number of vendors and are available under a variety of commercial, academic, or open source terms; visit the providers’ websites for further information. Please see Polyspace documentation for the list of compilers that Polyspace supports in the current release. See Supported Interfaces to Other Languages for information about using MATLAB with other programming languages. Windows MinGW is a supported C/C++ compiler which is available free of charge. Download MinGW now. Note: • MinGW has been updated to version 6.3 as of R2020b. • Intel Parallel Studio XE 2017 for C/C++ and Fortran are not supported as of R2020b. mathworks.com MATLAB Product Family – Release 2020b Fixed Point HDL HDL Audio ROS MATLAB MATLAB Coder GPU Coder SimBiology Designer Coder Verifier Toolbox Toolbox For MEX-file For all features For all features For For For For DPI For For custom compilation, accelerated accelerated accelerated and TLM validating and messages Compiler loadlibrary, C++ computation computation testbench component generating and code interface, and simulation generation audio generation external usage of plugins MATLAB Engine and MAT-file APIs MinGW 6.3 C/C++ (Distributor: mingw-w64) Download Now Available at no charge Microsoft Visual C++ Update 3 Update 5
    [Show full text]
  • Download CORBA Programmers Guide
    CORBA Programmers Guide Remedy IT Expertise BV Table of Contents Preface. 1 Contact information . 2 1. Remedy IT Support . 3 2. Training. 4 2.1. Using the ACE C++ Framework . 4 2.2. Introduction to CORBA . 5 2.3. CORBA Programming with C++ . 6 2.4. CORBA Programming with C++11 . 7 2.5. Advanced CORBA Programming with TAO . 9 2.6. Component Based Development using AXCIOMA. 10 3. Obtain your CORBA implementation . 12 3.1. TAOX11. 12 3.2. R2CORBA . 12 3.3. TAO. 12 3.4. JacORB . 12 4. TAOX11 . 13 4.1. Introduction. 13 4.2. Define your application IDL. 13 4.3. Implement the server . 13 4.4. Implement the client . 16 4.5. Compile client and server . 18 4.6. Run your application. 19 5. TAO . 20 5.1. Introduction. 20 5.2. Define your application IDL. 20 5.3. Implement the server . 20 5.4. Implement the client . 23 5.5. Compile client and server . 25 5.6. Run your application. 26 6. R2CORBA . 27 6.1. Introduction. 27 6.2. Ruby CORBA mapping. 27 6.3. Download R2CORBA . 27 6.4. Define your IDL. 27 6.5. Implement a client . 27 6.6. Implement a server. 28 7. TAO IDL Compiler . 30 7.1. Generated Files . 30 7.2. Environment Variables . 30 7.3. Operation Demuxing Strategies . 31 7.4. Collocation Strategies. 32 7.5. Output File options . 32 7.6. Controlling code generation . 33 7.7. Backend options . 35 7.8. Other options . 37 8. TAO libraries. 39 9. Compression . 44 9.1.
    [Show full text]