Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In cluster computing, there seems to be two options: task redirection and task splitting. Task redirection seems easy enough, you just have the master dispatch the small calls to other nodes in the cluster for processing (eg webserver clusters (I think)). Task splitting however seems wildly more complex. Since I don't think you can have two threads of the same program run on different machines, meaning you have to split up the work.

How though does one split up the work? I can see some stuff like rendering or video encoding just because you can tell each node to work on a different part of the video, but when you want to do things like calculate the 5 trillionth digit of pie, how would you split that up? Or even in science where you need to simulate weather or other resource intensive tasks?

In short, how do you split up tasks that aren't really designed for splitting up?

share|improve this question
add comment

2 Answers

up vote 3 down vote accepted

Not every task is suitable for parallel processing. Factoring is, but long division isn't. We use the term Parallel algorithm to describe tasks which are designed to be executed in parallel (potentially on multiple computers, or using multiple cores of a single computer).

share|improve this answer
add comment

Computer scientists had been dreaming of the moment in which parallel processing could be made a reality, and then it came as a surprise to find out that it's really not so advantageous or even possible to apply parallel processing to many problems. Apart from the fact that some problems must be solved in a linear fashion, there's also the fact that there are diminishing returns, which is to say, the amount of work put into simply dividing up the work and distributing it and then making sense of work done by the cluster afterwards begins to actually become more trouble than its worth.

Unfortunately this threshold depends mostly on the problem and therefore makes it difficult to know when using clusters would actually make calculations faster which leads into some very complicated algorithms.

Back to your original question, it really depends on what you want to accomplish as to whether or not you can do it. Though it should be said that if we programmers knew a way to build a program to analyze a problem, we'd all be out of a job.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.