[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Glug-nith-discuss] GPU Intro
[Glug-nith-discuss] GPU Intro
Thu, 3 May 2007 16:41:29 -0400
As Debarshi wanted me to write a detailed mail to the
group in order to reach all of you I am doing that. I initially had a
talk with Arjun regarding this idea and we decided to go ahead with
this. However, since most of you won't be knowing me I will give you
all a brief background about myself and then start of with what we are
trying here to achieve.
About Myself: I am a Mechanical engg. graduate from NITHam-2005 batch.
I am currently completing my MS in Mechanical itself except for the
fact that I work on computer graphics and the mechanical degree is
only for namesake. I am currently working on implementing something
called as moving least squares on a GPU and that is how I came across
Enough about me.. Now let me start off with a lot of stuff about this topic.
GPU : What is a GPU ? Well its a Graphics processing unit which is
attached to your motherboard whenever you buy a PC. Most of you must
be having Intel graphics cards I guess . However, if you all have
heard about companies called ATI and nVidia then you must be knowing
that these companies work on manufacturing Graphics Cards.
Why a GPU: Well the question here is Why should we be even thinking
about a GPU. Well for the same reason as you would be thinking about
programming on a multi-core processor or multi-processor. GPU
technologies have grown to enormous extents and the work possible with
them is much faster than that we can do with CPU. Thats 'coz these
days graphics cards come with dedicated memory and new features are
added every month. Now the deal is, not only do nVidia and ATI come up
with these cards but they also come up with languages called "Shader
Languages" which can take full advantage of these graphics cards. Now
these Shader Languages can be used to do a lot of Parallel processing
on the GPU.
Most of you might be thinking how can we do parallel processing with
GPU's. Well the Idea here is that GPU's have something called Fragment
Shaders and Vertex Shaders which work in parallel. This can be used to
achieve this Parallel approach.
Vertex & Fragment Shaders: I will try to explain this in as simple
terms as possible.
Imagine you are trying to draw a filled white rectangle to the screen.
So you give 4 coordinate pairs to whatever graphic's API you are
using. Let the rectangle be
(0,0) - (1,0) - (1, 1) - (0, 1)
So its a unit rectangle being rendered. Now what does the graphics API
do. It takes in these vertices and then after a lot of transformations
decides whether the rectangle coordinates fall within the visible area
in the screen or not. It then uses something called as a rasterizer to
generate PIXELS which fill up the whole rectangle.
---- So a vertex Shader is a program which will be called whenever you
send a Vertex data to the graphics API
---- A Fragment Shader is a program which will be called whenever a
single pixel created by the rasterizer is to be rendered onto the
Now Fragment Shaders are really nice because you can have upto 24
fragment Shaders working at a time which achieves this Parallel
A Lot of companies have started work on using GPU's and there is a lot
of work going on for using GPU's for High Performance Computing. Now
the idea we have is to build an OpenSource API for GPGPU computations,
atleast at a small level as of now.
www.gpgpu.org ===> bible site for people working on GPU based computations.
Now how do I propose to start this project off. Well, the 1st question
that pops up is
1) Do I need graphics knowledge to work with GPU's. ?
Ans: Well depends on the API you will be using. But Yeah.. some basic
concepts are used and hence are important to learn. However, these
concepts are not really tough and you can understand them pretty
The first thing I want people who are interested in working on this is
to look up some sites and get a general idea about GPU's.
http://www.cis.upenn.edu/~suvenkat/700/ ==> This is a GPU based
course having a lot of introductory papers and material. You can read
up some from here.
Now I will give a list of GPU based languages which we will be looking
Cg from nVidia:
CUDA from nVidia:
HLSL from Microsoft:
http://msdn2.microsoft.com/en-us/xna/aa937788.aspx - Included with
DirectX SDK download
GLSL from OpenGL:
included with OpenGL api.
Brook from Stanford:
Sh from U-Toronto
Close to Metal (CTM) from ATI:
This is a secure site and I have access to it. I will send out some info.
This above is a nice link I want all of you to see.
The first thing I want people to do is to try and read up on any one
of the languages. Everyone decide which languages to choose and
accordingly read up on those properly.
Since we want to know the best features and advantages and
disadvantages of each languages we would like to explore all the
features of the languages. So start with choosing any language you
feel but make sure that all the languages I mentioned above are
Then start maintaining a Wiki about all installation details on linux
for all these languages and keep maintaining the advantages and
disadvantages and any personal notes you might be having about each.
I want this Wiki to be the very detailed and to be tested in various
linux distros. Like from Fedora to Ubuntu to FreeBSD etc.
So its gonna take time but then we are in no hurry.
I have tried to give an overall Idea about the whole thing. Mail me
any questions you might be having at this id or catch me on messenger
(yahoo) : My id is ssarangi123
We can then talk on IRC on this.
Waiting for a feedback from all of you.
66 Callodine Ave
Yahoo Id: address@hidden
|[Prev in Thread]
||[Next in Thread]|
- [Glug-nith-discuss] GPU Intro,
Satyajit Sarangi <=