Question

I have an x86-64 computer running Linux that I would like to supplement with other non-x86-64 Linux machines.

Is it possible to somehow benefit from the computational power of another machine without it being the same architecture?

As a second question, what kind of performance increases are available and does it require specialized software to work? Or can Linux just abstract the cluster / additional machines as additional CPUs?

Was it helpful?

Solution

As Henri said, you need the software to take care of the different representations. That rules out MPI, but for example NWS (which you can use with Python, R, Matlab, ...) should work.

OTHER TIPS

Depending on the software it can or cannot be abstracted away. Doing such stuff usually involves remote procedure calls and depending on the library you use, it can or cannot be abstracted away.

A basic example is doing a RPC and giving an integer as an argument. Some architectures use big-endian, others use little-endian and your RPC library has to take care of that.

You shouldn't rely on this fact anyhow. You need to have the right abstraction layer (e.g. communication over IP is a good starting point). This is in part necessary to allow for "in service upgrades" i.e. adding newer machines that may/or not be of the same architecture as the starting cluster configuration.

Imagine going to your boss: "Well, we need to take to whole service down because we've got these fancy new machines ...". ( and I can hear the reply loud and clear )

Of course, if the concerns of a production environment is out-of-scope in your specific case, you can disregard my quote. Let's just say it would be a typical requirement for any big deployment.

Lastly, it is always easier to deal with a symmetrical cluster (maintenance is simplified) but then again, an asymmetrical cluster can be a "stepping stone" when dealing with a "rolling upgrade".

Clarification: I never eluded to abstracting everything away. Clarification #2: by "architecture" I am assuming "CPU architecture" i.e. not "architecture of the overall system".


As for the second part of your question: it all depends on the architecture of your software.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top