Prakash Prabhu
I am a Sofware Engineer at Google with experience working in various aspects of search & advertising, ranging from mobile app query and app understanding, search over private corpora in the Cloud, and video ads feature engineering. My interests include information retrieval, distributed systems, parallel computing, program analysis & compiler optimizations. I received a PhD in Computer Science from Princeton University.
Authored Publications
Google Publications
Other Publications
Sort By
MemoDyn: Exploiting Weakly Consistent Data Structures for Dynamic Parallel Memoization
Stephen R. Beard
Ayal Zaks
David I. August
27th IEEE International Conference on Parallel Architecture and Compilation Techniques (PACT) (2018)
Preview abstract
Several classes of algorithms for combinatorial search and optimization problems employ memoization data structures to speed up their serial convergence. However, accesses to these data structures impose dependences that obstruct program parallelization. Such programs often continue to function correctly even when queries into these data structures return a partial view of their contents. Weakening the consistency of these data structures can unleash new parallelism opportunities, potentially at the cost of additional computation. These opportunities must, therefore, be carefully exploited for overall speedup. This paper presents MEMODYN, a framework for parallelizing loops that access data structures with weakly consistent semantics. MEMODYN provides programming abstractions to express weak semantics, and consists of a parallelizing compiler and a runtime system that automatically and adaptively exploit the semantics for optimized parallel execution. Evaluation of MEMODYN shows that it achieves efficient parallelization, providing significant improvements over competing techniques in terms of both runtime performance and solution quality.
View details
Speculatively Exploiting Cross-Invocation Parallelism
Jialu Huang
Thomas B. Jablin
Soumyadeep Ghosh
Jae W. Lee
David I. August
25th IEEE International Conference on Parallel Architecture and Compilation Techniques (PACT) (2016)
Preview abstract
Automatic parallelization has shown promise in producing
scalable multi-threaded programs for multi-core architectures.
Most existing automatic techniques parallelize independent
loops and insert global synchronization between
loop invocations. For programs with many loop invocations,
frequent synchronization often becomes the performance
bottleneck. Some techniques exploit cross-invocation
parallelism to overcome this problem. Using static analysis,
they partition iterations among threads to avoid crossthread
dependences. However, this approach may fail if
dependence pattern information is not available at compile
time. To address this limitation, this work proposes
SpecCross–the first automatic parallelization technique to
exploit cross-invocation parallelism using speculation. With
speculation, iterations from different loop invocations can
execute concurrently, and the program synchronizes only on
misspeculation. This allows SpecCross to adapt to dependence
patterns that only manifest on particular inputs at
runtime. Evaluation on eight programs shows that SpecCross
achieves a geomean speedup of 3.43× over parallel
execution without cross-invocation parallelization.
View details
Dynamically Managed Data for CPU-GPU Architectures
Thomas B. Jablin
James A. Jablin
Feng Liu
David I. August
2012 International Symposium on Code Generation and Optimization (CGO) (2012)
Speculative Separation for Privatization and Reductions
Nick P. Johnson
Hanjun Kim
Ayal Zaks
David I. August
33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (2012)
Automatic Extraction of Parallelism from Sequential Code
David I. August
Jialu Huang
Thomas B. Jablin
Hanjun Kim
Thomas R. Mason
Arun Raman
Yun Zhang
Fundamentals of Multicore Software Development, CRC Press (2011)
A Survey of the Practice of Computational Science
Thomas B. Jablin
Arun Raman
Yun Zhang
Jialu Huang
Hanjun Kim
Nick P. Johnson
Feng Liu
Soumyadeep Ghosh
Stephen Beard
Taewook Oh
Matthew Zoufaly
David Walker
David I. August
24th ACM/IEEE Conference on High Performance Computing, Networking, Storage and Analysis (SC) (2011)
Interprocedural Exception Analysis for C++
Naoto Maeda
Gogul Balakrishnan
Aarti Gupta
25th European Conference on Object-Oriented Programming (ECOOP) (2011)
Automatic CPU-GPU Communication Management and Optimization
Thomas B. Jablin
James A. Jablin
Nick P. Johnson
Stephen R. Beard
David I. August
32nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (2011)
Commutative Set: A Language Extension for Implicit Parallel Programming
Soumyadeep Ghosh
Yun Zhang
Nick P. Johnson
David I. August
32nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (2011)
Safe Programmable Speculative Parallelism
G Ramalingam
Kapil Vaswani
31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (2010)
Field Flow Sensitive Pointer and Escape Analysis for Java using Heap Array SSA
The Static Single Assignment Form: Construction and Application to Program Optimization
Priti Shankar
Y N Srikant
The Compiler Design Handbook: Optimizations and Machine Code Generation, CRC Press (2007)