algorithm
बहुआयामी एल्गोरिदम
खोज…
परिचय
कुछ मल्टीथ्रेडेड एल्गोरिदम के उदाहरण।
वाक्य - विन्यास
- लूप से पहले समानांतर का मतलब है कि लूप का प्रत्येक पुनरावृत्ति एक दूसरे से स्वतंत्र है और इसे समानांतर में चलाया जा सकता है।
- स्पॉन एक नए धागे के निर्माण का संकेत है।
- सिंक सभी निर्मित थ्रेड्स को सिंक्रनाइज़ करने के लिए है।
- Arrays / मैट्रिक्स को उदाहरणों में 1 से n तक अनुक्रमित किया जाता है।
स्क्वायर मैट्रिक्स गुणन गुणा
multiply-square-matrix-parallel(A, B)
n = A.lines
C = Matrix(n,n) //create a new matrix n*n
parallel for i = 1 to n
parallel for j = 1 to n
C[i][j] = 0
pour k = 1 to n
C[i][j] = C[i][j] + A[i][k]*B[k][j]
return C
गुणन मैट्रिक्स वेक्टर बहुमूत्र
matrix-vector(A,x)
n = A.lines
y = Vector(n) //create a new vector of length n
parallel for i = 1 to n
y[i] = 0
parallel for i = 1 to n
for j = 1 to n
y[i] = y[i] + A[i][j]*x[j]
return y
मर्ज-सॉर्ट मल्टीथ्रेड
A सरणी का एक सरणी और p और q अनुक्रमित है जैसे कि आप उप-सरणी A [p..r] को सॉर्ट करने वाले हैं। B एक उप-सरणी है जिसे सॉर्ट करके पॉपुलेट किया जाएगा।
पी-मर्ज-सॉर्ट (ए, पी, आर, बी, एस) ए [पी..आर] से तत्वों को सॉर्ट करते हैं और उन्हें बी [एस..एस + आरपी] में डालते हैं ।
p-merge-sort(A,p,r,B,s)
n = r-p+1
if n==1
B[s] = A[p]
else
T = new Array(n) //create a new array T of size n
q = floor((p+r)/2))
q_prime = q-p+1
spawn p-merge-sort(A,p,q,T,1)
p-merge-sort(A,q+1,r,T,q_prime+1)
sync
p-merge(T,1,q_prime,q_prime+1,n,B,s)
यहां सहायक फ़ंक्शन है जो समानांतर में मर्ज करता है।
पी-मर्ज मानता है कि विलय करने के लिए दो उप-सरणियाँ एक ही सरणी में हैं, लेकिन यह नहीं मानते हैं कि वे सरणी में आसन्न हैं। इसलिए हमें p1, r1, P2, r2 की आवश्यकता है ।
p-merge(T,p1,r1,p2,r2,A,p3)
n1 = r1-p1+1
n2 = r2-p2+1
if n1<n2 //check if n1>=n2
permute p1 and p2
permute r1 and r2
permute n1 and n2
if n1==0 //both empty?
return
else
q1 = floor((p1+r1)/2)
q2 = dichotomic-search(T[q1],T,p2,r2)
q3 = p3 + (q1-p1) + (q2-p2)
A[q3] = T[q1]
spawn p-merge(T,p1,q1-1,p2,q2-1,A,p3)
p-merge(T,q1+1,r1,q2,r2,A,q3+1)
sync
और यहाँ सहायक फ़ंक्शन द्वि-परमाणु-खोज है।
x उप-सरणी T [p..r] में देखने की कुंजी है।
dichotomic-search(x,T,p,r)
inf = p
sup = max(p,r+1)
while inf<sup
half = floor((inf+sup)/2)
if x<=T[half]
sup = half
else
inf = half+1
return sup
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow