Home |
Research |
Projects |
Courses |
CV |
Misc |
|
Projects
Current Projects
- Ordered Fine-grained Parallelism
Multi/Many-core systems are becoming the norm, but developing applications for these diverse systems uses unintuitive programming interfaces such as multithreading. Such interfaces increase the learning curve for programmers, offer limited support for debugging and put the onus of exposing parallelism on the programmer.
Prior work in UW-Madison has focussed on the automated exposing of parallelism within the sequentially ordered program. This allows the programmer to develop applications using the well-understood sequential paradigm while still benefitting from the parallelism goodness.
I am trying to extend this paradigm to irregular applications such as graph analytics. These applications have complicated data structures that are dynamically updated and their typical task sizes are very small (500-1000 cycles). Given the limited time budget, can a runtime system efficiently parallelize such applications within the ambit of sequential order? This is a question I'm trying to answer.
Completed Projects
- M-TAGs: Multi-threaded Access Groups Analysis
As part of my Advanced Compilers course, I developed a static analyzer that can compute over-approximate representations of per-thread memory access sets using abstract interpretation. The analyzer uses a thread-sensitive approach that is suited for chunking/stencil-based work-distribution paradigms. We built a prototype using LLVM v3.8 and demonstrated its superiority compared to thread-insensitive approaches.
Paper PDF
- Task Scheduling for Runtime-Assisted Parallelism
As part of my Advanced Operating Systems course, I studied different work distribution strategies for multicore programming to identify their overheads for handling fine-grained tasks. With the advent of runtime-assisted parallel programming models, we developed techniques for using runtime-collected data to make better scheduling decisions. We combine our proposals to develop 'WARR' - a viable scheduler for fine-grained tasks - that provides 0.97x to 2.2x improved speedup compared to traditional work-stealing schedulers.
Paper PDF
- Aristotle on the Form of the Good
In his Nicomachean Ethics, Aristotle dissects the Platonic notion of the Form of the Good, questioning its theoretical possibility as well as its practical applicability to the study of ethics. In this paper, I analyze these criticisms to evaluate their merits.
Report PDF
- The Sun, Line and Cave by Plato
Socrates claims that the Form of the Good is the most important thing to know. In lieu of explaining his understanding of it, he gives three imageries - the analogy of the Sun, the analogy of the Line and the allegory of the Cave. In this paper, I analyze these imageries to understand their significance in realizing the Form of the Good.
Report PDF
- The Meno by Plato
For my course on Ancient Philosophy, I analyzed the early exchanges between Socrates and Meno where Meno attempts to define Virtue. I critically evaluated Socrates's arguments against Meno's attempts to obtain insights into the ideal 'Socratic' definition of a concept.
Question JPG
Report PDF
- Study of Inter-Process Communication Mechanisms
A wide range of mechanisms are available for communicating between processes. In this work, we empirically evaluated three mechanisms - kernel pipes, TCP/IP sockets and shared memory - to understand their latency and throughput.
Report PDF
- Study of Cache Compressibility
Compression of on-chip cache contents is an exciting opportunity to increase effective cache capacity without concomitant ill-effects such as increased area, power etc. A number of compressed cache designs have been proposed, however we felt the lack of a comprehensive study into the inherent 'compressibility' of the data typically found in on-chip caches during common workloads.
In this study, we have characterized the theoretical entropy of a range of cloud, cpu and java workloads. We have also analyzed how common compression algorithms fare in capturing this compressibility and how this potential varies across various cache design parameters, data types, code vs data semantics etc. Results were captured on GEM5 full system simulations and a self-developed tool for analyzing cache contents.
Report DOCX
Cache-Analyzer Tool Repository
- xv6 Kernel Programming
xv6 is a simple UNIX-like operating system. As part of my Intro to Operating systems course, I implemented a number of features to this OS.
* Kernel scheduling --> lottery based, similar to popular Web services
* Virtual memory --> null pointer de-referencing and inversion of stack location
* Kernel threads --> Implement support for multi-threaded applications
* File system --> Implement mirrored RAID data protection
Code Repository
|