[PROJ] Question Regarding GPU Acceleration

Kristian Evers kreve at sdfe.dk
Wed Feb 24 02:11:26 PST 2021


Guys,

Not much has been done in terms of parallelizing the PROJ code. We’ve made it somewhat simple for users of the library to do their own parallelizing by instantiating several PJ transformations objects. I am in no way an expert in parallel computing so take all of this with a grain of salt. My gut feeling is that the biggest gains can be found by parallelizing function suchs a proj_trans_generic() effectively letting the library handle the parallelizing rather than the user of the library. But if you are looking to speed up individual conversions there would certainly be some gains to find as well. For the biggest (user) impact I would look at the Mercator family of projections and the Helmert transformation to start with. Those would be some of the most used parts of the code. There will be other projections where better gains can be had I am sure but I don’t know of the top of my head which ones they are.

Are you considering contributing your work to the project? If so you need to be aware that we generally don’t accept new build dependencies for the library. Such an addition will need an RFC to be approved by the project steering committee and would probably need to be backed by a proof of concept implementation. Don’t worry too much about that just yet, it’s just a heads up in case you are thinking about contributing back to the project.

/Kristian

From: PROJ <proj-bounces at lists.osgeo.org> On Behalf Of Rohan Wagle
Sent: 23. februar 2021 21:43
To: proj at lists.osgeo.org
Subject: [PROJ] Question Regarding GPU Acceleration

Hello everyone,

We are a group of computer engineering graduate students from The University of Michigan, currently taking a course on parallel computer architecture (https://www.eecs.umich.edu/courses/eecs570/). As part of our course’s curriculum, we will be working on an open ended semester-long project, related to parallel computing. For this project, we are very interested in contributing code to the Proj codebase to parallelize computations, using GPU multithreading.

From our cursory evaluation of Proj’s documentation and git repository, it appears many of the projections, conversions, and transforms exhibit data parallelism, presenting an opportunity for acceleration via multithreading. We explored the codebase and documentation to check if any prior work had been done in parallelizing Proj modules, which led us to some references to cpu multithreading, but nothing GPU-based.

We are interested in writing Nvidia CUDA GPU kernels to accelerate certain modules of Proj. However, we first wanted to check with the Proj community to see whether anyone is aware of prior efforts in parallelizing Proj modules with GPU kernels, or could point us towards more information regarding the previous work with cpu-multithreading. Additionally, does anyone have recommendations of modules which the community would greatly benefit from, if GPU support was added?

Thank you,
Alhad Daftardar, Vaanshik Mahindroo, Venkat Vetsa, Rohan Wagle
The University of Michigan - EECS Department
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20210224/fc92fca5/attachment.html>


More information about the PROJ mailing list