Last week i had a meeting with Guy Korland our VP R&D with a prospect where we discussed patterns that will enable them to take advantage of new multicore hardware.
Early in the discussion it was was apparent that we had terminology gap between multi-core concurrency and its close relative from distributed programming world.
After that meeting Guy put together the following vocabulary that i thought was worth sharing for everyone that deals with Multi Core concurrency and distributed computing. Enjoy..
Concurrency 101:
- Serilizablity – When a concurrent algorithm can promise that the concurrent events can be ordered in a "serial" correct order when.
- Linearizablity – When a concurrent algorithm can promise that the concurrent events can be ordered in a "serial" correct order when the guiding line is that each method invocation can be consider to happen at a single point of time during the method invocation.
- Lock-Free – An Algorithm that promises that at least a single thread can progress all the time (meaning the system can progress) while other thread might even starve.
- Wait-Free - An Algorithm that promises that at all the threads can progress all the time (meaning no starvation).
- Obstruction-Free - An Algorithm that promises that any thread can progress if executed in isolation (Meaning no progress is promised)
- Consensus – An algorithm that help different process/thread to get into a single decision (proved to be impossible in distributed system) and can be done on parallel only if you use CompareAndSet.
- Amdahl’s Law – Amdahl's law is a model for the relationship between the expected speedup of parallelized implementations of an algorithm relative to the serial algorithm.
- Moore's Law – CPU speed doubled approximately every two years.
- NUMA - Non-Uniform Memory Access or Non-Uniform Memory Architecture is a computer memory design used in multiprocessors, where the memory access time depends on the memory location relative to a processor. Under NUMA, a processor can access its own local memory faster than non-local memory, that is, memory local to another processor or memory shared between processors.
In the next post i’ll write on Concurrency (Scale-up) vs Distributed Computing (Scale-out)…
Recent Comments