এমন অনেক প্রযুক্তিগত চ্যালেঞ্জ রয়েছে যা গণনা ফলাফলের যথার্থ বিট-বিট প্রজননযোগ্যতা অর্জন করা অত্যন্ত কঠিন।
সফ্টওয়্যার পর্যায়ে, কোডে কোড বা কোনও লাইব্রেরি কোড ব্যবহার করে স্পষ্টতই বিভিন্ন ফলাফল তৈরি হতে পারে। একটি সাধারণ বৈজ্ঞানিক কোডের সাথে যুক্ত হওয়া লাইব্রেরির সংখ্যার দ্বারা আপনি অবাক হবেন।
নিম্ন স্তরে, কোডটি নতুন সংকলক সহ বা বিভিন্ন সংকলক অপ্টিমাইজেশন চালু করে কোড দ্বারা ব্যবহৃত কোনও লাইব্রেরি পুনরায় সংযোগ করা সমস্যার কারণ হতে পারে। একটি কারণ হ'ল কোডটি পুনরায় সংযুক্ত করার সময় কোডে বিভিন্ন ক্রিয়াকলাপ একটি ভিন্ন ক্রমে সম্পাদিত হতে পারে। যেহেতু ভাসমান পয়েন্ট সংযোজনটি মিশ্রণযোগ্য নয় (a + b) + c <> a + (b + c), এটি বিভিন্ন ফলাফল দিতে পারে।
ঠিক আছে, সুতরাং যদি আমরা সম্পূর্ণ সফ্টওয়্যার পরিবেশ (ওএস, লাইব্রেরি এবং সংকলিত কোড) সংরক্ষণ করি (উদাহরণস্বরূপ) এটি কোনও বুটেবল সিডি-রোমে বার্ন করে যা কোড চালাবে। এখন আমরা কি নিশ্চিত হতে পারি যে আমরা এই কোডটি অন্য কোনও কম্পিউটারে চালালে আমরা একই ফলাফল পাব?
আশ্চর্যের বিষয়, কিছু কোডগুলি যে বিশেষ প্রসেসরের মডেলটিতে চালিত হয় তার উপর ভিত্তি করে গণনার ক্রমটি পরিবর্তিত করে। উদাহরণস্বরূপ, অপ্টিমাইজড লিনিয়ার বীজগণিত গ্রন্থাগারগুলি সাধারণত ক্যাশের সাথে খাপ খায় এমন ব্লকগুলিতে কাজ করার জন্য ম্যাট্রিক্স গুণকে ছিন্ন করে। যখন ইন্টেল একটি বৃহত ক্যাশে সহ একটি নতুন মাইক্রোপ্রসেসর প্রকাশ করে তখন কোডটি গতিসম্পন্নভাবে ব্লকের আকারকে সামঞ্জস্য করতে পারে, ফলস্বরূপ পাটিগণিত যা ভিন্ন ক্রমে সম্পাদিত হয় এবং বিভিন্ন ফলাফল দেয়। অন্যান্য কোডগুলি উপলব্ধ মেমরির পরিমাণের উপর ভিত্তি করে গননাগুলির ক্রম সামঞ্জস্য করে- আপনি যদি আরও মেমরির একটি কম্পিউটারে কোড চালনা করেন যা পাটিগণিতটি একটি ভিন্ন ক্রমে সম্পাদন করতে পারে এবং এইভাবে বিভিন্ন ফলাফল দেয়।
আপনি মাল্টিথ্রেডেড কোডে নিক্ষেপ করলে বিষয়গুলি আশ্চর্যজনকভাবে আরও জটিল হয়ে ওঠে, যেহেতু বিভিন্ন থ্রেডের সঠিক সম্পাদনার ইতিহাস প্রায়শই অ-সংজ্ঞাবিরোধী হয় এবং এটি আবার একটি রান থেকে পরের দিকে পৃথক ক্রমে গাণিতিক ক্রিয়াকলাপ ঘটাতে পারে।
অনুশীলনে আপনি সর্বাধিক আশা করতে পারেন এমন ফলাফলগুলি যা একটি মেশিন থেকে পরের মেশিনের মতো, ব্যবহৃত অ্যালগরিদমের যথার্থতা সহনশীলতা পর্যন্ত। উদাহরণস্বরূপ, যদি আমার শিকড় অনুসন্ধানের সমস্যা হয় এবং + -1.0e-10-এর মধ্যে একটি শিকড় পেতে দ্বিপথ ব্যবহার করে, তবে যতক্ষণ না বিভিন্ন মেশিনগুলি সেই সহনশীলতার মধ্যে সম্মত উত্তরগুলি প্রস্তুত করে চলেছে ততক্ষণ আমার খুশি হওয়া উচিত।