I have a project and the task of the project is implementing matrix multiplication in respective parallel distributed environment (at least on 2 computers). I want to solve my problem in JAVA. There is no problem with matrix multiplication, just don't know which technology to use for running it in parallel distributed environment. What do you suggest? Thanx :)
- There are so many possible solutions, it hard to know where to start. Is this just an exercise or do you need the martix multiplication to be faster on 2 machines than one alone?Peter Lawrey– Peter Lawrey2011-12-01 10:55:29 +00:00Commented Dec 1, 2011 at 10:55
- That's a bit too broad, you should look more into the details of your project (see en.wikipedia.org/wiki/Distributed_computing); if you only need a small scale solution, you can just create your own client and servers (it basically boils down to how you want to define your tasks).Viruzzo– Viruzzo2011-12-01 11:00:25 +00:00Commented Dec 1, 2011 at 11:00
3 Answers
I've worked with Hazelcast before. Very easy and straightforward. Just be careful with parallel processing. The job needs to be big enough with a small data footprint, else you're going to be tied down by network communication.
i.e. multiplying matrices may be faster on a sinlge processor; but a hard genetic algorithm works great as each cpu can be an island as a islandic ga implementation. Network communication will be limited to emigration strategies.
good luck!
3 Comments
Hadoop is one of most widely used distributed computing tool. Though your computing requirement is not very intensive, its a good good tool to explore.
Comments
The Akka actor library has excellent support for remote actors which transparently handle data serialization. If you can decompose your matrix multiplication to use actors, you can then later configure your actors to run in the distributed environment quite easily using Akka.