Engineering Papers⌕ Search

SEARCH · Engineering Papers

Results for “COMPILER PROGRAM”

Search indexed NASA NTRS and DOE OSTI research on propulsion, heat transfer, battery materials and energy systems. Follow report and document links to the original sources.

Quote a phrase for an exact phrase match. Source license links do not imply unrestricted reuse.

At least 109 records · Page 6

HERCULES/PL: The Pattern Language of HERCULES

Interrogating the structure of a program for patterns of interest is attractive to the broader spectrum of software engineering. The very approach by which a pattern is constructed remains a concern for the source code mining community. This paper presents a pattern programming model, for the C and Fortran programming languages, using a compiler directives approach. We discuss our specification, called HERCULES/PL, throughout a number of examples and show how different patterns can be constructed, plus some preliminary results.

Kartsaklis, Christos↗

Schedulers with load-store queue awareness

In one embodiment, a computer-implemented method includes tracking a size of a load-store queue (LSQ) during compile time of a program. The size of the LSQ is time-varying and indicates how many memory access instructions of the program are on the LSQ. The method further includes scheduling, by a computer processor, a plurality of memory access instructions of the program based on the size of the LSQ.

97 MATHEMATICS AND COMPUTING↗

Schedulers with load-store queue awareness

In one embodiment, a computer-implemented method includes tracking a size of a load-store queue (LSQ) during compile time of a program. The size of the LSQ is time-varying and indicates how many memory access instructions of the program are on the LSQ. The method further includes scheduling, by a computer processor, a plurality of memory access instructions of the program based on the size of the LSQ.

97 MATHEMATICS AND COMPUTING↗

Store operations to maintain cache coherence

In one embodiment, a computer-implemented method includes encountering a store operation during a compile-time of a program, where the store operation is applicable to a memory line. It is determined, by a computer processor, that no cache coherence action is necessary for the store operation. A store-without-coherence-action instruction is generated for the store operation, responsive to determining that no cache coherence action is necessary. The store-without-coherence-action instruction specifies that the store operation is to be performed without a cache coherence action, and cache coherence is maintained upon execution of the store-without-coherence-action instruction.

97 MATHEMATICS AND COMPUTING↗

Store operations to maintain cache coherence

In one embodiment, a computer-implemented method includes encountering a store operation during a compile-time of a program, where the store operation is applicable to a memory line. It is determined, by a computer processor, that no cache coherence action is necessary for the store operation. A store-without-coherence-action instruction is generated for the store operation, responsive to determining that no cache coherence action is necessary. The store-without-coherence-action instruction specifies that the store operation is to be performed without a cache coherence action, and cache coherence is maintained upon execution of the store-without-coherence-action instruction.

97 MATHEMATICS AND COMPUTING↗

Retargetable Optimizing Compilers for Quantum Accelerators via a Multi-Level Intermediate Representation

In this work, we present a multi-level quantum-classical intermediate representation (IR) that enables an optimizing, retargetable compiler for available quantum languages. Our work builds upon the Multi-level Intermediate Representation (MLIR) framework and leverages its unique progressive lowering capabilities to map quantum languages to the LLVM machine-level IR. We provide both quantum and classical optimizations via the MLIR pattern rewriting sub-system and standard LLVM optimization passes, and demonstrate the programmability, compilation, and execution of our approach via standard benchmarks and test cases. In comparison to other standalone language and compiler efforts available today, our work results in compile times that are 1000x faster than standard Pythonic approaches, and 5-10x faster than comparative standalone quantum language compilers. Our compiler provides quantum resource optimizations via standard programming patterns that result in a 10x reduction in entangling operations, a common source of program noise. We see this work as a vehicle for rapid quantum compiler prototyping.

43 PARTICLE ACCELERATORS↗

Solidify, An LLVM pass to compile LLVM IR into Solidity

The software currently compiles LLVM IR into Solidity (Ethereum’s dominant programming language) using LLVM’s pass library. Specifically, his compiler allows us to convert an arbitrary DSL into Solidity. We focus specifically on converting Domain Specific Languages into Solidity due to their ease of use, and provable properties. By creating a toolchain to compile lightweight domain-specific languages into Ethereum's dominant language, Solidity, we allow non-specialists to effectively develop safe and useful smart contracts. For example lawyers from a certain firm can have a proprietary DSL that codifies basic laws safely converted to Solidity to be securely executed on the blockchain. In another example, a simple provenance tracking language can be compiled and securely executed on the blockchain.

Kothapalli, Abhiram↗

Parallel Programming Models and Systems for High Performance Computing. In: Emerging Research in Cloud Distributed Computing Systems

A parallel programming model is an abstraction of a parallel system that allows expression of both algorithms and shared data structures. To accommodate the diversity in parallel system architectures and user requirements, there are a variety of programming models including the models providing a shared memory view or a distributed memory view of the system. The programming models are implemented as libraries, language extensions, or compiler directives. This chapter provides a discussion on programming models and its implementations aimed at application developers, system software researchers, and hardware architects. The first part provides an overview of the programming models. The second part is an in-depth discussion on high-performance networking interface to implement the programming model. The last part of the chapter discusses implementation of a programming model with a case study. Each part of the chapter concludes with a discussion on current research trends and its impact on future architectures.

Venkata, Manjunath Gorentia↗

On Fusing Recursive Traversals of K-d Trees

Loop fusion is a key program transformation for data locality optimization that is implemented in production compilers. But optimizing compilers currently cannot exploit fusion opportunities across a set of recursive tree traversal computations with producer-consumer relationships. In this paper, we develop a compile-time approach to dependence characterization and program transformation to enable fusion across recursively specified traversals over k-ary trees. We present the FuseT source-to-source code transformation framework to automatically generate fused composite recursive operators from an input program containing a sequence of primitive recursive operators. We use our framework to implement fused operators for MADNESS, Multiresolution Adaptive Numerical Environment for Scientific Simulation. We show that locality optimization through fusion can offer more than an order of magnitude performance improvement.

data locality↗

OpenACC to FPGA: A Framework for Directive-based High-Performance Reconfigurable Computing

This paper presents a directive-based, high-level programming framework for high-performance reconfigurable computing. It takes a standard, portable OpenACC C program as input and generates a hardware configuration file for execution on FPGAs. We implemented this prototype system using our open-source OpenARC compiler; it performs source-to-source translation and optimization of the input OpenACC program into an OpenCL code, which is further compiled into a FPGA program by the backend Altera Offline OpenCL compiler. Internally, the design of OpenARC uses a high- level intermediate representation that separates concerns of program representation from underlying architectures, which facilitates portability of OpenARC. In fact, this design allowed us to create the OpenACC-to-FPGA translation framework with minimal extensions to our existing system. In addition, we show that our proposed FPGA-specific compiler optimizations and novel OpenACC pragma extensions assist the compiler in generating more efficient FPGA hardware configuration files. Our empirical evaluation on an Altera Stratix V FPGA with eight OpenACC benchmarks demonstrate the benefits of our strategy. To demonstrate the portability of OpenARC, we show results for the same benchmarks executing on other heterogeneous platforms, including NVIDIA GPUs, AMD GPUs, and Intel Xeon Phis. This initial evidence helps support the goal of using a directive-based, high-level programming strategy for performance portability across heterogeneous HPC architectures.

Lee, Seyong↗

Cache Locality Optimization for Recursive Programs

We present an approach to optimize the cache locality for recursive programs by dynamically splicing--recursively interleaving--the execution of distinct function invocations. By utilizing data effect annotations, we identify concurrency and data reuse opportunities across function invocations and interleave them to reduce reuse distance. We present algorithms that efficiently track effects in recursive programs, detect interference and dependencies, and interleave execution of function invocations using user-level (non-kernel) lightweight threads. To enable multi-core execution, a program is parallelized using a nested fork/join programming model. Our cache optimization strategy is designed to work in the context of a random work stealing scheduler. We present an implementation using the MIT Cilk framework that demonstrates significant improvements in sequential and parallel performance, competitive with a state-of-the-art compile-time optimizer for loop programs and a domain- specific optimizer for stencil programs.

Lifflander, Jonathan↗

eCC++ : A Compiler Construction Framework for Embedded Domain-Specific Languages

eCC++ is a new compiler construction framework for embedding domain-specific programming languages within C++. That is, the host language is C++, the guest language is the DSL to be embedded in C++, and eCC++ is the tool that enables the embedding. The eCC++ framework is composed of three main components: a front-end, an API for program verification based on a functional and declarative intermediate representation (IR), and a Multi-Level Intermediate Representation (MLIR) code generator. The eCC++ front-end consists of a library of C++ classes and operators that can be used to define the guest language. Guest sources are compiled with any standard C++ compiler, and when run, the resulting executable generates an eCC++ IR representation of the program, which can be verified within the eCC++ framework. Finally, eCC++ allows for high-level and domain-specific optimizations before generating MLIR. In summary, eCC++ aims to act as a generic front-end that enables embedding guest languages into C++, and provides necessary compiler technology for program verification, targeting the existing capabilities in the MLIR infrastructure. The paper evaluates the eCC++ expressiveness and usability describing the process of embedding GraphIt, a high-performance graph language in C++.

Gonzalez Tallada, Marc↗

CLC: A cross-level program characterization method

Characterization of program execution plays a key role in performance improvement. There are numerous transformations applied to each step that a program takes on its lowering from source code to a compiler intermediate representation to machine language to microarchitecture-specific execution. The unpredictable benefit of each transformation step could lead a notionally superior algorithm to exhibit inferior performance once actually run, and it can be hard to discern which step in the transformation path contradicted the code developer’s assumptions. Conventional approaches to program-execution characterization consider the behavior after only a single one of those steps, which limits the information that can be provided to the user. To help address the issue of myopic views of program execution, this paper presents a novel cross-level characterization approach for understanding the behavior of program execution at different levels in the process of writing, compiling, and running a program. We show that this approach provides a richer view of the sources of performance gains and losses and helps identify program execution in a more accurate manner.

97 MATHEMATICS AND COMPUTING↗

Effective Vectorization with OpenMP 4.5

This paper describes how the Single Instruction Multiple Data (SIMD) model and its extensions in OpenMP work, and how these are implemented in different compilers. Modern processors are highly parallel computational machines which often include multiple processors capable of executing several instructions in parallel. Understanding SIMD and executing instructions in parallel allows the processor to achieve higher performance without increasing the power required to run it. SIMD instructions can significantly reduce the runtime of code by executing a single operation on large groups of data. The SIMD model is so integral to the processor s potential performance that, if SIMD is not utilized, less than half of the processor is ever actually used. Unfortunately, using SIMD instructions is a challenge in higher level languages because most programming languages do not have a way to describe them. Most compilers are capable of vectorizing code by using the SIMD instructions, but there are many code features important for SIMD vectorization that the compiler cannot determine at compile time. OpenMP attempts to solve this by extending the C++/C and Fortran programming languages with compiler directives that express SIMD parallelism. OpenMP is used to pass hints to the compiler about the code to be executed in SIMD. This is a key resource for making optimized code, but it does not change whether or not the code can use SIMD operations. However, in many cases critical functions are limited by a poor understanding of how SIMD instructions are actually implemented, as SIMD can be implemented through vector instructions or simultaneous multi-threading (SMT). We have found that it is often the case that code cannot be vectorized, or is vectorized poorly, because the programmer does not have sufficient knowledge of how SIMD instructions work.

97 MATHEMATICS AND COMPUTING↗

Federal Government Energy Management and Conservation Programs (Fiscal Year 2008)

Annual reports on Federal energy management respond to section 548 of the National Energy Conservation Policy Act (NECPA, Pub. L. No. 95-619), as amended, and provide information on energy consumption in Federal buildings, operations, and vehicles. Compiled by the Federal Energy Management Program, these reports document activities conducted by Federal agencies under the: Energy management and energy consumption requirements of section 543 of NECPA, as amended (42 U.S.C. § 8253); Energy savings performance contract authority of section 801 of NECPA, Pub. L. No. 95-619, as amended (42 U.S.C. §§ 8287-8287d); Renewable energy purchase goal of section 203 of the Energy Policy Act (EPAct) of 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 15852); Federal building performance standard requirements under Section 109 of EPAct 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 6834(a)); Requirements on the procurement and identification of energy efficient products under section 161 of EPAct 1992, Pub. L. No. 102-486 (codified at 42 U.S.C. § 8262g); Sections 431, 432, and 434 of the Energy Independence and Security Act of 2007 (EISA), Pub. L. No. 110-140 (42 U.S.C. § 8253) and section 527 of EISA (42 U.S.C. § 17143); Executive Order 13423, Strengthening Federal Environmental, Energy, and Transportation Management, 72 Fed. Reg. 3,919 (Jan. 26, 2007); Executive Order 13514, Federal Leadership in Environmental, Energy, and Economic Performance, 74 Fed. Reg. 52,117 (Oct. 5, 2009).

32 ENERGY CONSERVATION, CONSUMPTION, AND UTILIZATI↗

Annual Report on Federal Government Energy Management and Conservation Programs (Fiscal Year 2010)

Annual reports on Federal energy management respond to section 548 of the National Energy Conservation Policy Act (NECPA, Pub. L. No. 95-619), as amended, and provide information on energy consumption in Federal buildings, operations, and vehicles. Compiled by the Federal Energy Management Program, these reports document activities conducted by Federal agencies under the: Energy management and energy consumption requirements of section 543 of NECPA, as amended (42 U.S.C. § 8253); Energy savings performance contract authority of section 801 of NECPA, Pub. L. No. 95-619, as amended (42 U.S.C. §§ 8287-8287d); Renewable energy purchase goal of section 203 of the Energy Policy Act (EPAct) of 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 15852); Federal building performance standard requirements under Section 109 of EPAct 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 6834(a)); Requirements on the procurement and identification of energy efficient products under section 161 of EPAct 1992, Pub. L. No. 102-486 (codified at 42 U.S.C. § 8262g); Sections 431, 432, and 434 of the Energy Independence and Security Act of 2007 (EISA), Pub. L. No. 110-140 (42 U.S.C. § 8253) and section 527 of EISA (42 U.S.C. § 17143); Executive Order 13423, Strengthening Federal Environmental, Energy, and Transportation Management, 72 Fed. Reg. 3,919 (Jan. 26, 2007); Executive Order 13514, Federal Leadership in Environmental, Energy, and Economic Performance, 74 Fed. Reg. 52,117 (Oct. 5, 2009).

32 ENERGY CONSERVATION, CONSUMPTION, AND UTILIZATI↗

Annual Report on Federal Government Energy Management and Conservation Programs (Fiscal Year 2011)

Annual reports on Federal energy management respond to section 548 of the National Energy Conservation Policy Act (NECPA, Pub. L. No. 95-619), as amended, and provide information on energy consumption in Federal buildings, operations, and vehicles. Compiled by the Federal Energy Management Program, these reports document activities conducted by Federal agencies under the: Energy management and energy consumption requirements of section 543 of NECPA, as amended (42 U.S.C. § 8253); Energy savings performance contract authority of section 801 of NECPA, Pub. L. No. 95-619, as amended (42 U.S.C. §§ 8287-8287d); Renewable energy purchase goal of section 203 of the Energy Policy Act (EPAct) of 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 15852); Federal building performance standard requirements under Section 109 of EPAct 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 6834(a)); Requirements on the procurement and identification of energy efficient products under section 161 of EPAct 1992, Pub. L. No. 102-486 (codified at 42 U.S.C. § 8262g); Sections 431, 432, and 434 of the Energy Independence and Security Act of 2007 (EISA), Pub. L. No. 110-140 (42 U.S.C. § 8253) and section 527 of EISA (42 U.S.C. § 17143); Executive Order 13423, Strengthening Federal Environmental, Energy, and Transportation Management, 72 Fed. Reg. 3,919 (Jan. 26, 2007); Executive Order 13514, Federal Leadership in Environmental, Energy, and Economic Performance, 74 Fed. Reg. 52,117 (Oct. 5, 2009).

32 ENERGY CONSERVATION, CONSUMPTION, AND UTILIZATI↗

Annual Report on Federal Government Energy Management and Conservation Programs (Fiscal Year 2012)

Annual reports on Federal energy management respond to section 548 of the National Energy Conservation Policy Act (NECPA, Pub. L. No. 95-619), as amended, and provide information on energy consumption in Federal buildings, operations, and vehicles. Compiled by the Federal Energy Management Program, these reports document activities conducted by Federal agencies under the: Energy management and energy consumption requirements of section 543 of NECPA, as amended (42 U.S.C. § 8253); Energy savings performance contract authority of section 801 of NECPA, Pub. L. No. 95-619, as amended (42 U.S.C. §§ 8287-8287d); Renewable energy purchase goal of section 203 of the Energy Policy Act (EPAct) of 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 15852); Federal building performance standard requirements under Section 109 of EPAct 2005, Pub. L. No. 109-58 (codified at 42 U.S.C. § 6834(a)); Requirements on the procurement and identification of energy efficient products under section 161 of EPAct 1992, Pub. L. No. 102-486 (codified at 42 U.S.C. § 8262g); Sections 431, 432, and 434 of the Energy Independence and Security Act of 2007 (EISA), Pub. L. No. 110-140 (42 U.S.C. § 8253) and section 527 of EISA (42 U.S.C. § 17143); Executive Order 13423, Strengthening Federal Environmental, Energy, and Transportation Management, 72 Fed. Reg. 3,919 (Jan. 26, 2007); Executive Order 13514, Federal Leadership in Environmental, Energy, and Economic Performance, 74 Fed. Reg. 52,117 (Oct. 5, 2009).

32 ENERGY CONSERVATION, CONSUMPTION, AND UTILIZATI↗