Jump to Content
Prakash Prabhu

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
  • Title
  • Title, descending
  • Year
  • Year, descending
    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
    Priti Shankar
    15th International Static Analysis Symposium (SAS) (2008)
    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)