Go Back   Hardware Canucks > NEWS & REVIEWS > Press Releases & Tech News

    
Reply
 
LinkBack Thread Tools Display Modes
  #11 (permalink)  
Old February 22, 2009, 04:03 PM
MpG's Avatar
MpG MpG is offline
Hall Of Fame
 
Join Date: Aug 2007
Location: Kitchener, ON
Posts: 3,144
Default

There are also many kinds of programs that simply can't be broken down any further. If operation B is based on a result from operation A, you can't calculate them at the same time (I understand that AI programming often falls into this category). So while there's a great deal of improvement to be done in the area of parallel programming, there are limits to how far it can be taken. That said, we've got a long ways to go before we legitimately reach that point.
__________________
i7 2600K | ASUS Maximus IV GENE-Z | 580GTX | Corsair DDR3-2133
Reply With Quote
  #12 (permalink)  
Old February 22, 2009, 05:11 PM
bojangles's Avatar
Hall Of Fame
F@H
 
Join Date: Jan 2008
Location: Oakville, ON
Posts: 2,683

My System Specs

Default

Quote:
Originally Posted by MpG View Post
There are also many kinds of programs that simply can't be broken down any further. If operation B is based on a result from operation A, you can't calculate them at the same time (I understand that AI programming often falls into this category). So while there's a great deal of improvement to be done in the area of parallel programming, there are limits to how far it can be taken. That said, we've got a long ways to go before we legitimately reach that point.
Yup. That is a major problem. It's simply a problem that nature has provided us, and cannot be fixed. Those dependencies are inevitable and we, as humans must wait for them.
Reply With Quote
  #13 (permalink)  
Old March 2, 2009, 10:59 PM
Rookie
 
Join Date: Jan 2009
Posts: 17
Default

Quote:
Originally Posted by bojangles View Post
Kind of. That's what pipelining was for. It was a way to act like parallelism, but also behave like a linear process. It allowed instructions to fetch, execute and store while others were doing the same thing on a different clock cycle. It solved most of the shared memory problems and wait times to store data in a cache or the RAM. This is why GPUs have more processing power than CPUs these days.

The CPU still uses a very large cache array, while the GPU uses a very complicated pipeline architecture. However, CPUs are best for solving static instructions like math calculations and things that are already written in stone (C++ code, etc), which is why the cache plays a vital role when fetching data and instructions. I don't know how the cache is set up in today's chips, but what I know is that they do separate the L1, L2, and L3 cache in such a way that it allows higher priority to either data or instructions, depending on what the processor is designed for (I'm talking the construction of any CPU, not just a Pentium, Phenom, etc.).

The GPU are extremely valuable when it comes to dynamic instructions, etc. because it needs to calculate rapidly changing variables, like in video games. Because of its pipelining architecture, it can solve vector algebra much quicker than a CPU (solving an N x N matric by a CPU is an order of N^2), but parallelism can solve that much more quickly), which is why GPUs are becoming widely used in solving highly complex environments. It is also why we put multiple CPUs in a server. However, with today's technology, we can push a higher amount of numbers out with less GPUs, than an array of CPUs.

A computer is stupid. Seriously. It can only do one thing, but it can do it really well.

We just have to figure out where we can do it the fastest.
Wow thanks, I actually understood part of it too haha.

To the bold, computers were only made to do that one thing in the first place anyway so I'd say we acomplished the goal and then some. Everything else is just gravy, sort of like building a toaster and one day finding out you can play games on it.
Reply With Quote
  #14 (permalink)  
Old June 28, 2009, 12:39 AM
Rookie
 
Join Date: May 2009
Location: Vancouver, BC
Posts: 33
Default

I can't agree anymore. Having some programming experience I know how hard it is to take use of multiple cores; I have only dug up the surface and found it immensely difficult. This is largely related to the requirement of A before B as mentioned before. Its quite sad that we have come such a long way to have only made a glorified calculator and the fact we need to go organic for smaller CPUs almost makes computer science biology class (Oh I dread the day when I am in Varcity).

Quote:
Originally Posted by bojangles View Post
Kind of. That's what pipelining was for. It was a way to act like parallelism, but also behave like a linear process. It allowed instructions to fetch, execute and store while others were doing the same thing on a different clock cycle. It solved most of the shared memory problems and wait times to store data in a cache or the RAM. This is why GPUs have more processing power than CPUs these days.

The CPU still uses a very large cache array, while the GPU uses a very complicated pipeline architecture. However, CPUs are best for solving static instructions like math calculations and things that are already written in stone (C++ code, etc), which is why the cache plays a vital role when fetching data and instructions. I don't know how the cache is set up in today's chips, but what I know is that they do separate the L1, L2, and L3 cache in such a way that it allows higher priority to either data or instructions, depending on what the processor is designed for (I'm talking the construction of any CPU, not just a Pentium, Phenom, etc.).

The GPU are extremely valuable when it comes to dynamic instructions, etc. because it needs to calculate rapidly changing variables, like in video games. Because of its pipelining architecture, it can solve vector algebra much quicker than a CPU (solving an N x N matric by a CPU is an order of N^2), but parallelism can solve that much more quickly), which is why GPUs are becoming widely used in solving highly complex environments. It is also why we put multiple CPUs in a server. However, with today's technology, we can push a higher amount of numbers out with less GPUs, than an array of CPUs.

A computer is stupid. Seriously. It can only do one thing, but it can do it really well.

We just have to figure out where we can do it the fastest.
__________________
Got a bargain? Count me in!
The Guy @ Hardwarelogic.com
Reply With Quote
  #15 (permalink)  
Old July 1, 2009, 05:58 AM
Mr. Cipher's Avatar
MVP
F@H
 
Join Date: Oct 2007
Location: London (UK)
Posts: 458
Default

Having minimal programming experience (pascal, java, VBA - all for finance not gaming uses), I find it hard to understand why portions of games cannot be assigned to one thread, while another thread handles the "wait until A is complete to do B" set of instructions that prevents us from moving very far with multi-thread programming, as you suggested above.

For example, couldn't one thread handle static stuff like weather, time of day while another handles some AI? Or can threads not be interrupted by another thread once started?
__________________
i7 Red
EVGA X58 Classy | i7 920 D0 | Megahalems w. 1 noctua push| Mushkin Redline | Radeon HD 6870 | 2x640 WD Black | Corsair HX1000 | HAF 932 | Asus 26" LCD

C2Q Blue
Gigabyte EP45-UD3p | Q8400 @ 2.66ghz | Thermalright Ultra 120 Extreme w. Scythe | Mushkin Redline PC2-8000 5-5-5-15-2T @ 400mhz |
BFG GTX 295 | 1.32TB WD HDDs | Corsair HX 620 W | Antec 900 | Acer 20" LCD
Reply With Quote
  #16 (permalink)  
Old July 1, 2009, 10:28 AM
Allstar
 
Join Date: Nov 2008
Posts: 561
Default

Quote:
Originally Posted by Mr. Cipher View Post
while another thread handles the "wait until A is complete to do B" set of instructions that prevents us from moving very far with multi-thread programming, as you suggested above.
i'm not entirely sure if i get you...but here goes.

you can multi-thread all you want, but if the in-order process takes longer than the out-of-order processes, you're just wasting effort.

as an example, there is an in-order process takes 10 seconds and there are three out-of-order processes that take 5 seconds each.

in a single-threaded application, the program would take 25 seconds to run. in a dual-threaded environment, it would take 15 seconds to run(the IO in one thread and OOOs in another thread). with 3 threads, it would take 10 seconds(IO in one, two OOs in another, and the 3rd OO by itself). now....we COULD enable 4-threads....but that ould be pointless since the run-time would till be 10 seconds.

theres a whole lot of other technicalities and workarounds and stuff, but thats quite a bit beyond me....

ps, there is a difference between processes and threads...i'm just being lazy with my terminology.
Reply With Quote
Reply


Thread Tools
Display Modes

Similar Threads
Thread Thread Starter Forum Replies Last Post
Intel Core 2 Quad Q8200 vs Intel Core 2 Duo E8500 Hanibal{CA} New Builds 18 August 10, 2009 07:53 PM
[WTB] WTB: intel C2D jay51 Buy/Sell & Trade 1 January 24, 2009 12:44 PM
Asus P6T X58 Deluxe Westmere 32nm compatible? ev0styLe CPU's and Motherboards 2 December 7, 2008 04:05 PM
Intel E6750 VS Intel Q6600 Computergeek CPU's and Motherboards 12 August 29, 2008 01:40 PM
Intel bad axe maurier CPU's and Motherboards 0 July 17, 2008 04:45 AM