मैं अपने कोर पर एक बहुत प्रोसेसर-गहन लूप के साथ पाइथन में एक वैज्ञानिक अनुप्रयोग लिख रहा हूं। मैं इसे यथासंभव अनुकूलित करना चाहता हूं, उपयोगकर्ताओं को कम से कम असुविधा पर, जो शायद इसे पायथन स्क्रिप्ट के एक असम्बद्ध संग्रह के रूप में उपयोग करेंगे, और विंडोज, मैक और (मुख्य रूप से उबंटू) लिनक्स का उपयोग करेंगे।पाइथन में उपयोग के लिए फास्ट लूप बनाने के लिए सबसे अधिक प्लेटफॉर्म- और पायथन-संस्करण-स्वतंत्र तरीका क्या है?
वर्तमान में यह पाइथन में न्यूमपी के डैश के साथ लिखा गया है, और मैंने नीचे दिया गया कोड शामिल किया है।
- क्या कोई ऐसा समाधान है जो उचित रूप से तेज़ होगा जिसके लिए संकलन की आवश्यकता नहीं होगी? प्लेटफ़ॉर्म-आजादी को बनाए रखने का यह सबसे आसान तरीका प्रतीत होता है।
- यदि Pyrex जैसे कुछ का उपयोग करना है, जिसे संकलन की आवश्यकता होती है, तो क्या कई मॉड्यूल को बंडल करने का एक आसान तरीका है और पाइथन उनके बीच पता लगाया गया ओएस और पायथन संस्करण के आधार पर चुनते हैं? क्या पाइथन के प्रत्येक संस्करण के साथ प्रत्येक सिस्टम तक पहुंच की आवश्यकता के बिना मॉड्यूल का संग्रह बनाने का कोई आसान तरीका है?
- क्या एक विधि विशेष रूप से बहु-प्रोसेसर अनुकूलन के लिए उधार देती है?
(आप रुचि रखते हैं, पाश, एक साथ पास के चुंबकीय आयनों की एक बड़ी संख्या के योगदान, छोटे बार मैग्नेट के रूप में इलाज जोड़कर एक क्रिस्टल के अंदर एक भी बिंदु पर चुंबकीय क्षेत्र की गणना करने के लिए है। मूल रूप से these की भारी राशि।)
# calculate_dipole
# -------------------------
# calculate_dipole works out the dipole field at a given point within the crystal unit cell
# ---
# INPUT
# mu = position at which to calculate the dipole field
# r_i = array of atomic positions
# mom_i = corresponding array of magnetic moments
# ---
# OUTPUT
# B = the B-field at this point
def calculate_dipole(mu, r_i, mom_i):
relative = mu - r_i
r_unit = unit_vectors(relative)
#4pi/mu0 (at the front of the dipole eqn)
A = 1e-7
#initalise dipole field
B = zeros(3,float)
for i in range(len(relative)):
#work out the dipole field and add it to the estimate so far
B += A*(3*dot(mom_i[i],r_unit[i])*r_unit[i] - mom_i[i])/sqrt(dot(relative[i],relative[i]))**3
return B
मुझे 20000 अलग-अलग डिप्लोल्स के साथ इसका उपयोग करके 1% से कम गति प्राप्त हुई। –
ठीक है मैंने कहा था कि मुझे मामूली लाभ की उम्मीद है। –
हां, मैंने अभी यह देखने का फैसला किया कि यह कितना लाभ होगा। –