John Lawson
Working on accelerating machine learning on a range of hardware using the SYCL parallel programming model. Designed and led development of SYCL-DNN, worked on the SYCL backend for TensorFlow and Eigen, now leading a squad to build new features across the SYCL Ecosystem.
PhD Research
Completed my PhD at Durham in 2017, looking at combinatorial and geometric properties of cluster algebras, supervised by Pavel Tumarkin. More information is available on my archived research pages. The full PhD thesis is available on Durham e-Theses.
Side projects and interesting things
The programming page gives an overview of some of the things I have worked on, and many of these projects are available on GitHub.
-
Many C++ projects have external dependencies, but there is no easy way to ensure that the required dependencies are available at build time. There has been a lot of work on package managers such as conan and vcpkg, while other projects use git submodules or just throw an error if dependencies cannot be found. Many projects already use the build system generator cmake, which provides built in functionality to help solve this problem without requiring developers to add support for a package management system.
The primary way to find and control dependencies in cmake is through
find_package
, which looks for files matching a dependency and typically creates targets encapsulating that dependency. The ExternalProject module can be used alongsidefind_package
to automatically download and build any dependencies that cannot be found locally on the system. -
I recently gave a talk at the maths department informal computing seminar (link) on using the optimizers built into compilers to give a significant performance increase in code.
-
After a trip to the US, I set about creating a video of the clips and photos from my time there. Having no experience of any video editing software I looked around for something free and open source, with Blender frequently coming up as a suggestion. Blender is best known for animating 3D models but also contains a fully functional video sequence editor (VSE).
After a little while playing aroud with it, the one thing that really annoyed me about blender’s VSE was how it imported images. Unless the image you import is exactly the same size as the render target Blender will squash it and mangle it to that size. In the video I was looking to import a large portrait photo and pan from the bottom to the top, so I needed the image in its original aspect ratio and ideally at its full resolution. Initially I manually added transfrom layers to rescale the image back to its proper aspect ration, but quickly got bored of doing this and wrote an add-on to do it for me.
The finished video:
-
Following the shock decision by the UK to leave the EU, many ideas were put forward as to the reasons behind why so many people voted the ways that they did.
In an effort to learn more about data handling in python, using pandas, matplotlib and other fun stuff I scoured the internet for data and set about plotting graphs.