d2jsp
Log InRegister
d2jsp Forums > Off-Topic > Computers & IT > Programming & Development > Gpu Processing > I Just Purchased A Gpu For It!
12Next
Add Reply New Topic New Poll
Member
Posts: 9,099
Joined: Nov 23 2002
Gold: 2,911.26
Jul 29 2012 12:30am
I was wondering if anyone is using GPU processing?

I was also wondering if anyone knows how to tell how many actual working cores are in your GPU perhaps a task manager that shows usage of each core or soemthing of that nature. I found "GPU monitor" and "GPU meter" but those stopped working after i restarted my computer.

I bought the GeForce GT 640 and it says it has 384 CUDA cores but in MATLAB it only shows up as 2 multicore processors and it says 16 times that number is your number of working cores.

During testing i found that simple stuff such as parallel adding and multiplying are speed up from 3-5 times depending on how big the matrices are.


for multiplying 30000000 numbers to themselves
cputime = 0.1537
gputime = 0.0763


for adding 30000000 numbers to themselves
cputime = 0.1480
gputime = 0.0761



Properties:
Name: 'GeForce GT 640'
Index: 2
ComputeCapability: '3.0'
SupportsDouble: 1
DriverVersion: 4.2000
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+009 65535]
SIMDWidth: 32
TotalMemory: 2.1475e+009
FreeMemory: 2.0701e+009
MultiprocessorCount: 2
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 0
DeviceSupported: 1
DeviceSelected: 1



My ultimate goal is to solve PDE's using this processor and take the current computation time down from 55 hours to 1-3 hours.
Member
Posts: 32,925
Joined: Jul 23 2006
Gold: 3,804.50
Jul 29 2012 12:41am
Member
Posts: 9,099
Joined: Nov 23 2002
Gold: 2,911.26
Jul 29 2012 01:00am
Quote (carteblanche @ Jul 29 2012 02:41am)


Wrong, i wanted to know if anyone does GPU processing as my main goal... the sub stuff of what processor i have and how to access its working could go in that forum, but my main goal here is to find other who do GPU processing

This post was edited by thestealthtarget on Jul 29 2012 01:01am
Member
Posts: 16,144
Joined: Mar 27 2008
Gold: 14,618.00
Jul 29 2012 04:19am
i got no idea what you are doing...
but when I use openCL on nvidia, then I got a speedup of 10'000 times if you compare it to my octave version of the code. of course I got code which is easy to parallelizable, else I wouln't have speedup
Member
Posts: 9,099
Joined: Nov 23 2002
Gold: 2,911.26
Jul 29 2012 12:41pm
Quote (Richter @ Jul 29 2012 06:19am)
i got no idea what you are doing...
but when I use openCL on nvidia, then I got a speedup of 10'000 times if you compare it to my octave version of the code. of course I got code which is easy to parallelizable, else I wouln't have speedup


and i will be able to get this to speed up but i am just starting to playing around with it now. yes i have easy to parallelize problem.

What card are you running and what are you solving?
Member
Posts: 9,099
Joined: Nov 23 2002
Gold: 2,911.26
Jul 30 2012 01:30am


ran a stress test to make sure my GPU doesn't hinder my game card or that temps don't raise to much. All work! and stays at no more than this max temp for the 20 minute test.
Member
Posts: 16,144
Joined: Mar 27 2008
Gold: 14,618.00
Jul 30 2012 03:25am
I got a Nvidia Quadro 2000M, but it doesn't really matter in my case, because the data I get from the graphic card is soooooo much... I can't save it on the HD that fast ;) (Math->Chaos theory->parameter space)

The thing at matlab/octave is, that the written code is interpreted. If you rewrite your code in a c-program, it already will be faster (so maybe your code is 16times faster because it's just c-code running on the gpu, using ONE processing element).

How did you code the parallelizable part?

I first allocate a opencl-memory and give it to the kernel.
In my kernelfile I calculate the index of each processing element (if you work in 2D, then just skip the last line):
Code
index =
get_global_id(0) +
get_global_id(1) * get_global_size(0) +
get_global_id(2) * get_global_size(1) * get_global_size(0);

And I use the index to store all results in the memory:
Code
memory[index] = calculation(index);

Where the calculation() can be anything... in my case that are a lot of lines :)
as I started, I used this to check if it works:
Code
memory[index] = index;


what do you want to parallelize?
Member
Posts: 16,144
Joined: Mar 27 2008
Gold: 14,618.00
Jul 30 2012 03:36am
You won't find a tool which shows the usage of different processing elements... not even for single compute units... but for the compute devices (you seem to have 2 compute devices). Because it is not possible to run different code on multiple compute units on one compute device (at least as far as I have understood...).

Btw, I'm talking about this graphic:
http://upload.wikimedia.org/wikipedia/de/9/96/Platform_architecture_2009-11-08.svg

Furthermore you need to know, that if you use conditional jumps (if's), then all processing elements in a compute device will be as slow as the slowest processing element. So, when you code, you may want to avoid such things as "if" at certain places. But you'll see, it's not a complicated coding rule, if it's an easy parallelizable problem.
Member
Posts: 827
Joined: Jan 16 2012
Gold: 0.00
Warn: 10%
Jul 30 2012 08:49am
Quote (thestealthtarget @ Jul 29 2012 05:00am)
Wrong, i wanted to know if anyone does GPU processing as my main goal... the sub stuff of what processor i have and how to access its working could go in that forum, but my main goal here is to find other who do GPU processing


It's still the wrong forum.
Member
Posts: 9,099
Joined: Nov 23 2002
Gold: 2,911.26
Jul 30 2012 02:03pm
Quote (Richter @ Jul 30 2012 05:36am)
You won't find a tool which shows the usage of different processing elements... not even for single compute units... but for the compute devices (you seem to have 2 compute devices). Because it is not possible to run different code on multiple compute units on one compute device (at least as far as I have understood...).

Btw, I'm talking about this graphic:
http://upload.wikimedia.org/wikipedia/de/9/96/Platform%5Farchitecture%5F2009-11-08.svg

Furthermore you need to know, that if you use conditional jumps (if's), then all processing elements in a compute device will be as slow as the slowest processing element. So, when you code, you may want to avoid such things as "if" at certain places. But you'll see, it's not a complicated coding rule, if it's an easy parallelizable problem.


I have a set of ODE's that i want to solve. I already have a program to solve them but i want to run this is parallel so that i can optimize 3 of the parameters. These ODE's have multiple if statements for turning on and turning off release but i think i have a way around getting out of needing the if loops.

This is my first project with the GPU

my next goal is to solve a PDE using this. I have code that runs right now for about 55 hours and is using an implicit method (strictly linear with no way to parallelize). I am looking to change to an explicit method and solve it on a GPU, some accuracy will be lost but that shouldn't matter if the speed can be increased by 50 fold.
Go Back To Programming & Development Topic List
12Next
Add Reply New Topic New Poll