Foundations of Scientific Research
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Science Serving the Nation, Impact of Basic Research
Science Serving the Nation The Impact of Basic Research Basic Energy Sciences Science Serving the Nation The Impact of Basic Research Basic Energy Sciences BASIC ENERGY SCIENCES ENERGY ENVIRONMENT SECURITY MATERIALS SCIENCES ENGINEERING CHEMICAL GEOSCIENCES BIOSCIENCES RESEARCH UNDERSTAND PREDICT CONTROL MATTER ENERGY This document highlights the breadth of the scientific programs and the impact of this research in commerce and in advancing scientific frontiers. To look in more detail at our research portfolio and see how we manage our programs, consult our BES 2011 Summary Report, available at http://science.energy.gov/~/media/bes/pdf/reports/files/bes2011sr_rpt.pdf. Additional information about the impact of BES research can be found on our website at http://science.energy.gov/bes/. New highlights showcasing the benefits of BES programs are frequently posted to the web as they arise. Our user facility brochure (http://science.energy.gov/~/media/bes/suf/pdf/BES_Facilities.pdf) contains additional information on all of the BES national scientific user facilities. Energy technologies, environmental tech- nologies, and national security all depend on the progress of basic science research. By understanding, predicting, and ulti- mately controlling matter and energy at the level of electrons, atoms, and molecules, scientists have the capacity to transform the technologies we use in everyday life. From Fundamental Science to Energy Technology Basic Energy Sciences (BES) supports the science that is the foundation for new technologies essential to the U.S. Department of Energy (DOE) missions in energy, environment, and national security. We are one of the Nation’s leading sponsors of fundamental research across broad areas of materials sciences and engineering, chemical sciences, geosciences, and biosciences. -
A Deep Dive Into the Interprocedural Optimization Infrastructure
Stes Bais [email protected] Kut el [email protected] Shi Oku [email protected] A Deep Dive into the Luf Cen Interprocedural [email protected] Hid Ue Optimization Infrastructure [email protected] Johs Dor [email protected] Outline ● What is IPO? Why is it? ● Introduction of IPO passes in LLVM ● Inlining ● Attributor What is IPO? What is IPO? ● Pass Kind in LLVM ○ Immutable pass Intraprocedural ○ Loop pass ○ Function pass ○ Call graph SCC pass ○ Module pass Interprocedural IPO considers more than one function at a time Call Graph ● Node : functions ● Edge : from caller to callee A void A() { B(); C(); } void B() { C(); } void C() { ... B C } Call Graph SCC ● SCC stands for “Strongly Connected Component” A D G H I B C E F Call Graph SCC ● SCC stands for “Strongly Connected Component” A D G H I B C E F Passes In LLVM IPO passes in LLVM ● Where ○ Almost all IPO passes are under llvm/lib/Transforms/IPO Categorization of IPO passes ● Inliner ○ AlwaysInliner, Inliner, InlineAdvisor, ... ● Propagation between caller and callee ○ Attributor, IP-SCCP, InferFunctionAttrs, ArgumentPromotion, DeadArgumentElimination, ... ● Linkage and Globals ○ GlobalDCE, GlobalOpt, GlobalSplit, ConstantMerge, ... ● Others ○ MergeFunction, OpenMPOpt, HotColdSplitting, Devirtualization... 13 Why is IPO? ● Inliner ○ Specialize the function with call site arguments ○ Expose local optimization opportunities ○ Save jumps, register stores/loads (calling convention) ○ Improve instruction locality ● Propagation between caller and callee ○ Other passes would benefit from the propagated information ● Linkage -
Expression Rematerialization for VLIW DSP Processors with Distributed Register Files ?
Expression Rematerialization for VLIW DSP Processors with Distributed Register Files ? Chung-Ju Wu, Chia-Han Lu, and Jenq-Kuen Lee Department of Computer Science, National Tsing-Hua University, Hsinchu 30013, Taiwan {jasonwu,chlu}@pllab.cs.nthu.edu.tw,[email protected] Abstract. Spill code is the overhead of memory load/store behavior if the available registers are not sufficient to map live ranges during the process of register allocation. Previously, works have been proposed to reduce spill code for the unified register file. For reducing power and cost in design of VLIW DSP processors, distributed register files and multi- bank register architectures are being adopted to eliminate the amount of read/write ports between functional units and registers. This presents new challenges for devising compiler optimization schemes for such ar- chitectures. This paper aims at addressing the issues of reducing spill code via rematerialization for a VLIW DSP processor with distributed register files. Rematerialization is a strategy for register allocator to de- termine if it is cheaper to recompute the value than to use memory load/store. In the paper, we propose a solution to exploit the character- istics of distributed register files where there is the chance to balance or split live ranges. By heuristically estimating register pressure for each register file, we are going to treat them as optional spilled locations rather than spilling to memory. The choice of spilled location might pre- serve an expression result and keep the value alive in different register file. It increases the possibility to do expression rematerialization which is effectively able to reduce spill code. -
Measuring Science: Is There “Basic Research” Without Statistics? Benoît Godin 3465, Rue Durocher Montréal (QUE) Canada
Measuring Science: Is There “Basic Research” Without Statistics? Benoît Godin 3465, rue Durocher Montréal (QUE) Canada H2X 2C6 Project on the History and Sociology of S&T Statistics Paper No. 3 2000 Previous papers in the series: 1. B. Godin, Outlines for a History of Science Measurement. 2. B. Godin, The Measure of Science and the Construction of a Statistical Territory: The Case of the National Capital Region (NCR). 1 Measuring Science : Is There “Basic Research” Without Statistics? Measuring Science: Is There “Basic Research” Without Statistics? Fundamental research is a central category of science policy and science measurement. Of all the concepts defined in the first edition of the Frascati manual, the OECD (Organization for Economic and Co-operation Development) methodological guide for official surveys on R&D, the first dealt with fundamental research. While a definition of research itself did not appear until the second edition in 1970, fundamental research was defined explicitly as follows: Work undertaken primarily for the advancement of scientific knowledge, without a specific practical application in view. 1 In the last edition of the manual (1994), the definition is substantially the same as the one in 1963, although the term “basic” is now used instead of fundamental: Basic research is experimental or theoretical work undertaken primarily to acquire new knowledge of the underlying foundation of phenomena and observable facts, without any particular application or use in view. 2 Between 1963 and 1994, therefore, all five editions of the manual carry essentially the same definition without any significant changes: basic research is research concerned with knowledge as contrasted with applied research, which is concerned with the application of knowledge. -
Concepts and Definitions for Identifying R&D
Frascati Manual 2015 Guidelines for Collecting and Reporting Data on Research and Experimental Development © OECD 2015 Chapter 2 Concepts and definitions for identifying R&D This chapter provides the definition of research and experimental development (R&D) and of its components, basic research, applied research and experimental development. These definitions are essentially unchanged from those in previous editions of the manual. Where there are differences, they reflect changes in culture and the use of language. To provide guidance on what is and what is not an R&D activity, five criteria are provided which require the activity to be novel, creative, uncertain in it outcome, systematic and transferable and/or reproducible. Since the last edition, the treatment of R&D expenditure in the System of National Accounts (SNA) has changed from an expense to a capital investment. As a result, the language of this manual, and of the SNA, is closer and there are additional requirements for measurements of financial flows. While the manual has always applied to all scientific disciplines, there is more emphasis on the social sciences, humanities and the arts, in addition to the natural sciences and engineering. Measuring R&D activities through surveys, administrative data, or interviews raises questions about boundaries and what is and what is not included and this chapter provides examples to help answer those questions. The manual is used to interpret R&D data as part of policy development and evaluation, but the focus of this chapter is on definitions for measurement purposes. 43 I-2. CONCEPTS AND DEFINITIONS FOR IDENTIFYING R&D 2.1. -
Handout – Dataflow Optimizations Assignment
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout – Dataflow Optimizations Assignment Tuesday, Mar 19 DUE: Thursday, Apr 4, 9:00 pm For this part of the project, you will add dataflow optimizations to your compiler. At the very least, you must implement global common subexpression elimination. The other optimizations listed below are optional. You may also wait until the next project to implement them if you are going to; there is no requirement to implement other dataflow optimizations in this project. We list them here as suggestions since past winners of the compiler derby typically implement each of these optimizations in some form. You are free to implement any other optimizations you wish. Note that you will be implementing register allocation for the next project, so you don’t need to concern yourself with it now. Global CSE (Common Subexpression Elimination): Identification and elimination of redun- dant expressions using the algorithm described in lecture (based on available-expression anal- ysis). See §8.3 and §13.1 of the Whale book, §10.6 and §10.7 in the Dragon book, and §17.2 in the Tiger book. Global Constant Propagation and Folding: Compile-time interpretation of expressions whose operands are compile time constants. See the algorithm described in §12.1 of the Whale book. Global Copy Propagation: Given a “copy” assignment like x = y , replace uses of x by y when legal (the use must be reached by only this def, and there must be no modification of y on any path from the def to the use). -
Science for Energy Technology: Strengthening the Link Between Basic Research and Industry
ďŽƵƚƚŚĞĞƉĂƌƚŵĞŶƚŽĨŶĞƌŐLJ͛ƐĂƐŝĐŶĞƌŐLJ^ĐŝĞŶĐĞƐWƌŽŐƌĂŵ ĂƐŝĐŶĞƌŐLJ^ĐŝĞŶĐĞƐ;^ͿƐƵƉƉŽƌƚƐĨƵŶĚĂŵĞŶƚĂůƌĞƐĞĂƌĐŚƚŽƵŶĚĞƌƐƚĂŶĚ͕ƉƌĞĚŝĐƚ͕ĂŶĚƵůƟŵĂƚĞůLJĐŽŶƚƌŽů ŵĂƩĞƌĂŶĚĞŶĞƌŐLJĂƚƚŚĞĞůĞĐƚƌŽŶŝĐ͕ĂƚŽŵŝĐ͕ĂŶĚŵŽůĞĐƵůĂƌůĞǀĞůƐ͘dŚŝƐƌĞƐĞĂƌĐŚƉƌŽǀŝĚĞƐƚŚĞĨŽƵŶĚĂƟŽŶƐ ĨŽƌŶĞǁĞŶĞƌŐLJƚĞĐŚŶŽůŽŐŝĞƐĂŶĚƐƵƉƉŽƌƚƐKŵŝƐƐŝŽŶƐŝŶĞŶĞƌŐLJ͕ĞŶǀŝƌŽŶŵĞŶƚ͕ĂŶĚŶĂƟŽŶĂůƐĞĐƵƌŝƚLJ͘dŚĞ ^ƉƌŽŐƌĂŵĂůƐŽƉůĂŶƐ͕ĐŽŶƐƚƌƵĐƚƐ͕ĂŶĚŽƉĞƌĂƚĞƐŵĂũŽƌƐĐŝĞŶƟĮĐƵƐĞƌĨĂĐŝůŝƟĞƐƚŽƐĞƌǀĞƌĞƐĞĂƌĐŚĞƌƐĨƌŽŵ ƵŶŝǀĞƌƐŝƟĞƐ͕ŶĂƟŽŶĂůůĂďŽƌĂƚŽƌŝĞƐ͕ĂŶĚƉƌŝǀĂƚĞŝŶƐƟƚƵƟŽŶƐ͘ ďŽƵƚƚŚĞ͞ĂƐŝĐZĞƐĞĂƌĐŚEĞĞĚƐ͟ZĞƉŽƌƚ^ĞƌŝĞƐ KǀĞƌƚŚĞƉĂƐƚĞŝŐŚƚLJĞĂƌƐ͕ƚŚĞĂƐŝĐŶĞƌŐLJ^ĐŝĞŶĐĞƐĚǀŝƐŽƌLJŽŵŵŝƩĞĞ;^ͿĂŶĚ^ŚĂǀĞĞŶŐĂŐĞĚ ƚŚŽƵƐĂŶĚƐŽĨƐĐŝĞŶƟƐƚƐĨƌŽŵĂĐĂĚĞŵŝĂ͕ŶĂƟŽŶĂůůĂďŽƌĂƚŽƌŝĞƐ͕ĂŶĚŝŶĚƵƐƚƌLJĨƌŽŵĂƌŽƵŶĚƚŚĞǁŽƌůĚƚŽƐƚƵĚLJ ƚŚĞĐƵƌƌĞŶƚƐƚĂƚƵƐ͕ůŝŵŝƟŶŐĨĂĐƚŽƌƐ͕ĂŶĚƐƉĞĐŝĮĐĨƵŶĚĂŵĞŶƚĂůƐĐŝĞŶƟĮĐďŽƩůĞŶĞĐŬƐďůŽĐŬŝŶŐƚŚĞǁŝĚĞƐƉƌĞĂĚ ŝŵƉůĞŵĞŶƚĂƟŽŶŽĨĂůƚĞƌŶĂƚĞĞŶĞƌŐLJƚĞĐŚŶŽůŽŐŝĞƐ͘dŚĞƌĞƉŽƌƚƐĨƌŽŵƚŚĞĨŽƵŶĚĂƟŽŶĂůĂƐŝĐZĞƐĞĂƌĐŚEĞĞĚƐƚŽ ƐƐƵƌĞĂ^ĞĐƵƌĞŶĞƌŐLJ&ƵƚƵƌĞǁŽƌŬƐŚŽƉ͕ƚŚĞĨŽůůŽǁŝŶŐƚĞŶ͞ĂƐŝĐZĞƐĞĂƌĐŚEĞĞĚƐ͟ǁŽƌŬƐŚŽƉƐ͕ƚŚĞƉĂŶĞůŽŶ 'ƌĂŶĚŚĂůůĞŶŐĞƐĐŝĞŶĐĞ͕ĂŶĚƚŚĞƐƵŵŵĂƌLJƌĞƉŽƌƚEĞǁ^ĐŝĞŶĐĞĨŽƌĂ^ĞĐƵƌĞĂŶĚ^ƵƐƚĂŝŶĂďůĞŶĞƌŐLJ&ƵƚƵƌĞ ĚĞƚĂŝůƚŚĞŬĞLJďĂƐŝĐƌĞƐĞĂƌĐŚŶĞĞĚĞĚƚŽĐƌĞĂƚĞƐƵƐƚĂŝŶĂďůĞ͕ůŽǁĐĂƌďŽŶĞŶĞƌŐLJƚĞĐŚŶŽůŽŐŝĞƐŽĨƚŚĞĨƵƚƵƌĞ͘dŚĞƐĞ ƌĞƉŽƌƚƐŚĂǀĞďĞĐŽŵĞƐƚĂŶĚĂƌĚƌĞĨĞƌĞŶĐĞƐŝŶƚŚĞƐĐŝĞŶƟĮĐĐŽŵŵƵŶŝƚLJĂŶĚŚĂǀĞŚĞůƉĞĚƐŚĂƉĞƚŚĞƐƚƌĂƚĞŐŝĐ ĚŝƌĞĐƟŽŶƐŽĨƚŚĞ^ͲĨƵŶĚĞĚƉƌŽŐƌĂŵƐ͘;ŚƩƉ͗ͬͬǁǁǁ͘ƐĐ͘ĚŽĞ͘ŐŽǀͬďĞƐͬƌĞƉŽƌƚƐͬůŝƐƚ͘ŚƚŵůͿ ϭ ^ĐŝĞŶĐĞĨŽƌŶĞƌŐLJdĞĐŚŶŽůŽŐLJ͗^ƚƌĞŶŐƚŚĞŶŝŶŐƚŚĞ>ŝŶŬďĞƚǁĞĞŶĂƐŝĐZĞƐĞĂƌĐŚĂŶĚ/ŶĚƵƐƚƌLJ Ϯ EĞǁ^ĐŝĞŶĐĞĨŽƌĂ^ĞĐƵƌĞĂŶĚ^ƵƐƚĂŝŶĂďůĞŶĞƌŐLJ&ƵƚƵƌĞ ϯ ŝƌĞĐƟŶŐDĂƩĞƌĂŶĚŶĞƌŐLJ͗&ŝǀĞŚĂůůĞŶŐĞƐĨŽƌ^ĐŝĞŶĐĞĂŶĚƚŚĞ/ŵĂŐŝŶĂƟŽŶ ϰ ĂƐŝĐZĞƐĞĂƌĐŚEĞĞĚƐĨŽƌDĂƚĞƌŝĂůƐƵŶĚĞƌdžƚƌĞŵĞŶǀŝƌŽŶŵĞŶƚƐ ϱ ĂƐŝĐZĞƐĞĂƌĐŚEĞĞĚƐ͗ĂƚĂůLJƐŝƐĨŽƌŶĞƌŐLJ -
Comparative Studies of Programming Languages; Course Lecture Notes
Comparative Studies of Programming Languages, COMP6411 Lecture Notes, Revision 1.9 Joey Paquet Serguei A. Mokhov (Eds.) August 5, 2010 arXiv:1007.2123v6 [cs.PL] 4 Aug 2010 2 Preface Lecture notes for the Comparative Studies of Programming Languages course, COMP6411, taught at the Department of Computer Science and Software Engineering, Faculty of Engineering and Computer Science, Concordia University, Montreal, QC, Canada. These notes include a compiled book of primarily related articles from the Wikipedia, the Free Encyclopedia [24], as well as Comparative Programming Languages book [7] and other resources, including our own. The original notes were compiled by Dr. Paquet [14] 3 4 Contents 1 Brief History and Genealogy of Programming Languages 7 1.1 Introduction . 7 1.1.1 Subreferences . 7 1.2 History . 7 1.2.1 Pre-computer era . 7 1.2.2 Subreferences . 8 1.2.3 Early computer era . 8 1.2.4 Subreferences . 8 1.2.5 Modern/Structured programming languages . 9 1.3 References . 19 2 Programming Paradigms 21 2.1 Introduction . 21 2.2 History . 21 2.2.1 Low-level: binary, assembly . 21 2.2.2 Procedural programming . 22 2.2.3 Object-oriented programming . 23 2.2.4 Declarative programming . 27 3 Program Evaluation 33 3.1 Program analysis and translation phases . 33 3.1.1 Front end . 33 3.1.2 Back end . 34 3.2 Compilation vs. interpretation . 34 3.2.1 Compilation . 34 3.2.2 Interpretation . 36 3.2.3 Subreferences . 37 3.3 Type System . 38 3.3.1 Type checking . 38 3.4 Memory management . -
Introduction Inline Expansion
CSc 553 Principles of Compilation Introduction 29 : Optimization IV Department of Computer Science University of Arizona [email protected] Copyright c 2011 Christian Collberg Inline Expansion I The most important and popular inter-procedural optimization is inline expansion, that is replacing the call of a procedure Inline Expansion with the procedure’s body. Why would you want to perform inlining? There are several reasons: 1 There are a number of things that happen when a procedure call is made: 1 evaluate the arguments of the call, 2 push the arguments onto the stack or move them to argument transfer registers, 3 save registers that contain live values and that might be trashed by the called routine, 4 make the jump to the called routine, Inline Expansion II Inline Expansion III 1 continued.. 3 5 make the jump to the called routine, ... This is the result of programming with abstract data types. 6 set up an activation record, Hence, there is often very little opportunity for optimization. 7 execute the body of the called routine, However, when inlining is performed on a sequence of 8 return back to the callee, possibly returning a result, procedure calls, the code from the bodies of several procedures 9 deallocate the activation record. is combined, opening up a larger scope for optimization. 2 Many of these actions don’t have to be performed if we inline There are problems, of course. Obviously, in most cases the the callee in the caller, and hence much of the overhead size of the procedure call code will be less than the size of the associated with procedure calls is optimized away. -
PGI Compilers
USER'S GUIDE FOR X86-64 CPUS Version 2019 TABLE OF CONTENTS Preface............................................................................................................ xii Audience Description......................................................................................... xii Compatibility and Conformance to Standards............................................................xii Organization................................................................................................... xiii Hardware and Software Constraints.......................................................................xiv Conventions.................................................................................................... xiv Terms............................................................................................................ xv Related Publications.........................................................................................xvii Chapter 1. Getting Started.....................................................................................1 1.1. Overview................................................................................................... 1 1.2. Creating an Example..................................................................................... 2 1.3. Invoking the Command-level PGI Compilers......................................................... 2 1.3.1. Command-line Syntax...............................................................................2 1.3.2. Command-line Options............................................................................ -
User-Directed Loop-Transformations in Clang
User-Directed Loop-Transformations in Clang Michael Kruse Hal Finkel Argonne Leadership Computing Facility Argonne Leadership Computing Facility Argonne National Laboratory Argonne National Laboratory Argonne, USA Argonne, USA [email protected] hfi[email protected] Abstract—Directives for the compiler such as pragmas can Only #pragma unroll has broad support. #pragma ivdep made help programmers to separate an algorithm’s semantics from popular by icc and Cray to help vectorization is mimicked by its optimization. This keeps the code understandable and easier other compilers as well, but with different interpretations of to optimize for different platforms. Simple transformations such as loop unrolling are already implemented in most mainstream its meaning. However, no compiler allows applying multiple compilers. We recently submitted a proposal to add generalized transformations on a single loop systematically. loop transformations to the OpenMP standard. We are also In addition to straightforward trial-and-error execution time working on an implementation in LLVM/Clang/Polly to show its optimization, code transformation pragmas can be useful for feasibility and usefulness. The current prototype allows applying machine-learning assisted autotuning. The OpenMP approach patterns common to matrix-matrix multiplication optimizations. is to make the programmer responsible for the semantic Index Terms—OpenMP, Pragma, Loop Transformation, correctness of the transformation. This unfortunately makes it C/C++, Clang, LLVM, Polly hard for an autotuner which only measures the timing difference without understanding the code. Such an autotuner would I. MOTIVATION therefore likely suggest transformations that make the program Almost all processor time is spent in some kind of loop, and return wrong results or crash. -
Elimination of Memory-Based Dependences For
Elimination of Memory-Based Dependences for Loop-Nest Optimization and Parallelization: Evaluation of a Revised Violated Dependence Analysis Method on a Three-Address Code Polyhedral Compiler Konrad Trifunovic1, Albert Cohen1, Razya Ladelsky2, and Feng Li1 1 INRIA Saclay { ^Ile-de-France and LRI, Paris-Sud 11 University, Orsay, France falbert.cohen, konrad.trifunovic, [email protected] 2 IBM Haifa Research, Haifa, Israel [email protected] Abstract In order to preserve the legality of loop nest transformations and parallelization, data- dependences need to be analyzed. Memory dependences come in two varieties: they are either data-flow dependences or memory-based dependences. While data-flow de- pendences must be satisfied in order to preserve the correct order of computations, memory-based dependences are induced by the reuse of a single memory location to store multiple values. Memory-based dependences reduce the degrees of freedom for loop transformations and parallelization. While systematic array expansion techniques exist to remove all memory-based dependences, the overhead on memory footprint and the detrimental impact on register-level reuse can be catastrophic. Much care is needed when eliminating memory-based dependences, and this is particularly essential for polyhedral compilation on three-address code representation like the GRAPHITE pass of GCC. We propose and evaluate a technique allowing a compiler to ignore some memory- based dependences while checking for the legality of a given affine transformation. This technique does not involve any array expansion. When this technique is not sufficient to expose data parallelism, it can be used to compute the minimal set of scalars and arrays that should be privatized.