কম্পিউটার বিজ্ঞানের ভিত্তি/সমান্তরাল প্রক্রিয়াকরণ

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

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

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

সমান্তরাল প্রক্রিয়াকরণের ধারণাটি নতুন নয়। উদাহরণস্বরূপ, একটি গাড়ির অ্যাসেম্বলি লাইন একই সময়ে একাধিক গাড়ি তৈরি করার অনুমতি দেয়। যদিও একটি নির্দিষ্ট সময়ে গাড়ির বিভিন্ন অংশ একত্রিত করা হচ্ছে, এই সমাবেশ লাইনটি সমস্ত কর্মীদের পুরো সিস্টেমের থ্রুপুট (প্রতি ইউনিট সময় নির্মিত গাড়ির সংখ্যা) বাড়াতে ব্যস্ত রাখে। আমরা থ্রুপুট আরও বাড়ানোর জন্য শ্রমিকদের দ্রুত কাজ করাতে পারি অথবা আমরা আরেকটি সমাবেশ যোগ করতে পারি এবং আরও শ্রমিক নিয়োগ করতে পারি। এটি সমান্তরাল প্রক্রিয়াকরণের একটি রূপ-পাইপলাইনিং। সমান্তরালতার আরেকটি রূপ সমগ্র কম্পিউটিং কাজকে এমন অংশে বিভক্ত করে যা একই সাথে গণনা করা যায় এবং সেগুলিকে বিভিন্ন সিপিইউতে শারীরিকভাবে চালানো যায়। (computers). এটি বন্ধুদের সাথে একটি জিগস ধাঁধা একত্রিত করার অনুরূপ। আপনি যেমন কল্পনা করতে পারেন যে কিছু অতিরিক্ত সহায়তা থাকা অবশ্যই ধাঁধাটি দ্রুত সমাধান করতে সহায়তা করবে, তবে এর অর্থ কি তত বেশি ভাল। উত্তর হল, না। সাহায্যকারীর সংখ্যা বাড়ার সঙ্গে সঙ্গে সমন্বয় এবং যোগাযোগের পরিমাণ দ্রুত বৃদ্ধি পায়। যখন আপনার কাছে অনেক বেশি লোক থাকে তখন তারা একে অপরের পায়ের আঙ্গুলের উপর পা রাখতে এবং সম্পদের জন্য একে অপরের সাথে প্রতিযোগিতা করতে শুরু করতে পারে। (space and puzzle pieces). এটি সমান্তরাল প্রক্রিয়াকরণের ওভারহেড হিসাবে পরিচিত, যা বিনিয়োগের উপর হ্রাসমান রিটার্নের কারণ হয়। আমরা এই প্যাটার্নটি স্পষ্টভাবে দেখতে পারি যখন আমরা জড়িত শ্রমিকদের একটি ফাংশন হিসাবে কর্মক্ষমতার উন্নতি পরিমাপ করি।

সমান্তরাল প্রক্রিয়াকরণ/গণনার প্রসঙ্গে আমরা কর্মক্ষমতার উন্নতি পরিমাপ করতে স্পিডআপ নামে একটি মেট্রিক ব্যবহার করি। অর্জিত স্পিডআপ সমান্তরাল প্রক্রিয়াকরণ ছাড়া সমান্তরাল প্রক্রিয়াকরণের সাথে একই কাজের সম্পাদন সময় দ্বারা বিভক্ত একটি প্রোগ্রামের সমাধান/সম্পাদন সময়ের সমান।

যেখানে:

  • হল গতি.
  • হল সমান্তরাল প্রক্রিয়াকরণ ছাড়াই পুরানো কার্যকর করার সময়।
  • হল সমান্তরাল প্রক্রিয়াকরণের সাথে নতুন কার্যকর করার সময়।

যদি সমান্তরাল প্রক্রিয়াকরণ একটি প্রোগ্রামকে দ্বিগুণ দ্রুত চালায় তবে স্পিডআপ দুই (a.k.a two-fold speedup). তাত্ত্বিকভাবে আমরা যখন শ্রমিক বা সম্পদের সংখ্যা দ্বিগুণ করব, তখন আমরা দ্বিগুণ গতি আশা করতে পারি। ব্যবহারিকভাবে এই সর্বোত্তম গতি অর্জন করা কঠিন কারণ কিছু কাজ সবসময় সমান্তরাল হয় না। উদাহরণস্বরূপ, আপনি সাধারণত বাড়ির মেঝে নির্মাণের আগে কার্পেট স্থাপন করতে পারবেন না এবং পেইন্টিংয়ের কাজটি দ্রুত করার জন্য আপনি সবসময় আরও চিত্রশিল্পী যুক্ত করতে পারবেন না। সমান্তরাল প্রসেসিং সিস্টেমগুলি (e.g.) সম্পূর্ণরূপে ব্যবহার করা থেকে আমাদের রক্ষা করার জন্য গণনামূলক কাজগুলির প্রায়শই অনুরূপ নির্ভরতা এবং সংস্থানগুলির সীমাবদ্ধতা থাকে। মাল্টি-কোর কম্পিউটার) আমাদের আছে।

চর্চা:

একটি ওয়াশিং মেশিন এবং একটি ড্রায়ার দিয়ে আপনি একবারে এক লোড লন্ড্রিতে কাজ করতে পারেন। আপনি প্রথমে এটি ধুয়ে ফেলুন এবং তারপর ড্রায়ারে রাখুন। ধরে নিন পুরো কাজটি করতে এক ঘন্টা সময় লাগে। এটি নিখুঁতভাবে কাজ করে যখন আপনার কেবল একটি লোড করার থাকে এবং এটি দ্রুত করার জন্য আপনি কিছুই করতে পারবেন না। আপনার যদি অনেক কাপড়-চোপড় ধোয়ার কাজ থাকে, তাহলে কী হবে? আপনি প্রতি ঘন্টায় অন্তত একটি লোড করতে পারেন। আপনি কি "গতি বাড়াতে" পারেন? যদি লোডের সংখ্যা নির্বিচারে বড় হতে পারে তবে প্রতি লোডের লন্ড্রি সময় আপনি সবচেয়ে কম গড় কী অর্জন করতে পারেন