With a rapid development of multicore PCs, high-performance computing clusters and with client-server architecture becoming omnipresent, the standard hardware-agnostic approach to load distribution on a local machine provided in Java might not be suitable for the tasks.
Similar options are available in C++ as discussed here Parallel computing in C++ vs. Java by ENGITEX
▪ None of these assume a distributed system by default. This is the primary goal of JMP package.
▪ Unlike older tools, JMP also allows setting affinity for new processes explicitly instead of relying on the OS.
▪ Another perk made available with Java RMI is remote (dynamic) code loading which offers a new look on client-server software design.
Java MultiProcessing is a library with API that resembles Java Multithreading which is an essential built-in Java feature. The library's core component allows running a piece of Java code (further referenced as task) asynchronously on a separate process.
JMP relies on RMI for inter-process communication both on local and remote machines and uses modern Windows PowerShell for communications with the OS.
In addition to running a separate process asynchronously, Java Multiprocessing naturally incorporates a cluster management and load balancing tool. The tool takes care of load balancing between several CPUs, both on local and remote machines. A desktop running JMP server (a.k.a. JMP node ) might have its "slave" nodes for load distribution.
Java Multiprocessing scheme gives a general idea how JMP works - cluster management classes and methods rely on multiprocessing methods:
Two of the most obvious Java Multiprocessing use cases are:
a. All kinds of data parallelism (exhaustive search algorithms, optimization problems).
b. Server-side load balancing between available CPUs.
The idea of JMP came up while ENGITEX team had been working on real-life industrial projects.
Its cluster management functionality will be developed further to make JMP a natural choice in the science, oil&gas, energy and logistics.
See also:
[Concepts]
[System requirements]
[Remote code loading]
[Examples of use cases]
[Node admin panel]
Wiki: Concepts
Wiki: Examples of use cases
Wiki: Node admin panel
Wiki: Remote code loading
Wiki: System requirements