High performance parallel computing has a dichotomous nature, simultaneously powerful and terrible in equal measure. It stands as the foremost tool in our arsenal for unraveling the mysteries of complex computational problems that we must solve to address the myriad challenges we face. However, for most developers, leveraging the power of high performance computing requires engaging in parallel programming, a treacherous undertaking riddled with numerous pitfalls and subtle traps that can ensnare even the most experienced programmers. At present, parallel programming stratifies users and prevents the vast majority of them from ever unlocking the full potential of high performance computing hardware.
Therefore, I believe it is incumbent upon those of us blessed (cursed) with a passion for parallel programming to render it invisible to the vast majority of developers. Achieving this end mandates considerable care and discipline in the design and implementation of programming models and programming systems. By doing it right, we can ensure that high performance computing becomes synonymous with high productivity computing, thereby democratizing its benefits beyond the rarefied domain of experts and into the realm of the mainstream.
I currently work as a research scientist at NVIDIA Research. In 2014 I completed my Ph.D. in Computer Science at Stanford University under the guidance of Professor Alex Aiken. Before that I graduated Magna Cum Laude from Duke University in 2008 with degrees in Electrical Computer Engineering (with honors), Mathematics (with high honors), and Computer Science. More information can be found in my CV.
I can be reached at .