<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hey all, I'm interested in writing GPU-based code to improve the speed of GRASS and GDAL as a GSoC project. It's such a basic operation that is used often, I think it'll be very useful for a broad audience. (I know it will in my own work.) I have a few questions for the community:<div><br><div>1) Would both GRASS and GDAL be interested in this project? It's my intent to write the code for both projects, but I'd like to know if there's a lack of interest.</div><div><br></div><div>2) Who would be willing to mentor this project?</div><div><br></div><div>3) Is the community more interested in CUDA or OpenCL? Here is what I currently have written up in my application:</div><div><span class="Apple-style-span" style="font-family: Arial, sans-serif; border-collapse: collapse; line-height: 22px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><p><span>CUDA is a graphics programming language (similar to C) which was introduced by the graphics company nVidia. It is used to write programs which can run on nVidia GPUs and execute hundreds of threads simultaneously. There is an installed base of over 100 million CUDA capable GPUs, and a new one can be purchased for less than $100. For example, in image resampling, each pixel must be recalculated as a function of the surrounding pixels, and this must be done for millions (or billions) of pixels. If each thread calculates a pixel, CUDA is an ideal match for image resampling, and speedups in the range of 50 to 100 times can be expected in real-world applications. For more information, see nVidia's site (<a href="http://www.nvidia.com/object/cuda_what_is.html" style="color: rgb(85, 26, 139); ">http://www.nvidia.com/object/cuda_what_is.html</a>).</span></p><p>OpenCL is a GPU programming language similar to CUDA, but more of an industry standard and less mature. Advantages of OpenCL over CUDA are that it should run on more devices and its industry support. Disadvantages are its immaturity and less support for hardware features. For example, the last CUDA release was version 3.0, 12 days ago; the last OpenCL release was version 1.0, 15 months ago. The functions and languages of CUDA and OpenCL are similar, so it should be trivial to port between the languages in the future, if required. If the GRASS and/or GDAL communities prefer, I would be willing to use OpenCL in place of CUDA. (<a href="http://www.khronos.org/opencl/">http://www.khronos.org/opencl/</a>)</p><p><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "><div>4) What other GRASS modules are most in need of a speed boost? My current plan is only to improve resampling and reprojecting operations over the summer, but I'm curious what else I should look at.</div><div><br></div><div>Thanks,</div><div>Seth</div></span></p></span></div></div></body></html>