MPI_Allreduce()
আপনি যত সংখ্যক প্রসেসর ব্যবহার করেন ততক্ষণ ব্যবহার করে প্রয়োগ করা হ্রাস পুনরুত্পাদনযোগ্য, যদি এমপিআই -২.২ স্ট্যান্ডার্ডের 5..৯.১ বিভাগে নিম্নলিখিত নোটটি প্রদর্শিত হয় তবে প্রয়োগটি পর্যবেক্ষণ করা হয়।
প্রয়োগকারীদের পরামর্শ । কার্যকরভাবে MPI_REDUCE
প্রয়োগ করার পরামর্শ দেওয়া হচ্ছে যাতে একই ক্রমটি একই আদেশে উপস্থিত হয়ে একই যুক্তিতে প্রয়োগ করা হয় whenever নোট করুন যে এটি অপ্টিমাইজেশনগুলি আটকাতে পারে যা প্রসেসরের শারীরিক অবস্থানের সুবিধা নেয়। ( প্রয়োগকারীদের পরামর্শের সমাপ্তি ))
আপনার যদি কোনও মূল্য প্রজননযোগ্যতার গ্যারান্টি দরকার হয় তবে আপনি পরবর্তী অনুচ্ছেদে গাইডলাইনগুলি অনুসরণ করতে পারেন:
ব্যবহারকারীদের পরামর্শ । কিছু অ্যাপ্লিকেশনগুলি ভাসমান-পয়েন্ট অপারেশনগুলির অ-সহযোগী প্রকৃতিটিকে উপেক্ষা করতে সক্ষম হতে পারে না বা ব্যবহারকারী-সংজ্ঞায়িত ক্রিয়াকলাপগুলি (বিভাগ 5.9.5 দেখুন) ব্যবহার করতে পারে যার জন্য একটি বিশেষ হ্রাস আদেশের প্রয়োজন হয় এবং তাকে সহযোগী হিসাবে বিবেচনা করা যায় না। এই জাতীয় অ্যাপ্লিকেশনগুলির অবশ্যই মূল্যায়নের ক্রমটি স্পষ্টভাবে কার্যকর করা উচিত। উদাহরণস্বরূপ, যে ক্রিয়াকলাপগুলির ক্ষেত্রে কঠোর বাম-থেকে-ডান (বা ডান-থেকে-বাম) মূল্যায়ন আদেশের প্রয়োজন হয়, MPI_GATHER
হ্রাস অপারেশন প্রয়োগ করে একটি একক প্রক্রিয়াতে (যেমন, সহ ) সমস্ত অপারেটরকে একত্রিত করে এটি করা যেতে পারে
পছন্দসই ক্রমে (যেমন, সহ
MPI_REDUCE_LOCAL
), এবং যদি প্রয়োজন হয়, অন্য প্রক্রিয়াগুলিতে ফলাফলকে সম্প্রচার বা ছড়িয়ে দিন (যেমন, সহ MPI_BCAST
) with ( ব্যবহারকারীদের পরামর্শের সমাপ্তি ))
বিস্তৃত জিনিসের স্কিমে, বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য দক্ষ অ্যালগরিদমগুলি স্থানীয়তার সুযোগ নেয়। যেহেতু বিভিন্ন সংখ্যক প্রক্রিয়া চলাকালীন অ্যালগরিদমটি সত্যই আলাদা, তাই বিভিন্ন সংখ্যক প্রক্রিয়াতে চালানো হলে ফলাফলগুলি পুনরুত্পাদন করা কেবল ব্যবহারিক নয়। একটি সম্ভাব্য ব্যতিক্রম হ'ল স্যাঁতসেঁতে জ্যাকোবি বা বহুপদী (উদাহরণস্বরূপ চেবিশেভ) স্মুথারগুলির সাথে মাল্টিগ্রিড, যেখানে এই সাধারণ পদ্ধতিটি খুব ভাল সম্পাদন করা সম্ভব।
একই সংখ্যক প্রক্রিয়া সহ, বার্তাগুলি প্রাপ্ত ক্রম হিসাবে (যেমন ব্যবহার করা হয় MPI_Waitany()
), যা অ-নির্ধারণবাদ প্রবর্তন করে সেগুলি প্রক্রিয়া করার জন্য কার্য সম্পাদনের পক্ষে প্রায়শই উপকারী । এই ধরনের ক্ষেত্রে, আপনি দুটি রূপগুলি বাস্তবায়ন করতে পারেন, দ্রুত কোনও কোনও ক্রমে প্রাপ্ত এবং একটি স্থিতিশীল ক্রমে প্রাপ্ত "ডিবাগ" একটি। এটি আবশ্যক যে সমস্ত অন্তর্নিহিত গ্রন্থাগারগুলিও এই আচরণটি দেওয়ার জন্য লিখিত হয়।
কিছু ক্ষেত্রে ডিবাগিংয়ের জন্য, আপনি এমন একটি গণনার অংশ বিচ্ছিন্ন করতে পারেন যা এই পুনরুত্পাদনযোগ্য আচরণের প্রস্তাব দেয় না এবং সেই অপ্রয়োজনীয়ভাবে সম্পাদন করে। কীভাবে উপাদানগুলি ডিজাইন করা হয়েছিল তার উপর নির্ভর করে, সেই পরিবর্তনটি খুব সামান্য পরিমাণের কোড বা খুব অনুপ্রবেশকারী হতে পারে।