Please I had and idea of bying processors chips and connecting them in parallel and then to a main computer. But i don't know how to go about
The narrow case of things like matrix transformations for computer graphics, cryptography, physics simulations where you apply the same operation on each independent part of a large data set for SIMD/SSE instructions and a sort of the middle case for GPU cards with many cores with many more threads per core.For me to have an idea, what could be a task ideal for parallel processing?
And I mean cotinuous with no bottlenecks.
Weather forecasting and solving partial differential equations by putting a processing element at each node of a mesh.For me to have an idea, what could be a task ideal for parallel processing?
And I mean cotinuous with no bottlenecks.
It's usually the 'man' in the middle the 'architect' between pure hardware design and the software abstraction of the application programmer.BTW, in actual practice, who is more aware of the reality of the other part: those that use these computers or those that build them? Maybe these last?
Actually those software are vfx softwares so imagine the number of px image to be rendered. But then in a network will the program choose the core to use?Hello again,
An example of a good application area for parallel processing is a chess program, or other games that involve making moves like that (Checkers, etc.).
For example, for the opening move for white we might choose one of 12 different moves. But say we stick to our previously studied opening line of play which only includes three moves:
c4, d4, or e4.
The computer would have to evaluate c4 and then any of 12 different replies from black, and then any next move by white, to whatever level it does this first round to. Next, it would have to do the same evaluation except this time with the first move of d4. After that, e4. So for each first move it has to evaluate a long list of lines of possible play.
They all have only one thing in common, and that is that they are separate from each other (in the general case that is). The computer is free to evaluate either one of these first, second, and third. The only problem is, with a single core it must do these in sequence, but since they all can be evaluated individually, a four core machine can divide up the task by assigning c4 to one core, d4 to the next core, and e4 for the next core. This means it will be able to evaluate the entire set to a deeper level than would be possible with a single core in the same time span. If you only have one minute to make a move, you'll want as many cores as you can get. At the end you determine which move gave the best outcome numerically.
Numerical evaluation of ODE's can be broken up too, one core for each equation for example.
Some problems can not be broken up, such as the familiar:
E=I*R
but i suppose you can break up:
E=I*R+K*G
assigning I*R to one core and K*G to the other core. Likewise, we can break up:
Y=A*B*C*D
by doing A*B and C*D separately and then multiplying the result to get Y.
The time when this doesnt work is when the overhead of figuring out how to break it up exceeds the time that would be saved by breaking it up. For these simple examples it may not be worth it, but for more complicated equations it is definitely worth it.
I often do special picture processing on lots of files. Since we can do files in sets of 4 for example, each core of a 4 core machine can do one file, and the result is they get done almost 4 times faster than with only one core.
I have read that there is a slight loss in time, but it cant be too much from what i have seen. Of course it also depends on how the program accesses memory and especially disk, because they cant all read the same medium at the same time. It still speeds up though when the calculations are intense.
by Jake Hertz
by Jake Hertz
by Duane Benson