<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="DA" style="font-size:11.0pt;font-family:"Calibri",sans-serif">Guys,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="DA" style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">/Kristian<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> PROJ <proj-bounces@lists.osgeo.org>
<b>On Behalf Of </b>Rohan Wagle<br>
<b>Sent:</b> 23. februar 2021 21:43<br>
<b>To:</b> proj@lists.osgeo.org<br>
<b>Subject:</b> [PROJ] Question Regarding GPU Acceleration<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hello everyone,<br>
<br>
We are a group of computer engineering graduate students from The University of Michigan, currently taking a course on parallel computer architecture (<a href="https://www.eecs.umich.edu/courses/eecs570/">https://www.eecs.umich.edu/courses/eecs570/</a>). 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.<br>
<br>
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.<br>
<br>
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?<br>
<br>
Thank you,<o:p></o:p></p>
<div>
<p class="MsoNormal">Alhad Daftardar, Vaanshik Mahindroo, Venkat Vetsa, Rohan Wagle<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">The University of Michigan - EECS Department<o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>