Granularity
Granularity refers to the quantity of computation done in concurrent relative to the size of whole program. In concurrent computing, granularity is a qualitative measure of the ratio of calculation to communication. According to granularity of a system, parallel processing systems may be splitted in two groups: coarse-grain systems and fine-grain systems. In fine-grained systems, parallel parts are relatively small, that means more frequent communication. They have low calculation to communication ratio and need high communication overhead. In coarse grained systems concurrent parts are relatively large, that means more calculation and less communication. If granularity is also fine, it is possible that the overhead needed for communications and synchronization between tasks takes longer than computation. On the other side, in coarse-grain parallel systems, relatively greater amount of computational work is done. They have high computation to communication ratio as well as imply more chance for performance increase.
The degree of granularity in a system is determined by algorithm applied in addition the hardware surroundings in which this runs. On an architecturally impartial system, the granularity affects the performance of resultant program. The communication of data needed to begin a large process can take a substantial amount of time. Conversely, a large process will frequently have less communication to do for the duration of processing. A process might need only a small quantity of data to get going, but may require receiving more data to carry on processing, or may require to do lots of communication with other processes so as to perform its processing. In main cases the overhead linked with communications and synchronization is high relative to implementation speed so it's advantageous to have coarse granularity.