একটি একক থ্রেড প্রোগ্রাম একাধিক কোর ব্যবহার করা যাবে?


12

শিরোনাম এটি সব বলে: একাধিক CPU কোর ব্যবহার করার জন্য একটি সিপিএল কোর ব্যবহার করার জন্য পরিকল্পিত একটি পুরানো প্রোগ্রাম পেতে কোন উপায় আছে?


13
না, সম্ভব নয়।
Moab

5
যদি শুধু এটা সহজ ছিল ..
Brendan Long

1
যদি এমন একটি প্রোগ্রাম থাকে যা কোনও প্রসেসর 'এমুলেটেড' হয় (যেমন একটি ভিএম?) তবে আপনার মাল্টি-কোর সিপিপিটি গ্রহণ করে এবং একটি থ্রেডের বেশি প্রসেসিং পাওয়ার সাথে একক কোর CPU এমুলেটেড করে? এটা কি সম্ভব?
schizoid04

ক্রম গুরুত্বপূর্ণ কারণ, তারপর একাধিক থ্রেড মধ্যে সিঙ্ক্রোনাইজেশন পরিচালনা করবে কে।
user36582

উত্তর:


16

দুর্ভাগ্যবশত, একটি সিঙ্গেল CPU এর জন্য লিখিত একটি লিগ্যাসি প্রোগ্রাম একাধিক CPU কোর ব্যবহার করতে বাধ্য করা যাবে না। একাধিক CPU কোরের ব্যবহারের জন্য একাধিক থ্রেড প্রয়োজন, যা একে অপরের সাথে যোগাযোগ করার প্রয়োজন হয় যখন জাতি শর্ত এবং অন্যান্য সমস্যাগুলি ঘটে না। একটি পুরানো অ্যাপ্লিকেশনটি সিপিওর কোরের চেয়ে বেশি ব্যবহার করতে পারা যায় না যদি না এটি পুনঃলিখন করা হয় এবং শুধুমাত্র অ্যাপ্লিকেশনের প্রকৃতিটি সমান্তরাল হওয়ার অনুমতি দেয়।


19
এটিও মূল্যবান যে কিছু অ্যাপ্লিকেশন কেবল অ্যাকাউন্ট একাধিক কোর নিতে পুনর্লিখন করা যাবে না। এটা বেশিরভাগ প্রক্রিয়া সমান্তরালভাবে কিভাবে নির্ভর করে। অ সমান্তরাল প্রক্রিয়ার একটি সহজ উদাহরণ মানব পুনরুত্পাদন হবে: এক মহিলা 9 মাসে একটি শিশু করতে পারেন। নয় মাস নারী 9 মাসেই 9 বাচ্চা তৈরি করতে পারে, তবে এক মাসেই এক বাচ্চার জন্য 9 নারী ব্যবহার করতে পারবেন না।
AndrejaKo

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

ধন্যবাদ, সবাইকে ধন্যবাদ, আপনি আমাকে আপনার নারী এবং জন্মের উদাহরণ দিয়ে গড়ে তোলেন, বিশেষ করে যখন আপনি উত্পাদন সম্পর্কে কথা বলেন: D
Chris

যদি কোন প্রোগ্রামে স্বাধীন গাণিতিক ক্রিয়াকলাপগুলির একটি গুচ্ছ থাকে যা পরবর্তীতে একে অপরের জন্য ব্যবহার করা হয়? সম্ভবত একটি দ্বিতীয় থ্রেড প্রোগ্রাম পার্স করতে পারেন, হুম আমি কি বলছি জানি না। যদি একটি থ্রেড সমাবেশ বিশ্লেষণ করতে পারে .. "এখানে ব্যয়বহুল অপারেশন করবেন, তারপরে দ্বিতীয় ব্যয়বহুল অপারেশন করুন যা প্রথম ব্যয়বহুল অপারেশন স্পর্শ করে না" ঠিক আছে আমি এক প্রান্তে এক ব্যয়বহুল অপারেশন রাখব, অন্যটি এক, তারপর সিঙ্ক্রোনাইজ করা হবে মূল থ্রেড ফিরে। আমি মনে করি স্বাধীন প্রোগ্রাম ব্যয়বহুল অপারেশন সনাক্ত করার জন্য একটি সম্পূর্ণ প্রোগ্রাম প্রাক-পরীক্ষা করা হবে।
CausingUnderflowsEverywhere

13

এটা দিয়ে আপনার লক্ষ্য কি? বর্ধিত কর্মক্ষমতা? দু: খিত অ্যাপ্লিকেশন যা শুধুমাত্র 1 কোর ব্যবহার করার জন্য ডিজাইন করা হয় আরো ব্যবহার করা হবে না। "মাল্টি-থ্রেডেড" অ্যাপ্লিকেশনগুলির এই কথোপকথনটি কি সম্পর্কে সব কিছু।


2

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

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

একটি তৃতীয় কৌশল ফটোকপি multithreading হয়। বর্তমানে কোনও প্রসেসর (যা আমি জানি) হার্ডওয়্যার-পরিচালিত ফটোকুল মাল্টিথ্রেডিং সমর্থন করে। যাইহোক, হার্ডওয়্যার লেনদেনের মেমরির প্রবর্তনের সাথে, রানটাইম সিস্টেম বাস্তবায়ন করার সাথে সাথে এটি আরও কিছুটা বাস্তব হয়ে ওঠে কারণ এইচটিএমএলটি মেমরি ব্যবহারে দ্বন্দ্ব সনাক্ত করতে ব্যবহার করা যেতে পারে। সফ্টওয়্যার-পরিচালিত ফটোকাসিক মাল্টিথ্রেডিং সাধারণত কিছু বাইনারি অনুবাদ যুক্ত করবে, তবে এর ফটকাবাচক প্রকৃতিটি আলাদা কৌশল বিবেচনায় সমর্থন করে।

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


0

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

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