শিরোনাম এটি সব বলে: একাধিক CPU কোর ব্যবহার করার জন্য একটি সিপিএল কোর ব্যবহার করার জন্য পরিকল্পিত একটি পুরানো প্রোগ্রাম পেতে কোন উপায় আছে?
শিরোনাম এটি সব বলে: একাধিক CPU কোর ব্যবহার করার জন্য একটি সিপিএল কোর ব্যবহার করার জন্য পরিকল্পিত একটি পুরানো প্রোগ্রাম পেতে কোন উপায় আছে?
উত্তর:
দুর্ভাগ্যবশত, একটি সিঙ্গেল CPU এর জন্য লিখিত একটি লিগ্যাসি প্রোগ্রাম একাধিক CPU কোর ব্যবহার করতে বাধ্য করা যাবে না। একাধিক CPU কোরের ব্যবহারের জন্য একাধিক থ্রেড প্রয়োজন, যা একে অপরের সাথে যোগাযোগ করার প্রয়োজন হয় যখন জাতি শর্ত এবং অন্যান্য সমস্যাগুলি ঘটে না। একটি পুরানো অ্যাপ্লিকেশনটি সিপিওর কোরের চেয়ে বেশি ব্যবহার করতে পারা যায় না যদি না এটি পুনঃলিখন করা হয় এবং শুধুমাত্র অ্যাপ্লিকেশনের প্রকৃতিটি সমান্তরাল হওয়ার অনুমতি দেয়।
এটা দিয়ে আপনার লক্ষ্য কি? বর্ধিত কর্মক্ষমতা? দু: খিত অ্যাপ্লিকেশন যা শুধুমাত্র 1 কোর ব্যবহার করার জন্য ডিজাইন করা হয় আরো ব্যবহার করা হবে না। "মাল্টি-থ্রেডেড" অ্যাপ্লিকেশনগুলির এই কথোপকথনটি কি সম্পর্কে সব কিছু।
একক কোর ব্যবহার করার জন্য পরিকল্পিত একটি প্রোগ্রামে একাধিক প্রসেসর শোষণ করার জন্য অন্তত তিনটি কৌশল রয়েছে। এই কৌশলগুলির সর্বাধিক সহজলভ্য গ্রন্থাগার এবং সিস্টেম কোড যা একাধিক কোর ব্যবহার করে বা অ্যাপ্লিকেশন কোডের সমান্তরালভাবে অন্তত আংশিকভাবে সম্পাদন করতে পারে। গার্বেজ সংগ্রহটি কার্যকারিতার একটি উদাহরণ যা সমান্তরাল হতে পারে এবং অ্যাপ্লিকেশন কার্যকরকরণ সমান্তরাল করতে পারে। স্বয়ংক্রিয় মেমরি ব্যবস্থাপনা ছাড়াও, মেমরি ডিএলওশন ফাংশনগুলিতে সমান্তরালতার কিছু সম্ভাবনা রয়েছে কারণ মেমরি বরাদ্দকারীর কেবলমাত্র উপলব্ধ মেমরির বিভাগটিকে চিহ্নিত করার পাশাপাশি কিছু কাজ করতে পারে।
একটি দ্বিতীয় কৌশল বাইনারি অনুবাদ। যদিও এটি "অ্যাপ্লিকেশনটি পুনঃলিখন করা" বলে মনে করা যেতে পারে, এটি সফ্টওয়্যার দ্বারা এবং সোর্স কোড অ্যাক্সেস ছাড়া করা হয়। থ্রেড স্তরের সমান্তরাল উত্পাদনের ফলে বাইনারি অনুবাদ (যা প্রায়শই ভিন্ন আইএসএতে লিগ্যাসি কোডটি চালনা করে, আইএসএ এক্সটেনশানগুলি শোষণ করে বা কোনও নির্দিষ্ট মাইক্রোআর্কাইটির জন্য অনুকূলিতকরণ করে এবং উচ্চতর প্রদানের জন্য গতিশীল তথ্য ব্যবহার করে) ব্যবহার করে সর্বাধিক গবেষণা এবং বিকাশের মূল লক্ষ্য বলে মনে হয় না। মানের প্রোফাইল-নির্দেশিত অপ্টিমাইজেশান), কিন্তু সম্ভাব্য সুস্পষ্ট।
একটি তৃতীয় কৌশল ফটোকপি multithreading হয়। বর্তমানে কোনও প্রসেসর (যা আমি জানি) হার্ডওয়্যার-পরিচালিত ফটোকুল মাল্টিথ্রেডিং সমর্থন করে। যাইহোক, হার্ডওয়্যার লেনদেনের মেমরির প্রবর্তনের সাথে, রানটাইম সিস্টেম বাস্তবায়ন করার সাথে সাথে এটি আরও কিছুটা বাস্তব হয়ে ওঠে কারণ এইচটিএমএলটি মেমরি ব্যবহারে দ্বন্দ্ব সনাক্ত করতে ব্যবহার করা যেতে পারে। সফ্টওয়্যার-পরিচালিত ফটোকাসিক মাল্টিথ্রেডিং সাধারণত কিছু বাইনারি অনুবাদ যুক্ত করবে, তবে এর ফটকাবাচক প্রকৃতিটি আলাদা কৌশল বিবেচনায় সমর্থন করে।
এই কৌশলগুলির কার্যকারিতা বিদ্যমান সিস্টেমগুলি (থ্রেড এবং স্পাডিং থ্রেডের মধ্যে যোগাযোগ খরচ সহ) দ্বারা সীমিত সীমিত সীমাবদ্ধতার দ্বারা সীমিত সমান্তরাল দ্বারা এবং বিনিয়োগে সীমিত ফিরতি (গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলি যা উপকারজনক হতে পারে) দ্বারা সীমিত সমান্তরালভাবে পুনর্লিখন করা হবে, অনেক অ্যাপ্লিকেশনগুলি যেমন কৌশলগুলি থেকে (বিশেষত বিদ্যুৎ / তাপ সীমার সাথে একক কোরকে একাধিক কোর থেকে উচ্চতর ফ্রিকোয়েন্সিতে চালানোর অনুমতি দেয়), এবং উন্নয়ন খরচগুলি উল্লেখযোগ্যভাবে তুলনামূলকভাবে কম উপকৃত হবে। এখনো এই কৌশল করা বিদ্যমান এবং এটি একক কোর ব্যবহার করার জন্য পরিকল্পিত একটি অ্যাপ্লিকেশনের সাথে একাধিক কোর ব্যবহার করার জন্য তাত্ত্বিকভাবে সম্ভব।
না এটা হতে পারে না। একটি প্রোগ্রাম স্পষ্টভাবে একাধিক কোর ব্যবহার করার জন্য লেখা হয়। এটা একাধিক কোর কাজ করতে তুচ্ছ না। এটা সব থ্রেড সিঙ্ক্রোনাইজেশান প্রয়োজন। যেমন কেউ বল ছুঁড়ে ফেলে, অন্য ক্যাচ দেয়, কেউ বলটিকে ধৌত করে, এক পরিষ্কার করে, তার মধ্যে একটি ভাল বাতাস থাকে কিনা বলটি পরীক্ষা করে। এখন একে অপরের স্বাধীনভাবে একটি থ্রেড চলমান হিসাবে প্রতিটি চরিত্র কল্পনা। কেউ নিক্ষেপ না যখন বল ধরা করার চেষ্টা করে। বা কেউ যখন এটি বাজানো হচ্ছে তখন বলটি পোলিশ করার চেষ্টা করে। অথবা দুটি অক্ষর ধরা এবং একইসঙ্গে বল নিক্ষেপ করার চেষ্টা করছেন। ক্র্যাশ করার অনেক উপায় আছে। সুতরাং প্রোগ্রামারদের একটি একক কোর অ্যাপ্লিকেশন সাবধানে পুনরায় ডিজাইন করতে হবে যাতে এটি একাধিক কোর সুবিধা নিতে পারে।