WO2016089243A1 - Compiler and method for compiling source code - Google Patents

Compiler and method for compiling source code Download PDF

Info

Publication number
WO2016089243A1
WO2016089243A1 PCT/RU2014/000911 RU2014000911W WO2016089243A1 WO 2016089243 A1 WO2016089243 A1 WO 2016089243A1 RU 2014000911 W RU2014000911 W RU 2014000911W WO 2016089243 A1 WO2016089243 A1 WO 2016089243A1
Authority
WO
WIPO (PCT)
Prior art keywords
representations
transformatted
irk
source code
code
Prior art date
Application number
PCT/RU2014/000911
Other languages
French (fr)
Inventor
Ilya Grigorievich KLYUCHNIKOV
Alexander Vladimirovich SLESARENKO
Original Assignee
Huawei Technologies Co., Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd filed Critical Huawei Technologies Co., Ltd
Priority to PCT/RU2014/000911 priority Critical patent/WO2016089243A1/en
Priority to CN201480083834.1A priority patent/CN107003884B/en
Publication of WO2016089243A1 publication Critical patent/WO2016089243A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

A method for compiling source code comprises translating the source code into a plurality of intermediate representations using a plurality of alternative translation schemes, respectively, applying fusion and/or transformations to each of the plurality of intermediate representations to obtain a plurality of transformatted representations, generating a plurality of executable programs from the plurality of transformatted representations, respectively, and selecting one or more of the plurality of executable programs as output program depending on one or more performance metrics of the plurality of executable programs.

Description

Compiler and method for compiling source code
TECHNICAL FIELD The invention relates to a compiler and a method for
compiling source code, particularly by using multi-stage programming .
BACKGROUND
Multi-stage programming (MSP) is a paradigm for developing generic software by using concise, carefully designed
language extensions that support runtime code generation and program execution. When executed a multi-staged program is first constructed as intermediate representation of itself. This intermediate representation is optimized, new code is generated from the optimized intermediate representation and the newly generated code is finally executed. One of the applications of MSP is development of high
performance embedded domain-specific languages (DSL) which may be employed in machine learning, scientific computation, image processing, big data analysis and other similar complex fields of application.
The technology of MSP is generally known and implemented in several high level programming languages such as MetaML, MetaOcaml, Template Haskell or Delite. Delite for example is a compiler framework for parallel embedded DSLs which has been developed at Stanford University. Introductory
background into MSP can for example be found in the documents Taha, W. : "A gentle introduction to multi-stage programming"; Domain Specific Program Generation; Springer Berlin Heidelberg, 2004; pp. 30-50, Rompf, T; Odersky, M. :
"Lightweight modular staging: a pragmatic approach to runtime code generation and complied DSLs" ; ACM Sigplan Notices; vol. 46(2); ACM, 2010, and Rompf, T. ; Sujeeth, A.K.; Amin, N. ;
Brown, K.J.; Jovanovic, V; Lee, H.-J.; Jonnalagedda, M. ;
Olukotun, K.; Odersky, . , POPL'13: 40th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, January 2013. There is, however, a need for solutions that improve the performance of executable programs generated by multi-stage programming .
SUMMARY
Accordingly, it is an object of the present invention to provide a compiler, particularly a multi-stage programming compiler, and a method for compiling source code,
particularly under the regime of multi-stage programming, that are able to widen the search space for optimizations during compilation and to allow the widening to become more generic and extensible for improved user control over
optimization . According to a first aspect of the present invention, a method for compiling source code comprises translating the source code into a plurality of intermediate representations using a plurality of alternative translation schemes,
respectively, applying fusion and/or transformations to each of the plurality of intermediate representations to obtain a plurality of transformatted representations, generating a plurality of executable programs from the plurality of transformatted representations, respectively, and selecting one or more of the plurality of executable programs as output program depending on one or more performance metrics of the plurality of executable programs. In a first implementation form of the method according to the first aspect, the performance metrics may comprise one or more of execution speed, memory usage, number of loops, sum of loop ranges, nesting depth of loops, time-to-run and time- to-compile.
In a second implementation form of the method according to the first aspect or any implementation form of the method according to the first aspect, the transformations comprise one or more of dead code elimination, code motion, common subexpression elimination, folding-and-extracting, folding- and-embedding, embedding and constant folding.
In a third implementation form of the method according to the first aspect or any implementation form of the method
according to the first aspect, applying fusion and/or
transformations to each of the plurality of intermediate representations to obtain a plurality of transformatted representations may comprise applying a plurality of
different transformations to each of the plurality of intermediate representations to obtain a plurality of transformatted representations for each of the plurality of intermediate representations .
In a fourth implementation form of the method according to the first aspect or any implementation form of the method according to the first aspect, the source code may be written in a domain-specific programming language. In the method according to the first aspect of the present invention, the limitation of conventional MSP of linearly choosing only a single translation scheme for generation of an intermediate representation to be optimized in the
transformation and fusion procedure is overcome. In
particular, the search space for the optimization is
advantageously broadened since more than one. translation scheme is employed in the beginning. Only after
transformation, fusion and subsequent generation of
executable code, a choice is to be made dependent .on the relative performance characteristics of the multitude of executable programs codes. Therefore, optimization schemes that would conventionally have potentially been discarded in the beginning of the MSP process are taken into account, leading to further optimization of MSP.
According to a second aspect of the present invention, a compiler comprises a translation device configured to receive a source code as input and to translate the source code into a plurality of intermediate representations using, a plurality of alternative translation schemes, respectively, a
transformation device coupled to the translation device and configured to apply fusion and/or transformations to each of the plurality of intermediate representations to obtain a plurality of transformatted representations, a program generator coupled to the transformation device and configured to generate a plurality of executable programs from the plurality of transformatted representations, respectively, and a selection device coupled to the program generator and configured to select one or more of the plurality of
executable programs as output program depending on one or more performance metrics of the plurality of executable programs . In a first implementation form of the compiler according to the . second aspect, the performance metrics may comprise one or more of execution speed, memory usage, number of loops, sum of loop ranges, nesting depth of loops, time-to-run and time-to-compile .
In a second implementation form of the compiler according to the second aspect or any implementation form of the compiler according to the second aspect, the transformations may comprise one or more of dead code elimination, code motion, common subexpression elimination, folding-and-extracting, folding-and-embedding, embedding and constant folding. In a third implementation form of the compiler according to the second aspect or any implementation form of the compiler according to the second aspect, the transformation device is further configured to apply a plurality of different
transformations to each of the plurality of intermediate representations to obtain a plurality of transformatted representations for each of the plurality of intermediate representations.
In a fourth implementation form of the compiler according to the second aspect or any implementation form of the compiler according to the second aspect , the source code is written in a domain- specific programming language.
According to a third aspect of the present invention, a;
computer program product, comprises a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code being configured to perform a method according to the first aspect of the present invention as such or any implementation form of the first aspect of the present invention.
BRIEF DESCRIPTION OF DRAWINGS
In the following, possible embodiments of the present invention are described with reference to the enclosed figures in more detail. Like reference numerals generally denote like or similar objects, structures, devices, steps or features . schematically illustrates a process diagram for processing source code according to an
embodiment of the present invention. schematically illustrates a block diagram of a compiler used to process source code according to a further embodiment of the present
invention. schematically illustrates a block diagram of a method for compiling source code according . to yet another embodiment of the present invention. DETAILED DESCRIPTION OF EMBODIMENTS
An intermediate representation within the sense of this disclosure comprises a data structure used inside a compiler for representing the source code in a predefined machine- readable manner which allows for machine-assisted automatic analysis and transformation of portions of source code. The intermediate representation will not only include the information contained within the source code itself but also additional meta- information about the structure, syntax and semantics of the source code as well.
A source code within the sense of this disclosure comprises any textual representation of a source program using a predetermined programming language with predetermined syntax and semantics. A source program within the sense of this disclosure comprises a computer-readable program that can. e used as input to a compiler for generating executable machine-readable code .
Fusion within the sense of this disclosure may comprise any compilation optimization procedure that extracts and merges loops from a source program into a single loop. Fusion is generally possible for any two loops iterating over the same range without referencing to each other's internal variables or parameters.
Fig. 1 schematically illustrates a flow diagram for a MSP processing of source code S. The source code S may for example be written in a domain-specific programming language (DSL) , such as Scala.
First, the source code S is translated into a plurality of intermediate representations IR1, IR2 , . IRn using a plurality of alternative translation schemes, respectively. That is, instead of just having a single translation scheme for high-level constructs in the source code S, for example mapping, filtering, reduction or other functions, a set of alternative and at least partially different translation schemes is employed for the generation of each of the intermediate representations IR1, IR2 , IRn. The number n of intermediate representations IR1, IR2 , IRn is in principle not limited to any specific number.
The intermediate representations IR1, IR2, IRn are then, each on its own, subject to fusion and/or transformations in order to obtain a plurality of transformatted representations
ORl, OR2 , ORn. The transformations may for example ..
comprise one or more of dead code elimination, code motion, common subexpression elimination, folding-and-extracting, folding-and-embedding, embedding and constant folding. Fusion may comprise loop identification, loop analysis and loop merging in each case.
It may also be possible to apply a plurality of different transformations to each of the plurality of intermediate representations IR1, IR2 , IRn to obtain a plurality of m transformatted representations for each of the plurality of intermediate representations IR1, IR2, IRn, i.e. a number of m*n transformatted representations overall for the whole number of intermediate representations IR1, IR2, . IRn.
It may also be possible to iterate the process of fusion and/or transformations according to a predeterminable transformation scheme in each case.
Fusion and transformations are measures to optimize the intermediate representations IR1, IR2, IRn on the lower level by avoiding to lose programming generality on the higher level of the source code.
Finally, the transformatted representations ORl, OR2 , ORn may be compiled into a plurality of executable programs El, E2, En. The code of the executable programs El, E2, ...„ En is then subject to a selection mechanism SM which selects one or more of the plurality of executable programs El, E2, En as best optimized output program P depending on one or more performance metrics of the plurality of executable programs El, E2, En. The selection criteria may for example include execution speed, memory usage/ number of loops, sum of loop ranges , . nesting depth of loops, time-to-run and/or time-to- compile or any combination of those metrics. Summarizing, the performance metrics chosen may be any suitable external heuristic allowing comparison of executable program code on a possibly multidimensional dichotomous scale.
Fig. 2 schematically illustrates a compiler 1, comprising a translation device 2, a transformation device 3 coupled to the translation device 2, a program generator 4 coupled to the transformation device 3, and a selection device 5 coupled to the program generator . The translation device 2 is configured to receive a source code S, for example a domain- specific programming language source code, as input and, to "translate the source code S into a plurality of intermediate representations IRk using a plurality of alternative ■ translation schemes, respectively. The transformation device 3 receives the plurality of intermediate representations IRk and applies fusion and/or transformations to each of the plurality of intermediate representations Irk in order to obtain a plurality of transformatted representations ORk:. The plurality of transfqrmatted representations ORk are subject to generation of a plurality of executable programs Ek in the program generator 4 so that the selection device 5 is able to select one or more of the plurality of executable programs Ek as output program P. This selection may be dependent on one or more performance metrics of the plurality of executable programs Ek which metrics may be evaluated on the plurality of transformatted representations ORk by the selection device 5.
The performance metrics may. comprise one or more of execution speed, memory usage, number of loops, sum of loop ranges, nesting depth of loops, time-to-run and. time-to-compile . The transformations may comprise one or more of dead code
elimination, code motion, common subexpression elimination, folding-and-extracting, folding-and-embedding, embedding and constant folding.
The transformation device may further be able to apply a plurality of different transformations to each of the
plurality of intermediate representations Irk. This leads to a plurality of m transformatted representations for each of the plurality of intermediate representations IRk, i.e. a number of m*n transformatted representations overall for the whole number of intermediate representations IRk, Fig. 3 schematically illustrates a block diagram of a method 10 for compiling source code, which may be employed in a compiler such as the compiler 1 of Fig. 2. In a first step 11, the source code S is translated into a plurality of intermediate representations using a plurality of alternative translation schemes, respectively. In a second step 12, fusion and/or transformations are applied to each of the plurality of intermediate representations to obtain a
plurality of transformatted representations. In a third step 13, a plurality of executable programs is generated from the plurality of transformatted representations, respectively, so that. in a fourth step 14, one or more of the plurality of executable programs may be selected as output program P depending on one or more performance metrics of the plurality of executable programs .
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly,, aspects of the present invention may take the form of an entirely hardware
embodiment, an entirely software embodiment - such as
firmware, resident software, micro-code or similar software - or an embodiment combining software and hardware aspects.
Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium (s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium (s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer. diskette, a hard disk, a RAM, a ROM, an erasable programmable read-only memory (EPROM or Flash memory) , an optical fiber, a portable compact disc read-only memory (CD-ROM) , an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer, readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system,
apparatus , or device .
'
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wirebound, optical fiber cable, radio frequency or any suitable combination of the foregoing.
Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program
instructions may be provided to a processor of a general purpose computer, special purpose computer, or other
programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article or manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus. provide processes for implementing -the functions/acts specified in the flowchart and/or block diagram block or blocks .
The flowchart and block diagrams in the figures illustrate the architecture, f nctionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical functions (s) . It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block
diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be
limiting of the invention. As used herein, the singular forms "a", "an" and "the" are intended, to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and/or "comprising," when used in this specification, specify. the. presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical
application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.

Claims

aims :
A method for compiling source code (S) , comprising:
translating (11) the source code (S) into a plurality of intermediate representations (IRk) using a plurality of alternative translation schemes, respectively;
applying (12) fusion and/or transformations to each of the plurality of intermediate representations (IRk) to obtain a plurality of transformatted representations (ORk) ;
generating (13) a plurality of executable programs (Ek) from the plurality of transformatted representations (ORk) , respectively; and
selecting (14) one or more of the plurality of executable programs (Ek) as output program (P) depending on one or more performance metrics of the plurality of executable programs (Ek) .
The method according to claim 1, wherein the performance metrics comprise one or more of execution speed, memory usage, number of loops, sum of loop ranges, nesting depth of loops, time-to-run and time-to-compile .
The method according to claim 1 or claim 2, wherein the transformations comprise one or more of dead code
elimination, code motion, common subexpression
elimination, folding-and-extracting , folding-and- embedding, embedding and constant folding.
The method according to one of the claims 1 to 3 , wherein applying (12) fusion and/or transformations to each of the plurality of intermediate representations: (IRk) to obtain a plurality of transformatted representations (ORk) comprises applying a plurality of different
transformations to each of the plurality of intermediate representations (IRk) to obtain a plurality of
transformatted representations for each of the plurality of intermediate representations (IRk) .
The method according to one of the claims 1 to 4 , wherein the source code (S) is written in a domain- specific programming language .
A non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code being configured to perform a method according to one of the claims 1 to 5.
A compiler (1) , comprising:
a translation device (2) configured to receive a source code (S) as input and to translate the source code (S) into a plurality of intermediate representations (IRk) using a plurality of alternative translation schemes, respectively;
a transformation device (3) coupled to the translation device (2) and configured to apply fusion and/or
transformations to each of the plurality of, intermediate representations (IRk) to obtain a plurality of
transformatted representations (ORk) ;
a program generator (4) coupled to the transformation device (3) and configured to generate a plurality of executable programs (Ek) from the plurality of
transformatted representations (ORk) , respectively; and a selection device (5) coupled to the program generator (4) and configured to select one or more of the plurality of executable programs (Ek) as output program (P) depending on one or more performance metrics of the plurality of executable programs (Ek) .
The compiler (1) according to claim 7, wherein the performance metrics comprise one or more of execution speed, memory usage, number of loops, sum of loop ranges, nesting depth of loops, time-to-run and time-to-compile .
The compiler (1) according to claim 7 or claim 8, wherein the transformations comprise one or more of dead code elimination, code motion, common subexpression
elimination, folding-and-extracting, folding-and- embedding, embedding and constant folding.
The compiler (1) according to one of the claims 7 to 9, wherein the transformation device (3) is further
configured, to apply a plurality of different
transformations to each of the plurality of intermediate representations (IRk) to obtain a plurality of
transformatted representations for each of the plurality of intermediate representations (IRk) .
The compiler (1) according to one of the claims 7 to 10, wherein the source code (S) is written in a domain- specific programming language.
PCT/RU2014/000911 2014-12-04 2014-12-04 Compiler and method for compiling source code WO2016089243A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/RU2014/000911 WO2016089243A1 (en) 2014-12-04 2014-12-04 Compiler and method for compiling source code
CN201480083834.1A CN107003884B (en) 2014-12-04 2014-12-04 Compiler and method for compiling source code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2014/000911 WO2016089243A1 (en) 2014-12-04 2014-12-04 Compiler and method for compiling source code

Publications (1)

Publication Number Publication Date
WO2016089243A1 true WO2016089243A1 (en) 2016-06-09

Family

ID=53510964

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/RU2014/000911 WO2016089243A1 (en) 2014-12-04 2014-12-04 Compiler and method for compiling source code

Country Status (2)

Country Link
CN (1) CN107003884B (en)
WO (1) WO2016089243A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112352219B (en) 2018-06-20 2022-07-26 华为技术有限公司 System and method for automated compilation
CN110147236B (en) * 2019-04-30 2023-01-31 创新先进技术有限公司 Code compiling method and device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738967B1 (en) * 2000-03-14 2004-05-18 Microsoft Corporation Compiling for multiple virtual machines targeting different processor architectures

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4652680B2 (en) * 2003-12-22 2011-03-16 パナソニック株式会社 Compiling method and apparatus, and compiler
JP2009048252A (en) * 2007-08-14 2009-03-05 Oki Electric Ind Co Ltd Program conversion device and compiler program

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738967B1 (en) * 2000-03-14 2004-05-18 Microsoft Corporation Compiling for multiple virtual machines targeting different processor architectures

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ROMPF, T.; SUJEETH, A.K.; AMIN, N.; BROWN, K.J; JOVANOVIC, V; LEE, H -J; JONNALAGEDDA, M.; GLUKOTUN, K; ODERSKY, M., POPL'13: 40TH ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES, January 2013 (2013-01-01)
ROMPF, T; ODERSKY, M .: "ACM S gplan Notices", vol. 46, 2010, ACM, article "Lightweight modular staging: a pragmatic approach to runtime code generation and complied DSLs"
TAHA, W.: "Domain Specific Program Generation", 2004, SPRINGER, article "A gentle introduction to multi-stage programming", pages: 30 - 50

Also Published As

Publication number Publication date
CN107003884B (en) 2019-12-24
CN107003884A (en) 2017-08-01

Similar Documents

Publication Publication Date Title
US10942734B2 (en) Software dependency shading
US10534590B2 (en) Dynamic recompilation techniques for machine learning programs
US7992140B2 (en) Compiler supporting programs as data objects
CN110149800B (en) Apparatus for processing abstract syntax tree associated with source code of source program
Ahmad et al. Automatically translating image processing libraries to halide
US20140165035A1 (en) Expansion and reduction of source code for code refactoring
US9383979B2 (en) Optimizing intermediate representation of script code by eliminating redundant reference count operations
US9841953B2 (en) Pluggable components for runtime-image generation
US10055399B2 (en) Method and system for linear generalized LL recognition and context-aware parsing
US20110246962A1 (en) State machine expressions in database operators
US20090187884A1 (en) Refining tail call optimizations at link-time
CN109542455B (en) Contract execution method, contract reduction method, device, and storage medium
Ahmad et al. Leveraging parallel data processing frameworks with verified lifting
US8516459B2 (en) XSLT-specific XJIT compiler
Khalate et al. An LLVM-based C++ compiler toolchain for variational hybrid quantum-classical algorithms and quantum accelerators
WO2016089243A1 (en) Compiler and method for compiling source code
CN115951890B (en) Method, system and device for transcoding between different front end frameworks
CN111158665B (en) Code generation method and device, electronic equipment and storage medium
Komatsu et al. Migration of an atmospheric simulation code to an OpenACC platform using the Xevolver framework
US9697021B2 (en) Modifiable high-level intermediate representation of source code
US20160350090A1 (en) Information processing apparatus, method of compiling, and storage medium
Mustafa et al. Portable section-level tuning of compiler parallelized applications
Komatsu et al. Translation of large-scale simulation codes for an OpenACC platform using the Xevolver framework
McDonell et al. Ghostbuster: A tool for simplifying and converting GADTs
Grelck et al. Axis control in SAC

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14877559

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14877559

Country of ref document: EP

Kind code of ref document: A1