María Jesús Garzarán

dblp:95/6451 · also Maria Garzaran 0001 · DBLP profile ↗
← Back
43ranked-venue papers
2as first author
1since 2021 · last 2024
—ORCID · none

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

Systems, architecture and hardware · 34 · 2 first-author · 1 since 2021Software engineering, systems software and programming languages · 11Applied, interdisciplinary, general and emerging computing · 1

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.

Computer architecture, parallel and distributed computing, and storage systems
17 papers
High-performance computing · 40% Parallel and multicore computing · 32% GPUs and heterogeneous computing · 10%
Software engineering, system software, and programming languages
9 papers
Compilers and program optimization · 57% Runtime systems and virtual machines · 40% Programming languages and type systems · 3%

Topics — the 30 heaviest of 50, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
High-performance computing
scientific computing systems
0.812024
MProt-DPO: Breaking the ExaFLOPS Barrier for Multimodal Protein Design Workflows with Direct Preference Optimization · SC 2024
Runtime systems and virtual machines › virtual machine implementation
javascript engine
0.622019
NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory · HPCA 2019
Improving JavaScript performance by deconstructing the type system · PLDI 2014
High-performance computing › sparse linear algebra
sparse matrix computation
0.422016
Autotuning Runtime Specialization for Sparse Matrix-Vector Multiplication · ACM Trans. Archit. Code Optim. 2016
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
High-performance computing › sparse linear algebra › sparse matrix computation
sparse matrix-vector multiplication
0.422016
Autotuning Runtime Specialization for Sparse Matrix-Vector Multiplication · ACM Trans. Archit. Code Optim. 2016
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.412019
NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory · HPCA 2019
High-performance computing
collective communication
0.312018
Framework for scalable intra-node collective operations using shared memory · SC 2018
Parallel and multicore computing › parallel computing › parallel communication
shared-memory communication
0.312018
Framework for scalable intra-node collective operations using shared memory · SC 2018
Compilers and program optimization
autotuning
0.212016
Autotuning Runtime Specialization for Sparse Matrix-Vector Multiplication · ACM Trans. Archit. Code Optim. 2016
Compilers and program optimization › program specialization
runtime specialization
0.212016
Autotuning Runtime Specialization for Sparse Matrix-Vector Multiplication · ACM Trans. Archit. Code Optim. 2016
GPUs and heterogeneous computing › CPU-GPU heterogeneous computing
CPU-GPU scheduling
0.212016
Mapping Streaming Applications on Commodity Multi-CPU and GPU On-Chip Processors · IEEE Trans. Parallel Distributed Syst. 2016
Parallel and multicore computing
parallel graph algorithms
0.212016
DSMR: a shared and distributed memory algorithm for single-source shortest path problem · PPoPP 2016
Parallel and multicore computing
parallel scheduling
0.212016
Mapping Streaming Applications on Commodity Multi-CPU and GPU On-Chip Processors · IEEE Trans. Parallel Distributed Syst. 2016
Parallel and multicore computing › parallel algorithms › graph algorithms
single-source shortest path
0.212016
DSMR: a shared and distributed memory algorithm for single-source shortest path problem · PPoPP 2016
Reconfigurable computing and FPGAs › application mapping
streaming application mapping
0.212016
Mapping Streaming Applications on Commodity Multi-CPU and GPU On-Chip Processors · IEEE Trans. Parallel Distributed Syst. 2016
GPUs and heterogeneous computing
GPU and heterogeneous computing
0.212024
MProt-DPO: Breaking the ExaFLOPS Barrier for Multimodal Protein Design Workflows with Direct Preference Optimization · SC 2024
Compilers and program optimization › dynamic optimization
dynamic language optimization
0.212014
Improving JavaScript performance by deconstructing the type system · PLDI 2014
Compilers and program optimization › loop optimization
loop tiling
0.212014
Optimal Parallelogram Selection for Hierarchical Tiling · ACM Trans. Archit. Code Optim. 2014
High-performance computing › sparse linear algebra
matrix ordering
0.212014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
Parallel and multicore computing
parallel algorithms
0.212014
Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction · SC 2014
Hardware accelerators and domain-specific architectures › vision accelerator
object detection accelerator
0.212013
Easy, fast, and energy-efficient object detection on heterogeneous on-chip architectures · ACM Trans. Archit. Code Optim. 2013
GPUs and heterogeneous computing › heterogeneous programming models
OpenCL
0.212013
Easy, fast, and energy-efficient object detection on heterogeneous on-chip architectures · ACM Trans. Archit. Code Optim. 2013
Compilers and program optimization › loop transformation
tiling
0.122008
Programming with tiles · PPoPP 2008
Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006
Parallel and multicore computing › speculative parallelization
thread-level speculation
0.132005
Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors · ACM Trans. Archit. Code Optim. 2005
Tradeoffs in Buffering Memory State for Thread-Level Speculation in Multiprocessors · HPCA 2003
Removing architectural bottlenecks to the scalability of speculative parallelization · ISCA 2001
Parallel and multicore computing › transactional memory
hardware transactional memory
0.112019
NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory · HPCA 2019
Memory systems
speculative memory state buffering
0.122005
Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors · ACM Trans. Archit. Code Optim. 2005
Tradeoffs in Buffering Memory State for Thread-Level Speculation in Multiprocessors · HPCA 2003
Compilers and program optimization › dynamic optimization
inline caching
0.112017
ShortCut: Architectural Support for Fast Object Access in Scripting Languages · ISCA 2017
Compilers and program optimization › memory optimization
data layout transformation
0.112008
Programming with tiles · PPoPP 2008
Parallel and multicore computing
parallel programming models
0.112008
Programming with tiles · PPoPP 2008
Compilers and program optimization › memory optimization
data locality optimization
0.112006
Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006
Parallel and multicore computing
data-parallel programming
0.112006
Programming for parallelism and locality with hierarchically tiled arrays · PPoPP 2006

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

within-transaction optimization · 0.8multimodal generative models · 0.8mixed precision · 0.8hardware transactional memory · 0.8direct preference optimization · 0.8dispatcher optimization · 0.6architectural support · 0.6auto-tuning · 0.5feature-based prediction · 0.2dijkstra's algorithm · 0.2delta-stepping · 0.2code generation · 0.2type system deconstruction · 0.2execution time model · 0.2automatic tile shape selection · 0.2
YearPublicationVenuePosition
2024 MProt-DPO: Breaking the ExaFLOPS Barrier for Multimodal Protein Design Workflows with Direct Preference Optimization
abstract
We present a scalable, end-to-end workflow for protein design. By augmenting protein sequences with natural language descriptions of their biochemical properties, we train generative models that can be preferentially aligned with protein fitness landscapes. Through complex experimental-and simulation-based observations, we integrate these measures as preferred parameters for generating new protein variants and demonstrate our workflow on five diverse supercomputers. We achieve >1 ExaFLOPS sustained performance in mixed precision on each supercomputer and a maximum sustained performance of 4.11 Ex-aFLOPS and peak performance of 5.57 ExaFLOPS. We establish the scientific performance of our model on two tasks: (1) across a predetermined benchmark dataset of deep mutational scanning experiments to optimize the fitness-determining mutations in the yeast protein HIS7, and (2) in optimizing the design of the enzyme malate dehydrogenase to achieve lower activation barriers (and therefore increased catalytic rates) using simulation data. Our implementation thus sets high watermarks for multimodal protein design workflows.
Gautham Dharuman, Kyle Hippe, Alex Brace, Sam Foreman, Väinö Hatanpää, Varuni Sastry 0001, Huihuo Zheng, Logan T. Ward, Servesh Muralidharan, Archit Vasan, Bharat Kale, Carla M. Mann, Yun-Hsuan Cheng, Yuliana Zamora, Shengchao Liu, Chaowei Xiao, Murali Emani, Tom Gibbs, Mahidhar Tatineni, Deepak Canchi, Jerome Mitchell, Koichi Yamada, María Jesús Garzarán, Michael E. Papka, Ian T. Foster, Rick L. Stevens, Anima Anandkumar, Venkatram Vishwanath, Arvind Ramanathan
SC24
2020 Minimizing the usage of hardware counters for collective communication using triggered operations
Nusrat S. Islam, Gengbin Zheng, Sayantan Sur, Akhil Langer, María Jesús Garzarán
Parallel Comput.5
2019 NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory
abstract
Scripting languages' inferior performance stems from compilers lacking enough static information. To address this limitation, they use JIT compilers organized into multiple tiers, with higher tiers using profiling information to generate high-performance code. Checks are inserted to detect incorrect assumptions and, when a check fails, execution transfers to a lower tier. The points of potential transfer between tiers are called Stack Map Points (SMPs). They require a consistent state in both tiers and, hence, limit code optimization across SMPs in the higher tier. This paper examines the code generated by a state-of-theart JavaScript compiler and finds that the code has a high frequency of SMPs. These SMPs rarely cause execution to transfer to lower tiers. However, both the optimization-limiting effect of the SMPs, and the overhead of the SMP-guarding checks contribute to scripting languages' low performance. To tackle this problem, we extend the compiler to generate hardware transactions around SMPs, and perform simple within-transaction optimizations enabled by transactions. We target emerging lightweight HTM systems and call our changes NoMap. We evaluate NoMap on the SunSpider and Kraken suites. We find that NoMap lowers the instruction count by an average of 14.2% and 11.5%, and the execution time by an average of 16.7% and 8.9%, for SunSpider and Kraken, respectively.
Thomas Shull, Jiho Choi, María Jesús Garzarán, Josep Torrellas
HPCA3
2019 Software combining to mitigate multithreaded MPI contention
abstract
Efforts to mitigate lock contention from concurrent threaded accesses to MPI have reduced contention through fine-grained locking, avoided locking altogether by offloading communication to dedicated threads, or alleviated negative side effects from contention by using better lock management protocols. The blocking nature of lock-based methods, however, wastes the asynchrony benefits of nonblocking MPI operations, and the offloading model sacrifices CPU resources and incurs unnecessary software offloading overheads under low contention.
Abdelhalim Amer, Charles Archer, Michael Blocksome, Chongxiao Cao, Michael Chuvelev, Hajime Fujita 0002, María Jesús Garzarán, Yanfei Guo, Jeff R. Hammond, Shintaro Iwasaki, Kenneth Raffenetti, Mikhail Shiryaev, Min Si, Kenjiro Taura, Sagar Thapaliya, Pavan Balaji
ICS7
2019 Minimizing the usage of hardware counters for collective communication using triggered operations
abstract
Triggered operations and counting events or counters are building blocks that can be used by communication libraries, such as MPI, to offload collective operations to the Host Fabric Interface (HFI) or Network Interface Card (NIC). Triggered operations can be used to schedule a network or arithmetic operation to occur in the future, when a trigger counter reaches a specified threshold. On completion of the operation, the value of a completion counter increases by one. With this mechanism, it is possible to create a chain of dependent operations, so that the execution of an operation is triggered when all its dependent operations have completed its execution.
Nusrat S. Islam, Gengbin Zheng, Sayantan Sur, Akhil Langer, María Jesús Garzarán
EuroMPI5
2019 Efficient implementation of MPI-3 RMA over openFabrics interfaces
Hajime Fujita 0002, Chongxiao Cao, Sayantan Sur, Charles Archer, Erik Paulson 0002, María Jesús Garzarán
Parallel Comput.6
2018 Framework for scalable intra-node collective operations using shared memory
Surabhi Jain, Rashid Kaleem, Marc Gamell, Akhil Langer, Dmitry Durnov, Alexander Sannikov, María Jesús Garzarán
SC7
2018 Exploiting social network graph characteristics for efficient BFS on heterogeneous chips
Luis Remis, María Jesús Garzarán, Rafael Asenjo, Angeles G. Navarro
J. Parallel Distributed Comput.2
2017 ShortCut: Architectural Support for Fast Object Access in Scripting Languages
abstract
The same flexibility that makes dynamic scripting languages appealing to programmers is also the primary cause of their low performance. To access objects of potentially different types, the compiler creates a dispatcher with a series of if statements, each performing a comparison to a type and a jump to a handler. This induces major overhead in instructions executed and branches mispredicted.
Jiho Choi, Thomas Shull, María Jesús Garzarán, Josep Torrellas
ISCA3
2016 DSMR: A Parallel Algorithm for Single-Source Shortest Path Problem
abstract
The Single Source Shortest Path (SSSP) problem consists in finding the shortest paths from a vertex (the source vertex) to all other vertices in a graph. SSSP has numerous applications. For some algorithms and applications, it is useful to solve the SSSP problem in parallel. This is the case of Betweenness Centrality which solves the SSSP problem for multiple source vertices in large graphs. In this paper, we introduce the Dijkstra Strip Mined Relaxation (DSMR) algorithm, an efficient parallel SSSP algorithm for shared and distributed-memory systems. We also introduce a set of preprocessing optimization techniques that significantly reduce the communication overhead without increasing the total amount of work dramatically. Our results show that, DSMR is faster than the best previous algorithm, parallel Δ-Stepping, by up-to 7.38×.
Saeed Maleki, Donald Nguyen, Andrew Lenharth, María Jesús Garzarán, David A. Padua, Keshav Pingali
ICS4
2016 DSMR: a shared and distributed memory algorithm for single-source shortest path problem
abstract
The Single-Source Shortest Path (SSSP) problem is to find the shortest paths from a source vertex to all other vertices in a graph. In this paper, we introduce the Dijkstra Strip-Mined Relaxation (DSMR) algorithm, an efficient parallel SSSP algorithm for shared and distributed memory systems. Our results show that, DSMR is faster than parallel Δ-Stepping by a factor of up-to 1.66.
Saeed Maleki, Donald Nguyen, Andrew Lenharth, María Jesús Garzarán, David A. Padua, Keshav Pingali
PPoPP4
2016 Breadth-First Search on Heterogeneous Platforms: A Case of Study on Social Networks
abstract
Breadth-First Search (BFS) is the core of many graph analysis algorithms and it is used in many problems, such as social network, computer network analysis, and data organization. BFS is an iterative algorithm that due to its irregular behavior is quite challenging to parallelize. Several approaches implement efficient algorithms for BFS for multicore architectures and for Graphics Processors, but it is still an open problem how to distribute the work among the main cores and the accelerators. In this paper, we assess several approaches to perform BFS on different heterogenous architectures (highend and embedded mobile processors composed of a multi-core CPU and an integrated GPU) with a focus on social network graphs. In particular, we propose two heterogenous approaches to exploit both devices. The first one, called Selective, selects on which device to execute each iteration. It is based on a previous approach, but we have adapted it to take advantage of the features of social network graphs (fewer iterations but more unbalanced). The second approach, referred as Concurrent, allows the execution of specific iterations concurrently in both devices. Our heterogenous implementations can be up to 1.56x faster and 1.32x more energy efficient with respect to the best of only-CPU or only-GPU baselines. We have also found that for a highly memory bound problem like BFS, the CPU-GPU collaborative execution is limited by the shared-memory bus bandwidth.
Luis Remis, María Jesús Garzarán, Rafael Asenjo, Angeles G. Navarro
SBAC-PAD2
2016 Autotuning Runtime Specialization for Sparse Matrix-Vector Multiplication
abstract
Runtime specialization is used for optimizing programs based on partial information available only at runtime. In this paper we apply autotuning on runtime specialization of Sparse Matrix-Vector Multiplication to predict a best specialization method among several. In 91% to 96% of the predictions, either the best or the second-best method is chosen. Predictions achieve average speedups that are very close to the speedups achievable when only the best methods are used. By using an efficient code generator and a carefully designed set of matrix features, we show the runtime costs can be amortized to bring performance benefits for many real-world cases.
Buse Yilmaz, Baris Aktemur, María Jesús Garzarán, Samuel N. Kamin, Furkan Kiraç
ACM Trans. Archit. Code Optim.3
2016 Mapping Streaming Applications on Commodity Multi-CPU and GPU On-Chip Processors
abstract
In this paper, we consider the problem of efficiently executing streaming applications on commodity processors composed of several cores and an on-chip GPU. Streaming applications, such as those in vision and video analytic, consist of a pipeline of stages and are good candidates to take advantage of this type of platforms. We also consider that characteristics of the input may change while the application is running. Therefore, we propose a framework that adaptively finds the optimal mapping of the pipeline stages. The core of the framework is an analytical model coupled with information collected at runtime used to dynamically map each pipeline stage to the most efficient device, taking into consideration both performance and energy. Our experimental results show that for the evaluated applications running on two different architectures, our model always predicts the best configuration among the evaluated alternatives, and significantly reduces the amount of information that needs to be collected at runtime. This best configuration has, on the average, 20 percent higher throughput than the configuration recommended by a baseline state of the art approach, while the ratio throughput/energy is 43 percent higher. We have measured improvements in throughput and throughput/energy of up-to 81 and 204 percent, respectively, when the model is used to adapt to a video that changes from low to high definition.
Antonio Vilches, Angeles G. Navarro, Rafael Asenjo, Francisco Corbera, Ruben Gran Tejero, María Jesús Garzarán
IEEE Trans. Parallel Distributed Syst.6
2015 Understanding the Propagation of Error Due to a Silent Data Corruption in a Sparse Matrix Vector Multiply
abstract
With the rate of errors that silently effect an application's state/output expected to increase in future HPC machines, numerous mitigation schemes have been proposed, but little work has been done investigating why these schemes detect some error while other is masked. This paper investigates how silent data corruption (SDC) propagates through a sparse matrix vector multiply (SpMV), a fundamental HPC computation kernel. We discover that analyzing the mathematics of the SpMV limits understanding of SDC propagation. We achieve a more complete understanding by investigating how SDC propagates in a SpMV as it is expressed in machine instructions.
Jon Calhoun 0001, Marc Snir, Luke N. Olson, María Jesús Garzarán
CLUSTER4
2014 Optimization by runtime specialization for sparse matrix-vector multiplication
abstract
Runtime specialization optimizes programs based on partial information available only at run time. It is applicable when some input data is used repeatedly while other input data varies. This technique has the potential of generating highly efficient codes. In this paper, we explore the potential for obtaining speedups for sparse matrix-dense vector multiplication using runtime specialization, in the case where a single matrix is to be multiplied by many vectors. We experiment with five methods involving runtime specialization, comparing them to methods that do not (including Intel's MKL library). For this work, our focus is the evaluation of the speedups that can be obtained with runtime specialization without considering the overheads of the code generation. Our experiments use 23 matrices from the Matrix Market and Florida collections, and run on five different machines. In 94 of those 115 cases, the specialized code runs faster than any version without specialization. If we only use specialization, the average speedup with respect to Intel's MKL library ranges from 1.44x to 1.77x, depending on the machine. We have also found that the best method depends on the matrix and machine; no method is best for all matrices and machines.
Samuel N. Kamin, María Jesús Garzarán, Baris Aktemur, Danqing Xu, Buse Yilmaz, Zhongbo Chen
GPCE2
2014 Improving JavaScript performance by deconstructing the type system
abstract
Increased focus on JavaScript performance has resulted in vast performance improvements for many benchmarks. However, for actual code used in websites, the attained improvements often lag far behind those for popular benchmarks.
Wonsun Ahn, Jiho Choi, Thomas Shull, María Jesús Garzarán, Josep Torrellas
PLDI4
2014 Evaluation of a Feature Tracking Vision Application on a Heterogeneous Chip
abstract
Consumers of personal devices such as desktops, tablets, or smart phones run applications based on image or video processing, as they enable a natural computer-user interaction. The challenge with these computationally demanding applications is to execute them efficiently. One way to address this problem is to use on-chip heterogeneous systems, where tasks can execute in the device where they run more efficiently. In this paper, we discuss the optimization of a feature tracking application, written in OpenCL, when running on an on-chip heterogeneous platform. Our results show that OpenCL can facilitate programming of these heterogeneous systems because it provides a unified programming paradigm and at the same time can deliver significant performance improvements. We show that, after optimization, our feature tracking application runs 3.2, 2.6, and 4.3 times faster and consumes 2.2, 3.1, and 2.7 times less energy when running on the multicore, the GPU, or both the CPU and the GPU of an Intel i7, respectively.
Ruben Gran Tejero, August Shi, Ehsan Totoni, María Jesús Garzarán
SBAC-PAD4
2014 Parallelization of Reordering Algorithms for Bandwidth and Wavefront Reduction
abstract
Many sparse matrix computations can be speeded up if the matrix is first reordered. Reordering was originally developed for direct methods but it has recently become popular for improving the cache locality of parallel iterative solvers since reordering the matrix to reduce bandwidth and wave front can improve the locality of reference of sparse matrix-vector multiplication (SpMV), the key kernel in iterative solvers. In this paper, we present the first parallel implementations of two widely used reordering algorithms: Reverse Cut hill-McKee (RCM) and Sloan. On 16 cores of the Stampede supercomputer, our parallel RCM is 5.56 times faster on the average than a state-of-the-art sequential implementation of RCM in the HSL library. Sloan is significantly more constrained than RCM, but our parallel implementation achieves a speedup of 2.88X on the average over sequential HSL-Sloan. Reordering the matrix using our parallel RCM and then performing 100 SpMV iterations is twice as fast as using HSL-RCM and then performing the SpMV iterations, it is also 1.5 times faster than performing the SpMV iterations without reordering the matrix.
Konstantinos I. Karantasis, Andrew Lenharth, Donald Nguyen, María Jesús Garzarán, Keshav Pingali
SC4
2014 Optimal Parallelogram Selection for Hierarchical Tiling
abstract
Loop tiling is an effective optimization to improve performance of multiply nested loops, which are the most time-consuming parts in many programs. Most massively parallel systems today are organized hierarchically, and different levels of the hierarchy differ in the organization of parallelism and the memory models they adopt. To make better use of these machines, it is clear that loop nests should be tiled hierarchically to fit the hierarchical organization of the machine; however, it is not so clear what should be the exact form of these hierarchical tiles. In particular, tile shape selection is of critical importance to expose parallelism of the tiled loop nests. Although loop tiling is a well-known optimization, not much is known about tile shape selection. In this article, we study tile shape selection when the shapes are any type of parallelograms and introduce a model to relate the tile shape of the hierarchy to the execution time. Using this model, we implement a system that automatically finds the tile shapes that minimize the execution time in a hierarchical system. Our experimental results show that in several cases, the tiles automatically selected by our system outperform the most intuitive tiling schemes usually adopted by programmers because of their simplicity.
Xing Zhou 0002, María Jesús Garzarán, David A. Padua
ACM Trans. Archit. Code Optim.2
2013 Easy, fast, and energy-efficient object detection on heterogeneous on-chip architectures
abstract
We optimize a visual object detection application (that uses Vision Video Library kernels) and show that OpenCL is a unified programming paradigm that can provide high performance when running on the Ivy Bridge heterogeneous on-chip architecture. We evaluate different mapping techniques and show that running each kernel where it fits the best and using software pipelining can provide 1.91 times higher performance and 42% better energy efficiency. We also show how to trade accuracy for energy at runtime. Overall, our application can perform accurate object detection at 40 frames per second (fps) in an energy-efficient manner.
Ehsan Totoni, Mert Dikmen, María Jesús Garzarán
ACM Trans. Archit. Code Optim.3
2012 Hierarchical overlapped tiling
abstract
This paper introduces hierarchical overlapped tiling, a transformation that applies loop tiling and fusion to conventional loops. Overlapped tiling is a useful transformation to reduce communication overhead, but it may also generate a significant amount of redundant computation. Hierarchical overlapped tiling performs overlapped tiling hierarchically to balance communication overhead and redundant computation, and thus has the potential to provide better performance.
Xing Zhou 0002, Jean-Pierre Giacalone, María Jesús Garzarán, Robert H. Kuhn, David A. Padua
CGO3
2012 Performance Portability with the Chapel Language
abstract
It has been widely shown that high-throughput computing architectures such as GPUs offer large performance gains compared with their traditional low-latency counterparts for many applications. The downside to these architectures is that the current programming models present numerous challenges to the programmer: lower-level languages, loss of portability across different architectures, explicit data movement, and challenges in performance optimization. This paper presents novel methods and compiler transformations that increase programmer productivity by enabling users of the language Chapel to provide a single code implementation that the compiler can then use to target not only conventional multiprocessors, but also high-throughput and hybrid machines. Rather than resorting to different parallel libraries or annotations for a given parallel platform, this work leverages a language that has been designed from first principles to address the challenge of programming for parallelism and locality. This also has the advantage of providing portability across different parallel architectures. Finally, this work presents experimental results from the Parboil benchmark suite which demonstrate that codes written in Chapel achieve performance comparable to the original versions implemented in CUDA on both GPUs and multicore platforms.
Albert Sidelnik, Saeed Maleki, Bradford L. Chamberlain, María Jesús Garzarán, David A. Padua
IPDPS4
2012 Optimization techniques for efficient HTA programs
Basilio B. Fraguela, Ganesh Bikshandi, María Jesús Garzarán, David A. Padua, Christoph von Praun
Parallel Comput.4
2011 An Evaluation of Vectorizing Compilers
abstract
Most of today's processors include vector units that have been designed to speedup single threaded programs. Although vector instructions can deliver high performance, writing vector code in assembly language or using intrinsics in high level languages is a time consuming and error-prone task. The alternative is to automate the process of vectorization by using vectorizing compilers. This paper evaluates how well compilers vectorize a synthetic benchmark consisting of 151 loops, two application from Petascale Application Collaboration Teams (PACT), and eight applications from Media Bench II. We evaluated three compilers: GCC (version 4.7.0), ICC (version 12.0) and XLC (version 11.01). Our results show that despite all the work done in vectorization in the last 40 years 45-71% of the loops in the synthetic benchmark and only a few loops from the real applications are vectorized by the compilers we evaluated.
Saeed Maleki, Yaoqing Gao, María Jesús Garzarán, Tommy Wong, David A. Padua
PACT3
2011 Scheduling of stream-based real-time applications for heterogeneous systems
abstract
Designers of mobile devices face the challenge of providing the user with more processing power while increasing battery life. Heterogeneous systems offer some opportunities to solve this challenge. In an heterogeneous system, multiple classes of processors with dynamic voltage and frequency scaling functionality are embedded in the mobile device. With such a system it is possible to maximize performance while minimizing power consumption if tasks are mapped to the class of processors where they execute the most efficiently.
Bruno Virlet, Xing Zhou 0002, Jean-Pierre Giacalone, Bob Kuhn, María Jesús Garzarán, David A. Padua
LCTES5
2009 ESoftCheck: Removal of Non-vital Checks for Fault Tolerance
abstract
As semiconductor technology scales into the deep submicron regime the occurrence of transient or soft errors will increase. This will require new approaches to error detection. Software checking approaches are attractive because they require little hardware modification and can be easily adjusted to fit different reliability and performance requirements. Unfortunately, software checking adds a significant performance overhead. In this paper we present ESoftCheck, a set of compiler optimization techniques to determine which are the vital checks, that is, the minimum number of checks that are necessary to detect an error and roll back to a correct program state. ESoftCheck identifies the vital checks on platforms where registers are hardware-protected with parity or ECC, when there are redundant checks and when checks appear in loops. ESoftCheck also provides knobs to trade reliability for performance based on the support for recovery and the degree of trustiness of the operations. Our experimental results on a Pentium 4 show that ESoftCheck can obtain 27.1% performance improvement without losing fault coverage.
Jing Yu 0015, María Jesús Garzarán, Marc Snir
CGO2
2008 Automatic generation of a parallel sorting algorithm
abstract
In this paper, we discuss a library generator for parallel sorting routines that examines the input characteristics (and the parameters they affect) to select the best performing algorithm. Our preliminary experimental results show that the automatic generation of a distributed memory parallel sorting routine provides up to a four fold improvement over standard parallel algorithms with typical parameters. With the recent importance of multicore processors, we are extending this work to shared memory. This provides new challenges specific to multicore systems. However, with their increasing popularity, this extension becomes very valuable.
Brian A. Garber, Daniel Hoeflinger, Xiaoming Li 0004, María Jesús Garzarán, David A. Padua
IPDPS4
2008 Efficient software checking for fault tolerance
abstract
Dramatic increases in the number of transistors that can be integrated on a chip make processors more susceptible to radiation-induced transient errors. For commodity chips which are cost- and energy-constrained, software approaches can play a major role for fault detection because they can be tailored to fit different requirements of reliability and performance. However, software approaches add a significant performance overhead because they replicate the instructions and add checking instructions to compare the results. In order to make software checking approaches more attractive, we use compiler techniqes to identify the "unnecessary" replicas and checking instructions. In this paper, we present three techniques. The first technique uses boolean logic to identify code patterns that correspond to outcome tolerant branches. The second technique identifies address checks before loads and stores that can be removed with different degrees of fault coverage. The third technique identifies the checking instructions and shadow registers that are unnecessary when the register file is protected in hardware. By combining the three techniques, the overheads of software approaches can be reduced by an average 50%.
Jing Yu 0015, María Jesús Garzarán, Marc Snir
IPDPS2
2008 Programming with tiles
abstract
The importance of tiles or blocks in scientific computing cannot be overstated. Many algorithms, both iterative and recursive, can be expressed naturally if tiles are represented explicitly. From the point of view of performance, tiling, either as a code or a data layout transformation, is one of the most effective ways to exploit locality, which is a must to achieve good performance in current computers because of the significant difference in speed between processor and memory. Furthermore, tiles are also useful to express data distribution in parallel computations. However, despite the importance of tiles, most languages do not support them directly. This gives place to bloated programs populated with numerous subscript expressions which make the code difficult to read and coding mistakes more likely.
Ganesh Bikshandi, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua
PPoPP4
2007 Compiler Optimizations for Fault Tolerance Software Checking
Jing Yu 0015, María Jesús Garzarán
PACT2
2007 Optimizing Sorting with Machine Learning Algorithms
abstract
The growing complexity of modern processors has made the development of highly efficient code increasingly difficult. A promising automatic code generation strategy is implemented by library generators. This approach has mainly been applied to scientific codes which can be optimized by identifying code characteristics that depend only on the target machine. In this paper, we study the generation of sorting routines whose performance also depends on the characteristics of the input data. We present two approaches to generate efficient sorting routines. First, we consider the problem of selecting the best "pure" sorting algorithm as a function of the characteristics of the input data. We used machine learning algorithms to compute a function for each target machine that, at runtime, is used to select the best algorithm. Our second approach generalizes the first approach and can build new sorting algorithms from a few primitive operations. We use genetic algorithms and a classifier system to build hierarchically-organized hybrid sorting algorithms. Our results show that the algorithms generated using this second approach are quite effective and perform significantly better than the many conventional sorting implementations we tested. In particular, the routines generated using the second approach performs better than the most popular libraries available today: IBM ESSL, INTEL MKL and the C+ + STL.
Xiaoming Li 0004, María Jesús Garzarán, David A. Padua
IPDPS2
2006 Hierarchically tiled arrays for parallelism and locality
abstract
Parallel programming is facilitated by constructs which, unlike the widely used SPMD paradigm, provide programmers with a global view of the code and data structures. These constructs could be compiler directives containing information about data and task distribution, language extensions specifically designed for parallel computation, or classes that encapsulate parallelism. In this paper, we describe a class developed at Illinois and its Matlab implementation. This class can be used to conveniently express both parallelism and locality. A C++ implementation is now underway. Its characteristics will be reported in a future paper. We have implemented most of the NAS benchmarks using our HTA Matlab extensions and found during that HTAs enable the fast prototyping of parallel algorithms and produce programs that are easy to understand and maintain.
Ganesh Bikshandi, Daniel Hoeflinger, Gheorghe Almási 0001, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua, Christoph von Praun
IPDPS6
2006 Programming for parallelism and locality with hierarchically tiled arrays
abstract
Tiling has proven to be an effective mechanism to develop high performance implementations of algorithms. Tiling can be used to organize computations so that communication costs in parallel programs are reduced and locality in sequential codes or sequential components of parallel programs is enhanced.In this paper, a data type - Hierarchically Tiled Arrays or HTAs - that facilitates the direct manipulation of tiles is introduced. HTA operations are overloaded array operations. We argue that the implementation of HTAs in sequential OO languages transforms these languages into powerful tools for the development of high-performance parallel codes and codes with high degree of locality. To support this claim, we discuss our experiences with the implementation of HTAs for MATLAB and C++ and the rewriting of the NAS benchmarks and a few other programs into HTA-based parallel form.
Ganesh Bikshandi, Daniel Hoeflinger, Gheorghe Almási 0001, Basilio B. Fraguela, María Jesús Garzarán, David A. Padua, Christoph von Praun
PPoPP6
2006 In search of a program generator to implement generic transformations for high-performance computing
Albert Cohen 0001, Sébastien Donadio, María Jesús Garzarán, Christoph Armin Herrmann, Oleg Kiselyov, David A. Padua
Sci. Comput. Program.3
2005 Optimizing Sorting with Genetic Algorithms
abstract
The growing complexity of modern processors has made the generation of highly efficient code increasingly difficult. Manual code generation is very time consuming, but it is often the only choice since the code generated by today's compiler technology often has much lower performance than the best hand-tuned codes. A promising code generation strategy, implemented by systems like ATLAS, FFTW, and SPIRAL, uses empirical search to find the parameter values of the implementation, such as the tile size and instruction schedules, that deliver near-optimal performance for a particular machine. However, this approach has only proven successful on scientific codes whose performance does not depend on the input data. In this paper we study machine learning techniques to extend empirical search to the generation of sorting routines, whose performance depends on the input characteristics and the architecture of the target machine. We build on a previous study that selects a "pure" sorting algorithm at the outset of the computation as a function of the standard deviation. The approach discussed in this paper uses genetic algorithms and a classifier system to build hierarchically-organized hybrid sorting algorithms capable of adapting to the input data. Our results show that such algorithms generated using the approach presented in this paper are quite effective at taking into account the complex interactions between architectural and input data characteristics and that the resulting code performs significantly better than conventional sorting implementations and the code generated by our earlier study. In particular, the routines generated using our approach perform better than all the commercial libraries that we tried including IBM ESSL, INTEL MKL and the C++ STL The best algorithm we have been able to generate is on the average 26% and 62% faster than the IBM ESSL in an IBM Power 3 and IBM Power 4, respectively.
Xiaoming Li 0004, María Jesús Garzarán, David A. Padua
CGO2
2005 Is Search Really Necessary to Generate High-Performance BLAS?
abstract
A key step in program optimization is the estimation of optimal values for parameters such as tile sizes and loop unrolling factors. Traditional compilers use simple analytical models to compute these values. In contrast, library generators like ATLAS use global search over the space of parameter values by generating programs with many different combinations of parameter values, and running them on the actual hardware to determine which values give the best performance. It is widely believed that traditional model-driven optimization cannot compete with search-based empirical optimization because tractable analytical models cannot capture all the complexities of modern high-performance architectures, but few quantitative comparisons have been done to date. To make such a comparison, we replaced the global search engine in ATLAS with a model-driven optimization engine and measured the relative performance of the code produced by the two systems on a variety of architectures. Since both systems use the same code generator, any differences in the performance of the code produced by the two systems can come only from differences in optimization parameter values. Our experiments show that model-driven optimization can be surprisingly effective and can generate code with performance comparable to that of code generated by ATLAS using global search.
Kamen Yotov, Xiaoming Li 0004, Gang Ren 0002, María Jesús Garzarán, David A. Padua, Keshav Pingali, Paul Stodghill
Proc. IEEE4
2005 Tradeoffs in buffering speculative memory state for thread-level speculation in multiprocessors
abstract
Thread-Level Speculation (TLS) provides architectural support to aggressively run hard-to-analyze code in parallel. As speculative tasks run concurrently, they generate unsafe or speculative memory state that needs to be separately buffered and managed in the presence of distributed caches and buffers. Such a state may contain multiple versions of the same variable. In this paper, we introduce a novel taxonomy of approaches to buffer and manage multiversion speculative memory state in multiprocessors. We also present a detailed complexity-benefit tradeoff analysis of the different approaches. Finally, we use numerical applications to evaluate the performance of the approaches under a single architectural framework. Our key insights are that support for buffering the state of multiple speculative tasks and versions per processor is more complexity-effective than support for lazily merging the state of tasks with main memory. Moreover, both supports can be gainfully combined and, in large machines, their effect is nearly fully additive. Finally, the more complex support for storing future state in the main memory can boost performance when buffers are under pressure, but hurts performance when squashes are frequent.
María Jesús Garzarán, Milos Prvulovic, José María Llabería, Víctor Viñals, Lawrence Rauchwerger, Josep Torrellas
ACM Trans. Archit. Code Optim.1
2004 A Dynamically Tuned Sorting Library
abstract
Empirical search is a strategy used during the installation of library generators such as ATLAS, FFTW, and SPIRAL to identify the algorithm or the version of an algorithm that delivers the best performance. In the past, empirical search has been applied almost exclusively to scientific problems. In this paper, we discuss the application of empirical search to sorting, which is one of the best understood symbolic computing problems. When contrasted with the dense numerical computations of ATLAS, FFTW, and SPIRAL, sorting presents a new challenge, namely that the relative performance of the algorithms depend not only on the characteristics of the target machine and the size of the input data but also on the distribution of values in the input data set. Empirical search is applied in the study reported here as part of a sorting library generator. The resulting routines dynamically adapt to the characteristics of the input data by selecting the best sorting algorithm from a small set of alternatives. To generate the run time selection mechanism our generator makes use of machine learning to predict the best algorithm as a function of the characteristics of the input data set and the performance of the different algorithms on the target machine. This prediction is based on the data obtained through empirical search at installation time. Our results show that our approach is quite effective. When sorting data inputs of 12M keys with various standard deviations, our adaptive approach selected the best algorithm for all the input data sets and all platforms that we tried in our experiments. The wrong decision could have introduced a performance degradation of up to 133%, with an average value of 44%.
Xiaoming Li 0004, María Jesús Garzarán, David A. Padua
CGO2
2003 Tradeoffs in Buffering Memory State for Thread-Level Speculation in Multiprocessors
abstract
Thread-level speculation provides architectural support to aggressively run hard-to-analyze code in parallel. As speculative tasks run concurrently, they generate unsafe or speculative memory state that needs to be separately buffered and managed in the presence of distributed caches and buffers. Such state may contain multiple versions of the same variable. In this paper, we introduce a novel taxonomy of approaches to buffering and managing multi-version speculative memory state in multiprocessors. We also present a detailed complexity-benefit tradeoff analysis of the different approaches. Finally, we use numerical applications to evaluate the performance of the approaches under a single architectural framework. Our key insights are that support for buffering the state of multiple speculative tasks and versions per processor is more complexity-effective than support for merging the state of tasks with main memory lazily. Moreover, both supports can be gainfully combined and, in large machines, their effect is nearly fully additive. Finally, the more complex support for future state in main memory can boost performance when buffers are under pressure, but hurts performance when squashes are frequent.
María Jesús Garzarán, Milos Prvulovic, José María Llabería, Víctor Viñals, Lawrence Rauchwerger, Josep Torrellas
HPCA1
2003 A comparison of empirical and model-driven optimization
abstract
Empirical program optimizers estimate the values of key optimization parameters by generating different program versions and running them on the actual hardware to determine which values give the best performance. In contrast, conventional compilers use models of programs and machines to choose these parameters. It is widely believed that model-driven optimization does not compete with empirical optimization, but few quantitative comparisons have been done to date. To make such a comparison, we replaced the empirical optimization engine in ATLAS (a system for generating a dense numerical linear algebra library called the BLAS) with a model-driven optimization engine that used detailed models to estimate values for optimization parameters, and then measured the relative performance of the two systems on three different hardware platforms. Our experiments show that model-driven optimization can be surprisingly effective, and can generate code whose performance is comparable to that of code generated by empirical optimizers for the BLAS.
Kamen Yotov, Xiaoming Li 0004, Gang Ren 0002, Michael Cibulskis, Gerald DeJong, María Jesús Garzarán, David A. Padua, Keshav Pingali, Paul Stodghill, Peng Wu 0001
PLDI6
2001 Removing architectural bottlenecks to the scalability of speculative parallelization
abstract
Speculative thread-level parallelization is a promising way to speed up codes that compilers fail to parallelize. While several speculative parallelization schemes have been proposed for different machine sizes and types of codes, the results so far show that it is hard to deliver scalable speedups. Often, the problem is not true dependence violations, but sub-optimal architectural design. Consequently, we attempt to identify and eliminate major architectural bottlenecks that limit the scalability of speculative parallelization. The solutions that we propose are: low-complexity commit in constant time to eliminate the task commit bottleneck, a memory-based overflow area to eliminate stall due to speculative buffer overflow, and exploiting high-level access patterns to minimize speculation-induced traffic. To show that the resulting system is truly scalable, we perform simulations with up to 128 processors. With our optimizations, the speedups for 128 and 64 processors reach 63 and 48, respectively. The average speedup for 64 processors is 32, nearly four times higher than without our optimizations.
Milos Prvulovic, María Jesús Garzarán, Lawrence Rauchwerger, Josep Torrellas
ISCA2
1998 Characterization and Improvement of Load/Store Cache-based Prefetching
abstract
A common mechanism to perform hardware-based prefetching for regular accesses to arrays and chained lists is based on a Load/Store cache (LSC). An LSC associates the address of a ld/st instruction with its individual behavior at every entry. We show that the implementation cost of the LSC is rather high, and that using it is inefficient. We aim to decrease the cost of the LSC but not its performance. This may be done preventing useless instructions from being stored in the LSC. We propose eliminating those instructions that never miss, and those that follow a sequential pattern. This may be carried out by inserting a ld/st instruction in the LSC whenever it misses in the data cache (on-miss insertion), and issuing sequential prefetching simultaneously. After having analyzed the performance of this proposal through a cycle-by-cycle simulation over a set of 25 benchmarks selected from SPEC95, SPEC92 and Perfect Club, we conclude that an LSC of only 8 entries, which combines on-miss insertion and sequential prefetching, performs better than a conventional LSC of 512 entries. We think that the low cost of the proposal makes it worth being taken into account for the development of future microprocessors.
Pablo Ibáñez 0001, Víctor Viñals, José Luis Briz, María Jesús Garzarán
International Conference on Supercomputing4