Results 1 - 10
of
19
Hierarchical phrase-based translation
- Computational Linguistics
, 2007
"... We present a statistical machine translation model that uses hierarchical phrases—phrases that contain subphrases. The model is formally a synchronous context-free grammar but is learned from a parallel text without any syntactic annotations. Thus it can be seen as combining fundamental ideas from b ..."
Abstract
-
Cited by 209 (4 self)
- Add to MetaCart
We present a statistical machine translation model that uses hierarchical phrases—phrases that contain subphrases. The model is formally a synchronous context-free grammar but is learned from a parallel text without any syntactic annotations. Thus it can be seen as combining fundamental ideas from both syntax-based translation and phrase-based translation. We describe our system’s training and decoding methods in detail, and evaluate it for translation speed and translation accuracy. Using BLEU as a metric of translation accuracy, we find that our system performs significantly better than the Alignment Template System, a state-of-the-art phrasebased system. 1.
Better k-best parsing
, 2005
"... We discuss the relevance of k-best parsing to recent applications in natural language processing, and develop efficient algorithms for k-best trees in the framework of hypergraph parsing. To demonstrate the efficiency, scalability and accuracy of these algorithms, we present experiments on Bikel’s i ..."
Abstract
-
Cited by 103 (14 self)
- Add to MetaCart
We discuss the relevance of k-best parsing to recent applications in natural language processing, and develop efficient algorithms for k-best trees in the framework of hypergraph parsing. To demonstrate the efficiency, scalability and accuracy of these algorithms, we present experiments on Bikel’s implementation of Collins ’ lexicalized PCFG model, and on Chiang’s CFG-based decoder for hierarchical phrase-based translation. We show in particular how the improved output of our algorithms has the potential to improve results from parse reranking systems and other applications. 1
PyPy’s Approach to Virtual Machine Construction
- In Dynamic Languages Symposium (DSL ’06
, 2006
"... interpreters, run-time environments; F.3.2 [Logics ..."
Abstract
-
Cited by 27 (0 self)
- Add to MetaCart
interpreters, run-time environments; F.3.2 [Logics
Trace-based Just-in-Time Type Specialization for Dynamic Languages
"... Dynamic languages such as JavaScript are more difficult to compile than statically typed ones. Since no concrete type information is available, traditional compilers need to emit generic code that can handle all possible type combinations at runtime. We present an alternative compilation technique f ..."
Abstract
-
Cited by 26 (2 self)
- Add to MetaCart
Dynamic languages such as JavaScript are more difficult to compile than statically typed ones. Since no concrete type information is available, traditional compilers need to emit generic code that can handle all possible type combinations at runtime. We present an alternative compilation technique for dynamically-typed languages that identifies frequently executed loop traces at run-time and then generates machine code on the fly that is specialized for the actual dynamic types occurring on each path through the loop. Our method provides cheap inter-procedural type specialization, and an elegant and efficient way of incrementally compiling lazily discovered alternative paths through nested loops. We have implemented a dynamic compiler for JavaScript based on our technique and we have measured speedups of 10x and more for certain benchmark programs.
RATA: Rapid Atomic Type Analysis by Abstract Interpretation. Application to
"... Abstract. We introduce RATA, a static analysis based on abstract interpretation for the rapid inference of atomic types in JavaScript programs. RATA enables aggressive type specialization optimizations in dynamic languages. RATA is a combination of an interval analysis (to determine the range of var ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Abstract. We introduce RATA, a static analysis based on abstract interpretation for the rapid inference of atomic types in JavaScript programs. RATA enables aggressive type specialization optimizations in dynamic languages. RATA is a combination of an interval analysis (to determine the range of variables), a kind analysis (to determine if a variable may assume fractional values, or NaN), and a variation analysis (to relate the values of variables). The combination of those three analyses allows our compiler to specialize Float64 variables (the only numerical type in JavaScript) to Int32 variables, providing large performance improvements (up to 7.7×) in some of our benchmarks. 1
Towards practical incremental recomputation for scientists: An implementation for the Python language
- In Proc. TAPP ’10
, 2010
"... Computational scientists often prototype data analysis scripts using high-level languages like Python. To speed up execution times, they manually refactor their scripts into stages (separate functions) and write extra code to save intermediate results to disk in order to avoid recomputing them in su ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
Computational scientists often prototype data analysis scripts using high-level languages like Python. To speed up execution times, they manually refactor their scripts into stages (separate functions) and write extra code to save intermediate results to disk in order to avoid recomputing them in subsequent runs. To eliminate this burden, we enhanced the Python interpreter to automatically memoize (save) the results of long-running function executions to disk, manage dependencies between code edits and saved results, and re-use memoized results rather than re-executing those functions when guaranteed safe to do so. There is a ∼20 % run-time slowdown during the initial run, but subsequent runs can speed up by several orders of magnitude. Using our enhanced interpreter, scientists can write simple and maintainable code that also runs fast after minor edits, without having to learn any new programming languages or constructs. 1
Alias Analysis for Optimization of Dynamic Languages ∗
"... Dynamic languages such as Python allow programs to be written more easily using high-level constructs such as comprehensions for queries and using generic code. Efficient execution of programs then requires powerful optimizations— incrementalization of expensive queries and specialization of generic ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Dynamic languages such as Python allow programs to be written more easily using high-level constructs such as comprehensions for queries and using generic code. Efficient execution of programs then requires powerful optimizations— incrementalization of expensive queries and specialization of generic code. Effective incrementalization and specialization of dynamic languages require precise and scalable alias analysis. This paper describes the development and experimental evaluation of a may-alias analysis for a full dynamic objectoriented language, for program optimization by incrementalization and specialization. The analysis is flow-sensitive; we show that this is necessary for effective optimization of dynamic languages. It uses precise type analysis and a powerful form of context sensitivity, called trace sensitivity, to further improve analysis precision. It uses a compressed representation to significantly reduce the memory used by flowsensitive analyses. We evaluate the effectiveness of this analysis and 17 variants of it for incrementalization and specialization of Python programs, and we evaluate the precision, memory usage, and running time of these analyses on programs of diverse sizes. The results show that our analysis has acceptable precision and efficiency and represents the best trade-off between them compared to the variants.
Behavioral Synthesis of PSL Assertions
, 2007
"... The ever-increasing complexity of today’s hardware designs also increases the challenge of verifying those designs. With more transistors crammed onto chips, the design’s state space (which directly relates to its complexity) can be considered to grow exponentially, while the computational power (wh ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
The ever-increasing complexity of today’s hardware designs also increases the challenge of verifying those designs. With more transistors crammed onto chips, the design’s state space (which directly relates to its complexity) can be considered to grow exponentially, while the computational power (which relates to the ability to verify the design) only grows linearly. This results in the so-called verification gap: the efforts necessary to provide satisfying verification results are rising. In today’s larger projects the verification engineers may even outnumber the design engineers.
Thus, the semiconductor industry is constantly searching for ways to minimize the verification efforts while still achieving the desired results. Assertion-based verification (ABV), which can be used to specify both the
design’s properties and behavior is constantly catching on. Using specialized languages such as PSL (Property Specification Language) or SVA (SystemVerilog Assertions) allows the engineers to define properties during the implementation or even during the specification phase. Those properties can be used in formal, semi-formal, or functional tools to verify the design’s correctness.
An additional trend in today’s hardware verification is simulation acceleration and emulation. These approaches source parts of the design under verification out on an FPGA, where they can be run by orders of magnitude faster than in simulation.
Such acceleration systems rely on the ability to synthesize parts of the design under verification, however: otherwise they could not source them out into hardware. Therefore, in order to deploy them in an ABV-based project,
a way to incorporate the assertions in hardware needs to be found. This is what this thesis aims to do: it will provide a way to generate synthesizable HDL code from PSL assertions.
First, PSL will be divided in base cases, denoted PSLmin, and more complex constructs that can be rewritten to the base cases. Then an automatatheoretic approach for representing PSLmin will be shown before a simple tool implementing the algorithms described is presented and simulation, synthesis, and emulation results are given.
Evaluation of a Just-in-Time Compiler Retrofitted for PHP
"... Programmers who develop Web applications often use dynamic scripting languages such as Perl, PHP, Python, and Ruby. For general purpose scripting language usage, interpreter-based implementations are efficient and popular but the server-side usage for Web application development implies an opportuni ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Programmers who develop Web applications often use dynamic scripting languages such as Perl, PHP, Python, and Ruby. For general purpose scripting language usage, interpreter-based implementations are efficient and popular but the server-side usage for Web application development implies an opportunity to significantly enhance Web server throughput. This paper summarizes a study of the optimization of PHP script processing. We developed a PHP processor, P9, by adapting an existing production-quality just-in-time (JIT) compiler for a Java virtual machine, for which optimization technologies have been well-established, especially for server-side application. This paper describes and contrasts microbenchmarks and SPECweb2005 benchmark results for a well-tuned configuration of a traditional PHP interpreter and our JIT compiler-based implementation, P9. Experimental results with the microbenchmarks show 2.5-9.5x advantage with P9, and the SPECweb2005 measurements show 20-30 % improvements. These results show that the acceleration of dynamic scripting language processing does matter in a realistic Web application server environment. CPU usage profiling shows our simple JIT compiler introduction reduces the PHP core runtime overhead from 45 % to 13 % for a SPECweb2005 scenario, implying that further improvements of dynamic compilers would provide little additional return unless other major overheads such as heavy memory copy between the language runtime and Web server frontend are reduced.

