Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Pramod G. Joisha

dblp:37/2426 · DBLP profile ↗
← Back
16ranked-venue papers
12as first author
0since 2021 · last 2014
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 10 · 9 first-authorSystems, architecture and hardware · 7 · 3 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
5 papers
Program analysis · 58% Compilers and program optimization · 29% Programming languages and type systems · 13%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Parallel and multicore computing · 100%

Topics — the 10 heaviest of 12, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
data flow analysis
0.322012
On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code · ACM Trans. Program. Lang. Syst. 2012
A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code · POPL 2011
Parallel and multicore computing
shared-memory parallel programs
0.222012
On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code · ACM Trans. Program. Lang. Syst. 2012
A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code · POPL 2011
Parallel and multicore computing
parallel programming models
0.222012
On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code · ACM Trans. Program. Lang. Syst. 2012
The Efficient Computation of Ownership Sets in HPF · IEEE Trans. Parallel Distributed Syst. 2001
Program analysis › data flow analysis
parallel dataflow analysis
0.112012
On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code · ACM Trans. Program. Lang. Syst. 2012
Programming languages and type systems
type inference
0.112006
An algebraic array shape inference system for MATLAB · ACM Trans. Program. Lang. Syst. 2006
Compilers and program optimization
compiler optimization
0.012012
On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code · ACM Trans. Program. Lang. Syst. 2012
Compilers and program optimization › memory optimization
data locality optimization
0.012001
The Efficient Computation of Ownership Sets in HPF · IEEE Trans. Parallel Distributed Syst. 2001
Compilers and program optimization
parallelizing compiler
0.012001
The Efficient Computation of Ownership Sets in HPF · IEEE Trans. Parallel Distributed Syst. 2001
Programming languages and type systems › type systems
dynamic typing
0.012006
An algebraic array shape inference system for MATLAB · ACM Trans. Program. Lang. Syst. 2006
Parallel and multicore computing › parallel programming models › data-parallel language
high performance fortran
0.012001
The Efficient Computation of Ownership Sets in HPF · IEEE Trans. Parallel Distributed Syst. 2001

Methods — techniques the papers use, named apart from their topics

siloing · 0.3data-flow transformation · 0.1data flow transformation · 0.1term rewriting · 0.1fourier-motzkin elimination · 0.1algebraic system · 0.1
YearPublicationVenuePosition
2014 Sticky tries: fast insertions, fast lookups, no deletions for large key universes
abstract
We present the sticky trie, a new variant of the standard trie data structure that achieves high-performing atomic insertions and lookups for large key universes by precluding deletions. It has applications in several areas, including address tracking, logging, and garbage collection. By leveraging features of a modern operating system, we show how a runtime can exploit the absence of deletions to realize an efficient sticky-trie implementation.
Pramod G. Joisha
ISMM1
2012 On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code
abstract
A large body of data-flow analyses exists for analyzing and optimizing sequential code. Unfortunately, much of it cannot be directly applied on parallel code, for reasons of correctness. This article presents a technique to automatically, aggressively, yet safely apply sequentially-sound data-flow transformations, without change , on shared-memory programs. The technique is founded on the notion of program references being “siloed” on certain control-flow paths. Intuitively, siloed references are free of interference from other threads within the confines of such paths. Data-flow transformations can, in general, be unblocked on siloed references. The solution has been implemented in a widely used compiler. Results on benchmarks from SPLASH-2 show that performance improvements of up to 41% are possible, with an average improvement of 6% across all the tested programs over all thread counts.
Pramod G. Joisha, Robert S. Schreiber, Prithviraj Banerjee, Hans-Juergen Boehm, Dhruva R. Chakrabarti
ACM Trans. Program. Lang. Syst.1
2011 The runtime abort graph and its application to software transactional memory optimization
abstract
Programming with atomic sections is a promising alternative to locks since it raises the abstraction and removes deadlocks at the programmer level. However, implementations of atomic sections using software transactional memory (STM) support have significant bookkeeping overheads. Additionally, because of the speculative nature of transactions, aborts can be frequent greatly lowering application performance. Thus regardless of the STM implementation, tools need to be available to programmers that provide insights into the runtime characteristics of an application as well as provide means to improve performance. This paper attempts to identify the source of an abort at the granularity of a transactional memory reference. The resulting abort patterns are captured in the form of a runtime abort graph (RAG). We show how to build this graph efficiently using compiler instrumentation. We then describe a technique that works on the RAG and automatically recommends STM policy changes to improve performance. Detailed experimental results are presented showing the tradeoffs in building the RAG and its use in reducing aborts and improving performance.
Dhruva R. Chakrabarti, Prithviraj Banerjee, Hans-Juergen Boehm, Pramod G. Joisha, Robert S. Schreiber
CGO4
2011 A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code
abstract
A large body of data-flow analyses exists for analyzing and optimizing sequential code. Unfortunately, much of it cannot be directly applied on parallel code, for reasons of correctness. This paper presents a technique to automatically, aggressively, yet safely apply sequentially-sound data-flow transformations, without change, on shared-memory programs. The technique is founded on the notion of program references being "siloed" on certain control-flow paths. Intuitively, siloed references are free of interference from other threads within the confines of such paths. Data-flow transformations can, in general, be unblocked on siloed references.
Pramod G. Joisha, Robert S. Schreiber, Prithviraj Banerjee, Hans-Juergen Boehm, Dhruva R. Chakrabarti
POPL1
2008 A principled approach to nondeferred reference-counting garbage collection
abstract
Nondeferred reference-counting (RC) garbage collection is among the oldest memory-management methods. Despite offering unique advantages, little attention has been paid on how to correctly implement it for modern programming languages. This paper revisits this collection method and describes how to implement it for a modern object-oriented language in an optimizing compiler.
Pramod G. Joisha
VEE1
2007 Overlooking roots: a framework for making nondeferred reference-counting garbage collection fast
abstract
Numerous optimizations exist for improving the performance of nondeferred reference-counting (RC) garbage collection. Their designs are ad hoc, intended to exploit different count removal opportunities. This paper shows that many of these optimizations can be unified using a notion called overlooking roots. The paper also shows how the notionenables more powerful versions of past optimizations and makes new optimizations possible. While recent static analyses have dramatically improved nondeferred RC performance, margins relative to the deferred variant were still significant in the worst case. With the optimizations made possible by overlooking roots, we show that these margins can be reduced to within 4% on nearly all programs in a test suite, at even large heap sizes, and to within 23% in the worst case.
Pramod G. Joisha
ISMM1
2007 A translator system for the MATLAB language
abstract
Abstract A whole‐program MATLAB to C translation system is presented. The paper outlines the motivation for the problem, discusses the system's architecture, its features and limitations. The translator's operation is explained using an example input program. Details are given on how the system implements and specializes some of the language's built‐in primitives. Finally, the paper reports measurements evaluating the execution time and memory usage of the translated sources, and the compilation time required for the translations. Copyright © 2006 John Wiley & Sons, Ltd.
Pramod G. Joisha, Prithviraj Banerjee
Softw. Pract. Exp.1
2006 Compiler optimizations for nondeferred reference-counting garbage collection
abstract
Reference counting is a well-known technique for automatic memory management, offering unique advantages over other forms of garbage collection. However, on account of the high costs associated with the maintenance of up-to-date tallies of references from the stack, deferred variants are typically used in modern implementations. This partially sacrifices some of the benefits of non-deferred reference-counting (RC) garbage collection, like the immediate reclamation of garbage and short collector pause times.This paper presents a series of optimizations that target the stack and substantially enhance the throughput of nondeferred RC collection. A key enabler is a new static analysis and optimization called RC subsumption that significantly reduces the overhead of maintaining the stack contribution to reference counts. We report execution time improvements on a benchmark suite of ten C# programs, and show how RC subsumption, aided with other optimizations, improves the performance of nondeferred RC collection by as much as a factor of 10, making possible running times that are within 32% of that with an advanced traversal-based collector on seven programs, and 19% of that with a deferred RC collector on eight programs. This is in the context of a baseline RC implementation that is typically at least a factor of 6 slower than the tracing collector and a factor of 5 slower than the deferred RC collector.
Pramod G. Joisha
ISMM1
2006 An algebraic array shape inference system for MATLAB
abstract
The problem of inferring array shapes ahead of time in languages that exhibit both implicit and dynamic typing is a critical one because the ramifications of its solution are the better organization of array storage through compaction and reuse, and the generation of high-performance code through specialization by shape. This article addresses the problem in a prototypical implicitly and dynamically typed array language called MATLAB. The approach involves modeling the language's shape semantics using an algebraic system, and applying term rewriting techniques to evaluate expressions under this algebra. Unlike prior efforts at array shape determination, this enables the deduction of valuable shape information even when array extents are compile-time unknowns. Furthermore, unlike some previous methods, our approach doesn't impose monotonicity requirements on an operator's shape semantics. The work also describes an inference methodology and reports measurements from a type inference engine called MAGICA. In a benchmark suite of 17 programs, the shape inference subsystem in MAGICA detected the equivalence of over 61% of the symbolic shapes in six programs, and over 57% and 37% of the symbolic shapes in two others. In the remaining nine programs, all array shapes were inferred to be compile-time constants.
Pramod G. Joisha, Prithviraj Banerjee
ACM Trans. Program. Lang. Syst.1
2003 The MAGICA Type Inference Engine for MATLAB
Pramod G. Joisha, Prithviraj Banerjee
CC1
2003 Static array storage optimization in MATLAB
abstract
Static array storage optimization in MATLAB.
Pramod G. Joisha, Prithviraj Banerjee
PLDI1
2001 A framework for efficient reuse of binary code in Java
abstract
This paper presents a compilation framework that enables efficient sharing of executable code across distinct Java Virtual Machine (JVM) instances. High-performance JVMs rely on run-time compilation, since static compilation cannot handle many dynamic features of Java. These JVMs suffer from large memory footprints and high startup costs, which are serious problems for embedded devices (such as hand held personal digital assistants and cellular phones) and scalable servers. A recently proposed approach called quasi-static compilation overcomes these difficulties by reusing precompiled binary images after performing validation checks and stitching on them (i.e., adapting them to a new execution context), falling back to interpretation or dynamic compilation whenever necessary. However, the requirement in our previous design to duplicate and modify the executable binary image for stitching is a major drawback when targeting embedded systems and scalable servers. In this paper, we describe a new approach that allows stitching to be done on an indirection table, leaving the executable code unmodified and therefore writable to readonly memory. On embedded devices, this saves precious space in writable memory. On scalable servers, this allows a single image of the executable to be shared among multiple JVMs, thus improving scalability. Furthermore, we describe a novel technique for dynamically linking classes that uses traps to detect when a class should be linked and initialized. Like back-patching, the technique allows all accesses after the first to proceed at full speed, but unlike back-patching, it avoids the modification of running code. We have implemented this approach in the Quicksilver quasi-static com-
Pramod G. Joisha, Samuel P. Midkiff, Mauricio J. Serrano, Manish Gupta 0002
ICS1
2001 The Efficient Computation of Ownership Sets in HPF
abstract
Ownership sets are fundamental to the partitioning of program computations across processors by the owner-computes rule. These sets arise due to the mapping of arrays onto processors. In this paper, we focus on how ownership sets can be efficiently determined in the context of the HPF language and show how the structure of these sets can be symbolically characterized in the presence of arbitrary array alignment and array distribution directives. Our starting point is a system of equalities and inequalities due to Ancourt et al. (1995) that captures the array mapping problem in HPF. We arrive at a refined system that enables us to efficiently solve for the ownership set using the Fourier-Motzkin Elimination technique and that requires the course vector as the only auxiliary vector. The formulation makes it possible to enumerate the elements of the ownership set exactly once, a feature that is very beneficial when such sets are applied to handle DO loops qualified by HPF's INDEPENDENT directive. We develop important and general properties pertaining to HPF alignments and distributions and show how they can be used to eliminate redundant communication due to array replication. Polynomial-time schemes that determine whether the ownership set of a particular processor, with respect to some array, is the empty set or whether the ownership set of every processor, with respect to some array, is the empty set, are presented. We show how distribution directives with unspecified processor meshes can be efficiently handled at compile time. We also show how to avoid the generation of communication code when pairs of array references are ultimately mapped onto the same processors. Experimental data demonstrating the improved code performance that the latter optimization enables is presented and discussed.
Pramod G. Joisha, Prithviraj Banerjee
IEEE Trans. Parallel Distributed Syst.1
2000 A MATLAB Compiler for Distributed, Heterogeneous, Reconfigurable Computing Systems
abstract
Recently, high-level languages such as MATLAB have become popular in prototyping algorithms in domains such as signal and image processing. Many of these applications whose subtasks have diverse execution requirements, often employ distributed, heterogeneous, reconfigurable systems. These systems consist of an interconnected set of heterogeneous processing resources that provide a variety of architectural capabilities. The objective of the MATCH (MATLAB Compiler for Heterogeneous Computing Systems) compiler project at Northwestern University is to make it easier for the users to develop efficient code for distributed heterogeneous, reconfigurable computing systems. Towards this end we are implementing and evaluating an experimental prototype of a software system that will take MATLAB descriptions of various applications, and automatically map them on to a distributed computing environment consisting of embedded processors, digital signal processors and field-programmable gale arrays built from commercial off-the-shelf components. We provide an overview of the MATCH compiler and discuss the testbed which is being used to demonstrate our ideas. We present preliminary experimental results on some benchmark MATLAB programs with the use of the MATCH compiler.
Prithviraj Banerjee, U. Nagaraj Shenoy, Alok N. Choudhary, Scott Hauck, C. Bachmann, Malay Haldar, Pramod G. Joisha, Alex K. Jones, Abhay Kanhere, Anshuman Nayak, S. Periyacheri, M. Walkden, David Zaretsky
FCCM7
2000 Match Virtual Machine: An Adaptive Runtime System to Execute MATLAB in Parallel
abstract
MATLAB is one of the most popular languages for desktop numerical computations as well as for signal and image processing applications. Applying parallel processing techniques to improve performance of MATLAB codes has been the goal of many recent works. Most current frameworks require the user to specify parallelism and/or information regarding type/shape of the variables, thereby sacrificing the user friendliness which is one of the most popular MATLAB features. Other systems work on a restricted subset of MATLAB, thereby limiting the class of applications MATLAB can support. We present a runtime system capable of executing MATLAB code in parallel without any user intervention. The runtime system performs automatic parallelization and type/shape inference of the code at runtime. A unique feature of the runtime system is its capability to automatically adapt to changes in the underlying architecture, making it particularly useful for systems where predicting performance statically is difficult. We present experimental results obtained for the runtime system running on SGI Origin2000 shared memory multiprocessor.
Malay Haldar, Anshuman Nayak, Abhay Kanhere, Pramod G. Joisha, U. Nagaraj Shenoy, Alok N. Choudhary, Prithviraj Banerjee
ICPP4
1998 WADE: a Web-based automated parallel CAD environment
abstract
We present a novel framework of a Web-based automated parallel CAD environment. The goal of this project is to make available to the CAD community a growing number of design and test applications that support standard interfaces and execute efficiently in a parallel environment. The design files of a user working on a remote machine are transparently shipped to the local Compute Center, the relevant computation is performed in a parallel environment and then the results are returned back to the user. A job submission and scheduling tool ensures proper load balance and maximal usage of the various parallel machines. The whole process is done efficiently and transparently without the user having to bother about any low-level details. At present, a number of parallel CAD tools including a placement tool, a fault simulator and a VHDL simulator are supported. Results from a preliminary implementation are impressive and show the feasibility of the approach.
Dhruva R. Chakrabarti, Pramod G. Joisha, John A. Chandy, Krishnaswamy Krishnaswamy, Venkatram Krishnaswamy, Prithviraj Banerjee
HiPC2