ction . ▁ ▁In ▁Red u ction , ▁each ▁thread ▁is ▁provided ▁with ▁a ▁copy ▁of ▁the ▁R / W ▁conflic ting ▁variable ▁to ▁operate ▁on ▁it ▁and ▁produce ▁a ▁partial ▁result , ▁which ▁will ▁then ▁be ▁combined ▁with ▁other ▁threads ' ▁copies ▁to ▁produce ▁a ▁global ▁result . ▁Another ▁technique ▁similar ▁to ▁Priv at ization ▁is ▁called ▁Exp ansion , ▁in ▁which ▁a ▁scalar ▁variable ▁is ▁expanded ▁into ▁an ▁array , ▁which ▁makes ▁each ▁thread ▁access ▁a ▁different ▁array ▁element ▁when ▁trying ▁to ▁access ▁the ▁variable . ▁If ▁the ▁variable ▁to ▁be ▁expanded ▁is ▁already ▁a ▁matrix , ▁then ▁expansion ▁adds ▁another ▁dimension ▁to ▁the ▁matrix . ▁ ▁Priv at ization ▁ ▁As ▁it ▁was ▁previously ▁mentioned , ▁dependencies ▁or ▁conflicts ▁between ▁different ▁threads ▁during ▁execution ▁stops ▁parallel ization , ▁and ▁these ▁conflicts ▁appear ▁when ▁we ▁have ▁read / write ▁conflic ting ▁variables . ▁One ▁technique ▁to ▁remove ▁this ▁conflict ▁is ▁Priv at ization . ▁As ▁the ▁name ▁suggests , ▁the ▁basic ▁principle ▁involves ▁making ▁( Private ) ▁copies ▁for ▁each ▁thread ▁to ▁operate ▁on , ▁rather ▁than ▁the ▁shared ▁copy ▁that ▁causes ▁the ▁conflict . ▁Hence , ▁changing ▁the ▁type ▁of ▁the ▁variable ▁from ▁Read / Write ▁conflic ting ▁to ▁Read / Write ▁Non ▁conflic ting . ▁ ▁The ▁actual ▁local ▁( private ) ▁copies ▁of ▁the ▁read / write ▁conflic ting ▁variable ▁are ▁created ▁during ▁compile ▁time , ▁by ▁compiling ▁the ▁variable ▁into ▁several ▁variables ▁stored ▁at ▁different ▁memory ▁locations . ▁The ▁architecture ▁of ▁shared - memory ▁multip ro cess