Resume

I use LinkedIn to generate my resume, you can see a rendering inline below, PDF and word versions are available from my

View David Irvine's profile on LinkedIn  You can find a HTML version below.

 

Sabbatical: Feb 2013 – Present

I am taking time out from my IT career to realize a long term ambition to hike the Pacific Crest Trail, climb eight mountains, and learn to sail. In my spare time, I contribute to a number of open-source projects.

HPC R&D Engineer, HPC services, Royal Dutch Shell: Jan 2011 – Feb 2013

Working with research groups, I developed and supported HPC solutions to assist Shell’s global technology research and development activities.

I automated HPC workflows for pre- and post-processing including: Data staging and migration; Automatic image, movie and 3D-scene generation; Charting and online visualization of convergence. These features reduced the complexity of the cluster environment for the end user, and made it possible see key details of the simulation at a glance without having to use 3rd party visualization tools. To further aid this, I created online tooling written in Python/Django to collate and visualize job data. I wrote Paraview scripts that submitted post processing jobs to read user defined states and render the scene to WebGL format for display in the browser.

I performed extensive tuning for key applications and workflows. (Ansys, StarCCM, Numerical Rocks, LAMMPS, MedeA/VASP, Materials Studio, QBox and internally developed seismic solvers)  This was accomplished through manipulation of compilation options, environment settings, and parameters for the MPI environment. Using hard data, I was able to demonstrate to our developers the value of using specific CPU instructions, such as AVX, (Advanced Vector Extensions (AVX) yield significant performance improvements for floating point calculations) and particular MPI implementations. I benchmarked and tuned LAMMPS for GPGPUs, which resulted in a research paper (Molecular Dynamics Simulation of Hydrocarbons on Graphics Processing Units: Benchmark Results and Application for Shear Viscosity via Green-Kubu Formalism) as well as the business case for GPGPU adoption both internally and in the cloud.

I had overall responsibility for the service development of the global WindowsHPC platform. I provided training to the HPC user and supplier groups within Shell to boost competence and awareness of the platform. I performed extensive profiling and debugging of the windows kernel, HPC infrastructure and end-user applications. (Using Windows Performance Toolkit (Xperf), Visual Studio, Kernel Debugger (kd)) Using the performance data, I was able to steer users towards practices which provide the best performance for their task.

HPC Engineer, Computational Team, Arup: Feb 2010 – Feb 2011

I provided computational expertise to a multidisciplinary team in order to increase computational capability within Arup. In order to increase task throughput, and free up end-user hardware I created a workflow and AMI to offload ray tracing/casting simulations to AWS. I integrated data from 3D CAD, document management, and simulation tools to provide third parties with real-time access to bridge information (BIM) via a web site. (Pulling data from Rhino, ProjectWise, Sharepoint, and Ansys)

Technical Project Lead, Advanced Computing, Royal Dutch shell: Oct 2006 – Feb 2010

I designed, deployed and improved high-performance computing solutions for use by upstream (SIEP) users globally. I performed a full review of storage usage and utilization, which led to significant cost reduction for dormant data and performance improvement for active data. The key to this was the development of a storage scanning and reporting tool that displayed data on storage usage patterns.  Written in Perl, it consists of a distributed scanner to gather and process metadata for each filesystem and a web interface that displays the rate of data turnover, dormancy, and other metrics required to make capacity management decisions.

As part of a centralization project, I developed a standard batch processing configuration for SIEP including development of guaranteed quota scheduling policy that guaranteed users instant access to their capacity yet enabled excess capacity to be shared.

I designed and deployed clusters globally, both on site and remotely using bare metal provisioning tools developed in-house. I prototyped virtualized desktop solutions for use in remote collaboration, in-situ visualization, and desktop replacement for high end users. (Including Citrix, SunRay/SSGD, SunViz VMWare VDI, HP RGS, MS Terminal Services) This increased hardware utilization, reduced office noise, and in many cases improved visualization capacity for end users.

Consultant, Mobile Internet, LogicaCMG: Dec 2005 – Oct 2006

I was responsible for the execution of projects to integrate LogicaCMG and 3rd-party software products on our Linux (NextGen) platforms. I worked to support and improve the capabilities of our in-house bare metal provisioning and configuration management system.

Systems engineer, Streamline Computing: Feb 2001 – Dec 2005

I designed, deployed and supported Streamlines hardware offerings to clients around the world. I deployed many clusters that at that time where in the upper-end of the top 500 list. In addition to supporting our clients, I designed and certified a hardware-based thermal cutout device to guard against system damage in the event of a HVAC malfunction.
I designed and supported a cluster monitoring tool based on ganglia with support for alerts and condition-based actions. I worked to improve our internal deployment tracking, and cluster testing packages through the use of kickstart templates and a PXE installation environment.

Consultant, Freelance: Jun 2001 – Jun 2002

I worked with clients and fellow consultants to provide bespoke solutions in the sales automation, hospitality and telecommunications field. I developed an in-room entertainment system using diskless Linux clients, Mozilla and mPlayer to provide internet access and movie streaming through the television.

Open Source

In addition to providing patches and user support for OpenLava, I wrote and maintain the Python bindings to the C library. I created a RESTful web front end written in Python/Django with API for job, queue and host management. To improve cluster reporting functionality, I wrote LavaFlow, a reporting tool that supports LSF, SGE and WindowsHPC schedulers. To evaluate scheduler performance, I created LavaStorm. It simulates user job submission and includes an MPI application to generate load on the cluster with specific resource usage profiles.

I created Loguino, an Arduino (AVR) based data acquisition platform with support for MegaSquirt ECUs, OBD, CanBus, NMEA, and many 1Wire and I2C sensors. Originally I developed this platform to provide data logging in my car, but it has since been deployed in aircraft and environmental monitoring functions.

Other Interests

I designed, fabricated, and type approved-two sports cars. I have used open source FEA and CFD solvers to model and improve the designs. I enjoy the outdoors and am a competent mountaineer and sailor.