সমান্তরাল হ্রাসের জন্য সংখ্যাসূচক অ-সাহচর্যতাকে কীভাবে সম্বোধন করবেন?


17

একটি সমান্তরাল হ্রাস অনুমান করে যে সংশ্লিষ্ট ক্রিয়াকলাপটি সাহচর্যমূলক। এই অনুমানটি ভাসমান পয়েন্ট সংখ্যা যুক্ত করার জন্য লঙ্ঘন করা হয়। আপনি জিজ্ঞাসা করতে পারেন কেন আমি এই সম্পর্কে যত্নশীল। ঠিক আছে, এটি ফলাফলগুলি কম প্রজননযোগ্য করে তোলে। এবং এটি আরও খারাপ হয়ে যায় যখন সিমুলেটেড অ্যানেলিং সাব-রউটাইনগুলির উপর এই জাতীয় পুনঃ প্রজননযোগ্য ফলাফল তৈরি করার জন্য অনুকূল (বা পরামিতিগুলি ফিট করতে) ব্যবহৃত হয়।

এই সমস্যাটি মোকাবেলার সাধারণ উপায়গুলি কী কী? নিম্নলিখিত কৌশলগুলি সম্পর্কে কী বলা যেতে পারে?

  • অ-প্রজননযোগ্যতা সম্পর্কে চিন্তা করবেন না।
  • ভাসমান পয়েন্ট সংখ্যা এবং সংযোজন সহ সমান্তরাল হ্রাস ব্যবহার করবেন না।
  • প্রজননযোগ্য উপায়ে উপযুক্ত আকারের ওয়ার্ক-প্যাকেজ তৈরি করুন এবং হাতে চূড়ান্ত হ্রাস করুন।
  • সংযোজনের জন্য উচ্চতর নির্ভুলতা ব্যবহার করুন (তবে সমস্ত সংকলক উচ্চতর নির্ভুলতা ভাসমান পয়েন্টের ধরণের প্রস্তাব দেয় না)।

আপনি একই সংখ্যক প্রসেসের প্রজননযোগ্যতা বা বিভিন্ন সংখ্যক প্রসেসরের পুনরুত্পাদনযোগ্যতা সম্পর্কে উদ্বিগ্ন? আপনি বিটওয়াইজ প্রজননযোগ্যতার জন্য কতটা পারফরম্যান্স হিট নিতে ইচ্ছুক? আপনি কি কেবল সিমুলেটেড অ্যানিলিংয়ে আগ্রহী?
জেদ ব্রাউন

@ জেডব্রাউন আমি পুনরুত্পাদনযোগ্য ফলাফল পাওয়ার সম্ভাবনা সম্পর্কে উদ্বিগ্ন, উদাহরণস্বরূপ সম্ভাব্য সমস্যাগুলি ডিবাগ করার জন্য। ফলাফলগুলি পুনরুত্পাদন করার কোনও উপায় থাকলে আমার পক্ষে এটি ঠিক আছে, উদাহরণস্বরূপ একই সংখ্যক প্রসেসর ব্যবহার করে (বা মূলত ব্যবহৃত প্রসেসরের সংখ্যা কেবল "জেনে")। আমি সংযোজনের জন্য উচ্চতর নির্ভুলতা ভাসমান পয়েন্ট ধরণের ব্যবহারের সাথে যুক্ত পারফরম্যান্স হিট নিতে আগ্রহী। আমার কংক্রিট সমস্যাগুলি বেশিরভাগই সিমুলেটেড অ্যানিলিং এবং অপ্রত্যাশিত পার্থক্যের সাথে সম্পর্কিত ছিল তবে এগুলি সমস্তই বাস্তব বাগ হিসাবে দেখা গেছে।
থমাস ক্লিম্পেল

উত্তর:


15

MPI_Allreduce()আপনি যত সংখ্যক প্রসেসর ব্যবহার করেন ততক্ষণ ব্যবহার করে প্রয়োগ করা হ্রাস পুনরুত্পাদনযোগ্য, যদি এমপিআই -২.২ স্ট্যান্ডার্ডের 5..৯.১ বিভাগে নিম্নলিখিত নোটটি প্রদর্শিত হয় তবে প্রয়োগটি পর্যবেক্ষণ করা হয়।

প্রয়োগকারীদের পরামর্শ । কার্যকরভাবে MPI_REDUCEপ্রয়োগ করার পরামর্শ দেওয়া হচ্ছে যাতে একই ক্রমটি একই আদেশে উপস্থিত হয়ে একই যুক্তিতে প্রয়োগ করা হয় whenever নোট করুন যে এটি অপ্টিমাইজেশনগুলি আটকাতে পারে যা প্রসেসরের শারীরিক অবস্থানের সুবিধা নেয়। ( প্রয়োগকারীদের পরামর্শের সমাপ্তি ))

আপনার যদি কোনও মূল্য প্রজননযোগ্যতার গ্যারান্টি দরকার হয় তবে আপনি পরবর্তী অনুচ্ছেদে গাইডলাইনগুলি অনুসরণ করতে পারেন:

ব্যবহারকারীদের পরামর্শ । কিছু অ্যাপ্লিকেশনগুলি ভাসমান-পয়েন্ট অপারেশনগুলির অ-সহযোগী প্রকৃতিটিকে উপেক্ষা করতে সক্ষম হতে পারে না বা ব্যবহারকারী-সংজ্ঞায়িত ক্রিয়াকলাপগুলি (বিভাগ 5.9.5 দেখুন) ব্যবহার করতে পারে যার জন্য একটি বিশেষ হ্রাস আদেশের প্রয়োজন হয় এবং তাকে সহযোগী হিসাবে বিবেচনা করা যায় না। এই জাতীয় অ্যাপ্লিকেশনগুলির অবশ্যই মূল্যায়নের ক্রমটি স্পষ্টভাবে কার্যকর করা উচিত। উদাহরণস্বরূপ, যে ক্রিয়াকলাপগুলির ক্ষেত্রে কঠোর বাম-থেকে-ডান (বা ডান-থেকে-বাম) মূল্যায়ন আদেশের প্রয়োজন হয়, MPI_GATHERহ্রাস অপারেশন প্রয়োগ করে একটি একক প্রক্রিয়াতে (যেমন, সহ ) সমস্ত অপারেটরকে একত্রিত করে এটি করা যেতে পারে পছন্দসই ক্রমে (যেমন, সহ MPI_REDUCE_LOCAL), এবং যদি প্রয়োজন হয়, অন্য প্রক্রিয়াগুলিতে ফলাফলকে সম্প্রচার বা ছড়িয়ে দিন (যেমন, সহ MPI_BCAST) with ( ব্যবহারকারীদের পরামর্শের সমাপ্তি ))

বিস্তৃত জিনিসের স্কিমে, বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য দক্ষ অ্যালগরিদমগুলি স্থানীয়তার সুযোগ নেয়। যেহেতু বিভিন্ন সংখ্যক প্রক্রিয়া চলাকালীন অ্যালগরিদমটি সত্যই আলাদা, তাই বিভিন্ন সংখ্যক প্রক্রিয়াতে চালানো হলে ফলাফলগুলি পুনরুত্পাদন করা কেবল ব্যবহারিক নয়। একটি সম্ভাব্য ব্যতিক্রম হ'ল স্যাঁতসেঁতে জ্যাকোবি বা বহুপদী (উদাহরণস্বরূপ চেবিশেভ) স্মুথারগুলির সাথে মাল্টিগ্রিড, যেখানে এই সাধারণ পদ্ধতিটি খুব ভাল সম্পাদন করা সম্ভব।

একই সংখ্যক প্রক্রিয়া সহ, বার্তাগুলি প্রাপ্ত ক্রম হিসাবে (যেমন ব্যবহার করা হয় MPI_Waitany()), যা অ-নির্ধারণবাদ প্রবর্তন করে সেগুলি প্রক্রিয়া করার জন্য কার্য সম্পাদনের পক্ষে প্রায়শই উপকারী । এই ধরনের ক্ষেত্রে, আপনি দুটি রূপগুলি বাস্তবায়ন করতে পারেন, দ্রুত কোনও কোনও ক্রমে প্রাপ্ত এবং একটি স্থিতিশীল ক্রমে প্রাপ্ত "ডিবাগ" একটি। এটি আবশ্যক যে সমস্ত অন্তর্নিহিত গ্রন্থাগারগুলিও এই আচরণটি দেওয়ার জন্য লিখিত হয়।

কিছু ক্ষেত্রে ডিবাগিংয়ের জন্য, আপনি এমন একটি গণনার অংশ বিচ্ছিন্ন করতে পারেন যা এই পুনরুত্পাদনযোগ্য আচরণের প্রস্তাব দেয় না এবং সেই অপ্রয়োজনীয়ভাবে সম্পাদন করে। কীভাবে উপাদানগুলি ডিজাইন করা হয়েছিল তার উপর নির্ভর করে, সেই পরিবর্তনটি খুব সামান্য পরিমাণের কোড বা খুব অনুপ্রবেশকারী হতে পারে।


6

বেশিরভাগ অংশে আমি জেড এর উত্তরটি দিই। তবে, এর বাইরে অন্য উপায় রয়েছে: সাধারণ ভাসমান পয়েন্ট সংখ্যাগুলির আকার দেওয়া, আপনি প্রতিটি সংখ্যা 4000-বা-বিট ফিক্স পয়েন্ট সংখ্যাতে সঞ্চয় করতে পারেন। সুতরাং আপনি এম্বেড থাকা ভাসমান পয়েন্ট সংখ্যা হ্রাস করতে যদি, আপনি একটি নির্ভুল গণনা পাবেন, না সাহচর্য। (দুঃখিত, এই ধারণাটি নিয়ে কে এসেছিল সে সম্পর্কে আমার কাছে উল্লেখ নেই))


1
আমি মনে করি না তিনিই প্রথম, তবে আপনার সহকর্মী ডঃ ব্যান্ডউইথ অবশ্যই এই বিষয়ে একটি দুর্দান্ত রচনা আছে: সাইট. utexas.edu/jdm4372/2012/02/15/…
জেফ

5

সিরিয়ালটিতে আপনি যেমন করতে পারেন তেমনই আপনি MPI তে একটি সংখ্যাগত স্থিতিশীল হ্রাস অ্যালগরিদম প্রয়োগ করতে পারেন। অবশ্যই একটি পারফরম্যান্স হিট হতে পারে। যদি আপনি ভেক্টরটির প্রতিলিপি বহন করতে সক্ষম হন তবে কেবল এমপিআই_গথার ব্যবহার করুন এবং মূলে সিরিয়ালের সংখ্যাগত স্থিতিশীল হ্রাস করুন। কিছু ক্ষেত্রে, আপনি দেখতে পাচ্ছেন যে পারফরম্যান্স হিট কোনও বড় বিষয় নয়।

আরেকটি সমাধান হ'ল এখানে বর্ণিত বিস্তৃত সংগ্রহকারী ব্যবহার করা । ব্যবহারকারী-সংজ্ঞায়িত হ্রাস হিসাবে আপনি এমপিআই দিয়ে এটি করতে পারেন, যদিও এটি আরও অনেক বেশি ব্যান্ডউইথ ব্যবহার করবে।

উপরোক্তগুলির জন্য একটি সমঝোতা হ'ল ক্ষতিপূরণ সমষ্টিটি ব্যবহার করা। বিশদগুলির জন্য "কাহান সমষ্টি" উল্লেখ দেখুন। হিগামের " সংখ্যার অ্যালগরিদমের নির্ভুলতা এবং স্থায়িত্ব " এই বিষয়টির একটি দুর্দান্ত উত্স।


3

একটি ভাগ করা মেমোরি সিস্টেমে থ্রেডের প্রেক্ষাপটে বিষয়টি অ্যাড্রেসিং জন্য, আমি এই পৃষ্ঠার লিখেছি ব্যাখ্যা করেছেন যে কি আমরা deal.II না: http://dealii.org/developer/doxygen/deal.II/group__threads.html #MTWorkStream


2

আমি উল্লেখ করতে চাই যে সংযোজনটির জন্য উচ্চতর নির্ভুল গাণিতিক ব্যবহার করার পরিবর্তে ক্ষতিপূরণ সংশ্লেষ ব্যবহারের সম্ভাবনা রয়েছে (দেখুন [1])। এটি বৃহত্তর ডেটা ধরণের অবলম্বন না করেই সামনের যথার্থতা বাড়িয়ে তুলতে পারে।

[1] হিগাম, এনজে ভাসমান পয়েন্ট সামোসের যথার্থতা। সাইম জার্নাল অন সায়েন্টিফিক কম্পিউটিং 14, 783–799 (1993)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.