Sieve C++ Parallel Programming System
ચાળણી સી + + સમાંતર પ્રોગ્રામિંગ સિસ્ટમ એ સી + + કમ્પાઇલર અને સમાંતર રનટાઇમ છે જે કોડપ્લે દ્વારા ડિઝાઇન અને પ્રકાશિત કરવામાં આવ્યું છે જેનો હેતુ કોડના સમાંતરકરણને સરળ બનાવવાનો છે જેથી તે બહુ-પ્રોસેસર અથવા બહુ-કોર સિસ્ટમો પર અસરકારક રીતે ચાલી શકે. તે ઓપનએમપી, રેપિડમાઇન્ડ ડેવલપમેન્ટ પ્લેટફોર્મ અને થ્રેડિંગ બિલ્ડિંગ બ્લોક્સ (ટીબીબી) જેવી અન્ય જાણીતી સમાંતર પદ્ધતિઓનો વિકલ્પ છે. ચાળણી એ સી + + કમ્પાઇલર છે જે સીરીયલ કોડનો એક વિભાગ લેશે, જે ચાળણી માર્કર્સ સાથે એનોટેટ કરવામાં આવે છે, અને તેને આપમેળે સમાંતર બનાવશે. પ્રોગ્રામર કોડને લપેટી લેક્સિકલ અવકાશમાં સમાંતર કરવા માંગે છે, જેને 'ચાળણી' તરીકે ટેગ કરવામાં આવે છે. આ અવકાશની અંદર, જેને સામાન્ય રીતે 'ચાળણી બ્લોક' તરીકે ઓળખવામાં આવે છે, કેટલાક નિયમો લાગુ પડે છેઃ ચાળણી બ્લોકની અંદરની તમામ આડઅસરો અવકાશના અંત સુધી વિલંબિત થાય છે. આડઅસરોને ચાળણી બ્લોક અવકાશની બહાર જાહેર કરવામાં આવેલા ડેટામાં કોઈપણ ફેરફારો તરીકે વ્યાખ્યાયિત કરવામાં આવે છે. માત્ર ચાળણી અથવા તાત્કાલિક ટિપ્પણીવાળા કાર્યોને જ કૉલ કરી શકાય છે. વિલંબિત આડઅસરો ઘણી નાની નિર્ભરતાઓને દૂર કરે છે જે સામાન્ય રીતે સ્વચાલિત સમાંતરતામાં અવરોધ ઊભો કરે છે. ડાયરેક્ટ મેમરી એક્સેસ (ડીએમએ) જેવી વિવિધ ડેટા હિલચાલ પદ્ધતિઓનો વધુ સારી રીતે ઉપયોગ કરવાની મંજૂરી આપવા માટે કમ્પાઇલર દ્વારા વાંચન અને લેખનને સુરક્ષિત રીતે ફરીથી ગોઠવી શકાય છે. વધુમાં, ઉપનામ વિશ્લેષણ અને ડેટાફ્લો વિશ્લેષણને સરળ બનાવી શકાય છે. કમ્પાઇલર પછી સમાંતરતાનો ઉપયોગ કરવા માટે ચાળણી બ્લોકની અંદર કોડને ખૂબ સરળ રીતે વિભાજિત કરી શકે છે. મેમરી રૂપરેખાંકન અવકાશના આ વિભાજનનો અર્થ એ પણ છે કે ચાળણી પ્રણાલીનો ઉપયોગ બિન-સમાન મેમરી આર્કિટેક્ચરમાં થઈ શકે છે. પ્લેસ્ટેશન 3 માં ઉપયોગમાં લેવાતા સેલ માઇક્રોપ્રોસેસર જેવા મલ્ટી-કોર સીપીયુ આ પ્રકારના હોય છે, જેમાં ઝડપી કોરમાં સ્થાનિક યાદો હોય છે જેનો ઉપયોગ સિસ્ટમમાં અંતર્ગત પ્રદર્શનનો ઉપયોગ કરવા માટે થવો જોઈએ. તે x86 જેવી વહેંચાયેલ મેમરી સિસ્ટમો પર પણ કામ કરી શકે છે, જેનો અર્થ છે કે તે વિવિધ આર્કિટેક્ચર પર ચાલી શકે છે. ચાળણી બ્લોકને વિવિધ યાદો અને પ્રક્રિયા તત્વોના પદાનુક્રમ સાથેની સિસ્ટમો માટે પણ ગોઠવી શકાય છે. સમાંતરકરણ અને માપનીયતા ચાળણી કમ્પાઇલર ચાળણી બ્લોકની અંદર કોડને 'સ્પ્લિટહેયર' નિવેદન દ્વારા પરોક્ષ રીતે અથવા સ્પષ્ટ રીતે ભાગોમાં વિભાજિત કરી શકે છે. દાખલા તરીકે, નીચેનું ઉદાહરણ લૂપને સમાંતર બતાવે છેઃ ચાળણી {માટે (ઇટરેટર i (0); i <લંબાઈ; + + i) {R [i] = A [i] * B [i] સ્પ્લિટહેયર;}} કમ્પાઇલર પ્રવેશ બિંદુ તરીકે લૂપ કન્સ્ટ્રક્ટ બોડીની ઉપર એક સ્પ્લિટપોઇન્ટ ઉમેરશે. એ જ રીતે એક પછી બહાર નીકળવાના બિંદુ તરીકે ઉમેરવામાં આવશે. ચાળણી પ્રણાલીમાં, ચાળણી બ્લોક અવકાશમાં માત્ર સ્થાનિક ચલમાં નિર્ભરતા હોઈ શકે છે. જો કે, આ નિર્ભરતાઓએ વિભાજીત બિંદુઓને પાર ન કરવા જોઈએ; તેઓ સંકલન ચેતવણીઓ પેદા કરશે. આ લૂપને સમાંતર બનાવવા માટે, પ્રમાણભૂત પૂર્ણાંક લૂપિંગ કાઉન્ટરની જગ્યાએ વિશેષ 'ઇટરેટર' વર્ગનો ઉપયોગ કરી શકાય છે. તે સમાંતરકરણ માટે સલામત છે, અને પ્રોગ્રામર પોતાની મરજીથી નવા ઇટરેટર વર્ગો બનાવવા માટે મુક્ત છે. આ ઇટરેટર વર્ગો ઉપરાંત, પ્રોગ્રામર 'એક્યુમ્યુલેટર્સ' નામના વર્ગોને અમલમાં મૂકવા માટે સ્વતંત્ર છે, જેનો ઉપયોગ ઘટાડાની કામગીરી હાથ ધરવા માટે થાય છે. Iterator વર્ગો જે રીતે લાગુ કરવામાં આવે છે તે માપનીયતા માટે વિવિધ માધ્યમો ખોલે છે. ચાળણી સમાંતર રનટાઇમ લક્ષ્ય પ્લેટફોર્મ પર અમલ કરતી વખતે ગતિશીલ સટ્ટાકીય અમલનો ઉપયોગ કરે છે. આ ખૂબ જ સારી ઝડપ મેળવી શકે છે, જો કે એક જ કોર મશીન પર ચાલવાથી ઓવરહેડ થઈ શકે છે. નિર્ધારણવાદ એ ચાળણી પ્રણાલીનું એક અસામાન્ય લક્ષણ છે. જો મલ્ટી કોર મશીન પર સમાંતર ચાળણી પ્રોગ્રામ ચલાવવામાં આવે તો બગ મળે છે, જ્યારે ડીબગિંગમાં મદદ કરવા માટે એક જ કોર પર ચાલે છે ત્યારે બગ અદૃશ્ય થઈ જશે નહીં. આ રેસ શરતોને દૂર કરવાનો ફાયદો ધરાવે છે, જે સહવર્તી પ્રોગ્રામિંગમાં સૌથી સામાન્ય ભૂલોમાંની એક છે. ચાળણી બ્લોકની અંદર સમવર્તી નિયંત્રણ માળખાઓને ધ્યાનમાં લેવાની જરૂરિયાતને દૂર કરવાથી વિકાસના સમયને ઝડપી બનાવી શકાય છે અને સુરક્ષિત કોડમાં પરિણમી શકે છે. સપોર્ટેડ સિસ્ટમો સિસ્ટમ સજાતીય અથવા વિજાતીય CPU કોર સાથે અધિક્રમિક આધારિત સિસ્ટમો માટે ડિઝાઇન કરવામાં આવી છે, જેમાં સ્થાનિક યાદો હોય છે, જે DMA એન્જિન અથવા સમાન મેમરી ટ્રાન્સફર મોડેલ્સ દ્વારા જોડાયેલી હોય છે. ચાળણીને મલ્ટી-કોર x86 સિસ્ટમો, એજીયા ફિઝએક્સ ફિઝિક્સ પ્રોસેસિંગ યુનિટ અને આઇબીએમ સેલ માઇક્રોપ્રોસેસર પર સફળતાપૂર્વક કાર્યરત હોવાનું દર્શાવવામાં આવ્યું છે. જો ચોક્કસ લક્ષ્ય પ્લેટફોર્મ માટે કમ્પાઇલર કોડ જનરેટર ઉપલબ્ધ ન હોય તો એએનએસઆઈ સી ઉત્પન્ન થાય છે. આ હાલની સી કમ્પાઇલેશન ટૂલકીટ્સનો ઉપયોગ કરીને ઓટોપેરેલલાઇઝેશન માટે પરવાનગી આપે છે. સોફ્ટવેર ટ્રાન્ઝેક્શનલ મેમરી ઉપનામ વિશ્લેષણ પણ જુઓ ઓપનએમપી થ્રેડિંગ બિલ્ડિંગ બ્લોક્સ (ટીબીબી) સિલ્ક/સિલ્ક પ્લસ સ્પેક્યુલેટિવ એક્ઝેક્યુશન સંદર્ભો ચાળણી સી + + પ્રોગ્રામ્સનું ઓટો-પેરેલલાઇઝેશન એલેસ્ટેયર ડોનાલ્ડસન, એન્ટોન લોકમોટોવ, કોલિન રિલે, એન્ડ્રુ કૂક. યુરો-પાર વર્કશોપની કાર્યવાહીમાં ચિપ પર અત્યંત સમાંતર પ્રક્રિયા (એચ. પી. પી. સી. '07), રેન્સ, ફ્રાન્સ, ઓગસ્ટ 2007. કોમ્પ્યુટર સાયન્સમાં વ્યાખ્યાન નોંધો 4854,2007. વિલંબિત આડઅસરો ઇઝ મલ્ટી-કોર પ્રોગ્રામિંગ એન્ટોન લોકમોટોવ, એલન માયક્રોફ્ટ, એન્ડ્રુ રિચાર્ડ્સ. 13મી આંતરરાષ્ટ્રીય યુરો-પાર પરિષદની કાર્યવાહીમાં, રેન્સ, ફ્રાન્સ, ઓગસ્ટ 2007. કોમ્પ્યુટર સાયન્સમાં વ્યાખ્યાન નોંધો 4641,641-650,2007. ચાળણી એસ. લિન્ડલીનો ઉપયોગ કરીને નિર્ધારક ઘોષણાત્મક સમવર્તી ચલણનો અમલ કરવો. ડીએએમપી 2007 ની કાર્યવાહીમાંઃ મલ્ટીકોર પ્રોગ્રામિંગ નાઇસના ઘોષણાત્મક પાસાઓ પર વર્કશોપ, ફ્રાન્સ, જાન્યુઆરી 2007. કોડપ્લે ચાળણી સી + + સમાંતર પ્રોગ્રામિંગ સિસ્ટમ એ. રિચાર્ડ્સ. શ્વેતપત્ર, 2006. કોડપ્લે ચાળણી સી + + સિસ્ટમ પ્રસ્તુતિ સ્કોટ મેકેન્ઝી, માઇક્રોગ્રિડ 2006માં રજૂ કરવામાં આવી હતી. બાહ્ય કડીઓ કોડપ્લે ચાળણી વેબસાઇટ સમવર્તી પ્રોગ્રામિંગ ભાષાઓ એપ્લિકેશન પ્રોગ્રામિંગ ઇન્ટરફેસ C + + પ્રોગ્રામિંગ ભાષા પરિવાર