Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How well do common programming tasks translate to GPUs?

Tags:

cuda

gpgpu

I have recently begun working on a project to establish how best to leverage the processing power available in modern graphics cards for general programming. It seems that the field general purpose GPU programming (GPGPU) has a large bias towards scientific applications with a lot of heavy math as this fits well with the GPU computational model. This is all good and well, but most people don't spend all their time running simulation software and the like so we figured it might be possible to create a common foundation for easily building GPU-enabled software for the masses.

This leads to the question I would like to pose; What are the most common types of work performed by programs? It is not a requirement that the work translates extremely well to GPU programming as we are willing to accept modest performance improvements (Better little than nothing, right?).

There are a couple of subjects we have in mind already:

  • Data management - Manipulation of large amounts of data from databases and otherwise.
  • Spreadsheet type programs (Is somewhat related to the above).
  • GUI programming (Though it might be impossible to get access to the relevant code).
  • Common algorithms like sorting and searching.
  • Common collections (And integrating them with data manipulation algorithms)

Which other coding tasks are very common? I suspect a lot of the code being written is of the category of inventory management and otherwise tracking of real 'objects'.

As I have no industry experience I figured there might be a number of basic types of code which is done more often than I realize but which just doesn't materialize as external products.

Both high level programming tasks as well as specific low level operations will be appreciated.

like image 306
Morten Christiansen Avatar asked Sep 04 '08 21:09

Morten Christiansen


People also ask

What programming language is used for GPU?

CUDA programming model allows software engineers to use a CUDA-enabled GPUs for general purpose processing in C/C++ and Fortran, with third party wrappers also available for Python, Java, R, and several other programming languages.

How are GPUs programmed?

A GPU program comprises two parts: a host part the runs on the CPU and one or more kernels that run on the GPU. Typically, the CPU portion of the program is used to set up the parameters and data for the computation, while the kernel portion performs the actual computation.

What is the difference between GPU and GPGPU?

The primary difference is that where GPU computing is a hardware component, GPGPU is fundamentally a software concept in which specialized programming and equipment designs facilitate massive parallel processing of non-specialized calculations.


1 Answers

General programming translates terribly to GPUs. GPUs are dedicated to performing fairly simple tasks on streams of data at a massive rate, with massive parallelism. They do not deal well with the rich data and control structures of general programming, and there's no point trying to shoehorn that into them.

like image 109
Luke Halliwell Avatar answered Sep 16 '22 20:09

Luke Halliwell