HIGH PERFORMACE COMPUTING
Key to distributed systems is how process of classes in an object oriented Systems communicate.
A process is a free-standing block of code, forming part of a total system, running in parallel with other processes.
others terms for a process are “task” or “Thread”
In the world of OOA/OOD a class may be implemented as a process under the control of the operating System
Executing of its methods is determined by the “scheduler”
In system analysis Components are candidates as processes
Designed to be free standing.
We have two types of methods processes can intercommunicate, synchronous and asynchronous!
Synchronous
-Standard sequential methods as is the case with conventional program where the program is executed in memory as the piece of code is written.
-Process release control only when ready!
-Slow when you have multiple processes architecture and process control switching depends on the source code and when the programmer pre-defined switching points.
-This approach requires long functions to be split up to allow other processes to share CPU time - complex coding required.
-Time triggered: all functions must be completed within intervals defined by a clock!
-For data transfer applications and functions this approach causes no issues with data clash!
Asynchronous
-Concurrent processes on separate processors
-Each run at its own speed
“In high performance computing find maximum parallelism in problem being solved is critical - execute everything that can be executed in parallel!” -Professor LEA
Asynchronous
- Concurrent processes on separate processors
-Each run at its own speed
-Clashes may occur in data transfer!
Options to implement Asynchronous processes
-Complex multi-processors like the internet IP based communication, API web services -based communication
-Bus network - or logical bus with JMS, EMS, Tibco Messaging Platform, Solice Queue (critical financial messaging with resilience built in.
-Reduced performance but lower cost of ownership
领英推荐
-Switching requires orchestration or switching scheduler.
-Selection of highest priority to respond to urgent external events
Another approach to asynchronous architecture implementation is Event-Driven processes
-External (asynchronous) events each activate an associated process (function|)
-Events may have to wait for service
-This architecture has no problems with data transfer
Interrupts
-An interrupt activates one process asynchronously with respect to other (synchronous) --processes
-Data clashed may occur!
-Events may have to wait for service
-This architecture has no problems with data transfer
Event-driven programming
-External (asynchronous) events each activate an associated process (function|)
-Events may have to wait for service
-This architecture has no problems with data transfer
Interrupts
-External (asynchronous) events each activate an associated process (function|)
-Events may have to wait for service
-This architecture has no problems with data transfer
Event Driven Programming
-Event Dispatcher selects which event to run with multiple messaging channels
-Each handler runs to completion, but the order of running is not defined
-Response time depends on other events
-Multiple events may be held in a queue
“In high performance computing choosing the right architecture is critical to performance! The source code written must match the underlying architecture doing as much as possible in CPU cores, then L1 cache, L2 cache, Memory and as a last resort on disk preferable solid state disk for better performance”
-M Issa - Author!