▁be ▁analyz ed . ▁This ▁step ▁determ ines ▁whether ▁each ▁variable ▁within ▁the ▁parallel ▁task ▁should ▁be ▁shared - by - all ▁or ▁private - to - each ▁thread ▁( Det erm ining ▁the ▁scope ▁of ▁the ▁variable ). ▁It ▁is ▁important ▁to ▁note ▁that ▁this ▁particular ▁step ▁is ▁unique ▁to ▁shared - memory ▁programming , ▁as ▁opposed ▁to ▁the ▁other ▁major ▁programming ▁model ▁( message - pass ing ), ▁in ▁which ▁all ▁variables ▁are ▁private ▁since ▁each ▁process ▁has ▁its ▁own ▁address ▁space . ▁ ▁According ▁to ▁their ▁behavior , ▁the ▁variables ▁are ▁then ▁categor ized ▁into : ▁ ▁Read - Only : ▁when ▁a ▁variable ▁is ▁only ▁read ▁by ▁all ▁the ▁parallel ▁tasks . ▁ ▁Read / Write ▁Non - conf lic ting : ▁when ▁a ▁variable ▁is ▁read , ▁written , ▁or ▁both ▁by ▁only ▁one ▁task . ▁In ▁the ▁case ▁when ▁the ▁variable ▁is ▁a ▁matrix , ▁different ▁elements ▁are ▁read / written ▁by ▁different ▁parallel ▁tasks . ▁ ▁Read / Write ▁Conf lic ting : ▁when ▁a ▁variable ▁is ▁written ▁by ▁a ▁task ▁and ▁may ▁be ▁read ▁by ▁another . ▁If ▁the ▁variable ▁is ▁a ▁matrix ▁or ▁array , ▁different ▁elements ▁are ▁read / written ▁by ▁different ▁parallel ▁tasks . ▁ ▁As ▁it ▁appears ▁from ▁their ▁definition , ▁Read / Write ▁Conf lic ting ▁variables ▁result ▁in ▁dependencies ▁across ▁different ▁execution ▁threads ▁and ▁hence ▁prevent ▁the ▁parallel ization ▁of ▁the ▁program . ▁The ▁two ▁major ▁techniques ▁used ▁to ▁remove ▁these ▁dependencies ▁are ▁Priv at ization ▁and ▁Red u