Glenn K. Lockwood, Ph.D.
Principal Engineer
Azure HPC and AI
Microsoft Corporation
/
I am a principal engineer at Microsoft where I am responsible for bringing a workload-centric view to systems design for the largest AI supercomputers being built in Azure. Prior to working at Microsoft, I was a systems architect at the National Energy Research Scientific Computing Center (NERSC) at Lawrence Berkeley National Laboratory where I helped define long-term storage strategy, designed a 35 PB NVMe Lustre file system, and managed the team responsible for hundreds of petabytes of disk and tape.
I worked in the genomics industry previous to that, and my formal education is in ceramic engineering. More information about my current and past work can be found on LinkedIn and Google Scholar, and excruciating details about my life are in my biography.
This site contains various notes I've taken related to technical computing over the years. Long-form notes and how-to guides are linked directly below, and I have begun maintaining short-form notes in my own personal knowledgebase.
I welcome any feedback about its contents at the e-mail address
listed at the bottom of every page. You can also find me
on Twitter,
HPC.social (chat and Mastodon),
and in the #hpc
channel on Libera.
High-Performance Computing
I've worked in high-performance computing since 2012, and this section contains notes and guides I've written in that capacity. I try to retire links to pages once they have fallen out of date, so things tend to come and go from this section as technologies (and my areas of work) evolve.
Artificial Intelligence
- Computational Requirements of AI
- Implementing the Simplest Neural Network
- Implementing a Multilayer Neural Network
- Blog: A closer look at "training" a trillion-parameter model on Frontier
Cloud Computing
- Quick MPI Cluster Setup on Azure
- Cloud Service Comparison
- Azure Basics
- Understanding Authentication and Authorization
High-Performance Storage
- How NFS works
- I/O Forwarding for Extreme-Scale Systems
- Lustre Pearls of Wisdom
- Principles of Non-volatile RAM
- Principles of Object Storage
- Blog: Reviewing the state of the art of burst buffers
- Blog: VAST Data's storage system architecture
General HPC
Performance & Benchmarks
This section contains a number of disjoint pieces revolving around performance analysis.
- Building and Running IO500
- Getting Started with elbencho
- Getting Started with fio
- Getting Started with md-workbench
- Getting Started with mdtest
- Historical Performance Benchmarks
- Parallel I/O Benchmarks
- Power Consumption
- Blog: Basics of I/O Benchmarking
I also have a set of pages on Hadoop and Parallel Computing with R that I host for posterity, but I haven't used either of these since 2014 and those guides are likely out of date.
Materials Science
When I was a student I maintained a variety of notes about different topics relevant to ceramic engineering, in which I got my undergraduate degree. I've re-uploaded them here for posterity.
- Molecular Dynamics Tutorial
- Glass Compositions
- Overview of Alumina
- Overview of Glasses
- Overview of Metals
- Overview of Silicon Carbide
- Overview of Silicon Nitride
- Overview of Zirconia
- Statistical Design using Orthogonal Arrays
Hobbies & Personal Stuff
This section contains notes and tutorials that I've written related to my personal interests and hobbies outside of work.
Embedded & Edge Computing
- Getting started with the NVIDIA Jetson Nano
- Getting started with the Terasic DE10-Nano
- Programming the BMC2835 SOC
- Getting started with the BeagleBone Black
- Programming the BeagleBone PRU-ICSS
- Getting started with the BeagleBone AI
- Using the TI Deep Learning (TIDL) Python API
Electronics
- Experimenting with digipots and ADCs
- Programming the HD44780 LCD Display with Raspberry Pi
- Understanding bipolar junction transistors
- Understanding the 555 Timer IC
- Understanding the TWSU Synth Kit
- Using the MAX7219CNG LED Display Driver
- Using the PMSA300I Air Quality Sensor
- Using the Sense HAT on BeagleBone Black
- Blog: Learning electronics with roulette, datasheets, and Raspberry Pi
System & OS Configuration
- Configuring Raspberry Pi as a Wireless-to-Wired Ethernet Island
- Configuring Raspberry Pi for Headless Boot
- Configuring a Solaris 10 Server
- Configuring dmake
- Converting Disk Block Size on Solaris
- Using git-crypt