James Connolly
Back

Now

Final year project

2026/27

An Adaptive Optimization Framework for Reducing Data Movement Overhead Using ML-Guided Zero-Copy Techniques

BSc Computer Systems, University of Limerick

At Microsoft I saw how expensive it is to move data around at scale, and my final year project is my attempt to bring that cost down.

Using the retrieval stage of Graph RAG as the test application, I'm measuring how long it takes to gather a batch of table rows onto the GPU four different ways: an explicit copy through pinned memory, zero-copy reads straight from host memory, Unified Memory, and Unified Memory with batched prefetching. The goal is a framework that uses machine learning to pick the right method for each batch.

Early results are promising. On one workload, the gap between the best and worst method was 389×, which is why picking the right one matters so much.

I graduate in May 2027 and I'm looking for graduate roles in software and site reliability engineering.

2.5× faster than the standard copy, picking the best method per batch

389× gap between the best and worst method on one workload

Early results

October 2026

Preview runs on a GPU

These first runs were on a shared Tesla T4 in Google Colab (CUDA 13.0). Every gathered row was checked against its expected value, with no wrong results. The results that count will come from the university's cluster.

Test A covered 48 points: 1 and 4 GiB tables, random, clustered and in-order rows, and batch sizes from 0.01% to 30% of the table, with 2,880 timed runs per code version. Zero-copy was fastest at 46 of the 48 points, and picking the best method for each batch was 2.5× faster than the standard explicit copy.

Test B kept the data on the GPU between batches. There, Unified Memory won at 23 of 24 points, and the best method per batch was 9.6× faster than my improved explicit copy. It was one short run, so I'll be repeating it.

I also improved each method along the way. My final explicit copy is 1.46× faster than the original and Unified Memory 1.76×. Prefetching still slows down at some points, and that's the next thing I'm fixing.

46 of 48 points won by zero-copy in Test A

9.6× best method per batch in Test B

September 2026 to now

How it's going

  1. 7 to 20 SepPlanning and scoping Two weeks with my supervisor, shaping the question and what the project would cover.
  2. 21 Sep to 4 OctProposal and test harness Confirmed access to the university's GPU cluster, drafted and submitted my proposal, and built the first version of the benchmark harness.
  3. 5 to 11 OctTooling and first improvements Set up CI and tooling, and made a first improvement to each of the four methods.
  4. 12 OctFirst GPU run Found the 389× gap: zero-copy took 1.23 ms where Unified Memory took 477 ms, on a 4 GiB table of 512-byte rows.
  5. 13 OctBefore and after Ran the original and improved versions of every method side by side, and tuned the defaults.
  6. 19 to 20 OctReady to present Reworked my interim presentation after feedback from my supervisor, checked every number, and committed version 1.

Get in touch