কেন একটি প্রোগ্রামে নির্দিষ্ট ন্যূনতম সিপিইউ কোরের প্রয়োজন হবে?


55

এমন কোনও কোড (বা সম্পূর্ণ সফ্টওয়্যার, কোডের একটি অংশের পরিবর্তে) লিখতে পারবেন যা সিপিইউতে এন সংখ্যার চেয়ে কম সংখ্যক কোরের সাথে চলাকালীন সঠিকভাবে কাজ করবে না? ছাড়া এটা স্পষ্টভাবে চেক করে উদ্দেশ্যমূলকভাবে ব্যর্থ:

IF (noOfCores <4) তারা উদ্দেশ্য অনুযায়ী সঠিকভাবে চালিত হয় না

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

আমার উপলব্ধি থেকে, থ্রেডগুলি সিপিইউ থেকে ওএস দ্বারা সম্পূর্ণ বিচ্ছিন্ন হয় যেহেতু এটি করা যায় না।

কেবল জিনিসগুলি পরিষ্কার করতে:

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

সংক্ষেপে, এমন কোনও সফ্টওয়্যার থাকতে পারে যাতে একাধিক কোর থেকে আসা অতিরিক্ত কম্পিউটিং পাওয়ার প্রয়োজন না করে একাধিক কোর প্রয়োজন? এর জন্য কেবল এন পৃথক শারীরিক কোরের প্রয়োজন হবে।


11
আপনি যদি আমার প্রশ্নটি মনোযোগ দিয়ে পড়েন তবে দেখবেন তারা একই জিনিস জিজ্ঞাসা করছে না।
uylmz

21
যেহেতু কোরগুলির সংখ্যা পুনরুদ্ধার করা যায়, তাই এটি এন এর সাথে তুলনা করা যেতে পারে এবং যদি সেই তুলনাটি সত্যের সাথে মূল্যায়ন করা হয় তবে কোডটি বিজ্ঞাপন হিসাবে নয় এমন আচরণের মধ্যে সীমাবদ্ধ না রেখে নরকটি যা চায় তা করতে পারে। তোমার প্রশ্নটি কি?

3
আপনি কি নিশ্চিত যে সমস্যাটি সত্যই এবং সরাসরি কোর সংখ্যার সাথে সম্পর্কিত? সম্ভবত উল্লিখিত গেমটি কমপক্ষে 4 টি কোর সহ সিপিইউ দ্বারা সরবরাহ করা কোনও বৈশিষ্ট্য (সঠিকভাবে) ভিত্তিক আংশিক?
এমগোইমনে

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

3
@ এসইবিবি: আমার মনে হয় আপনি কোনও কিছুর উপরে চলে গেছেন: যদি 4 শারীরিক কোরের বেশি ক্যাশে থাকার পরে 2 শারীরিক / 4 যৌক্তিক সম্পর্ক থাকে তবে গেমটি প্রাকৃতিকভাবে 2x2 মেশিনে তাদের প্রসেসিং পাওয়ার সীমাতে আঘাত না করেই দম বন্ধ করে দিতে পারে কারণ এটি সমস্ত ক্যাশে হারিয়েছে missing সময়। পরীক্ষাটি হ'ল 2x2 কোর এবং লোড ক্যাশে বা 4 টি কোর এবং সামান্য ক্যাশে সহ একটি সিপিইউ সন্ধান করা হবে এবং দেখুন কী ঘটে।
স্টিভ জেসোপ

উত্তর:


45

মূল সখ্যতার অযত্ন ব্যবহারের মাধ্যমে এটি "দুর্ঘটনাক্রমে" করা সম্ভব হতে পারে। নিম্নলিখিত সিউডোকোড বিবেচনা করুন:

  • একটি থ্রেড শুরু করুন
  • এই থ্রেডে, এটি কোন কোরটিতে চলছে তা সন্ধান করুন
  • তার সিপিইউ অ্যাফিনিটিটিকে সেই কোরটিতে সেট করুন
  • চিরকালের জন্য গণ্যতর নিবিড় / লুপ করা শুরু করুন

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

(আপনার যদি দীর্ঘ-চলমান থ্রেড থাকে তবে সিপিইউ অ্যাফিনিটি সেট করার ফলে সাধারণত থ্রুপুট উন্নত হয়)

গেম সংস্থাগুলি কোনও কারণ ছাড়াই লোকদের আরও ব্যয়বহুল হার্ডওয়্যার কিনতে "বাধ্য" করছে এই ধারণাটি খুব প্রশ্রয়যোগ্য নয়। এটি কেবল তাদের গ্রাহককেই হারাতে পারে।

সম্পাদনা করুন: পোস্টটি এখন ৩৩ টি আপগেট পেয়েছে যা শিক্ষিত অনুমানের ভিত্তিতে তৈরি হয়েছে!

মনে হচ্ছে লোকেরা ডিএ পেয়েছে: ডুয়াল-কোর সিস্টেমগুলিতে আমি খুব খারাপভাবে চালাব: http://www.dsogaming.com/pc-performance-analyses/dragon-age-inquication-pc-performance- analysis / সেই বিশ্লেষণ হাইপারথ্রেডিং চালু করা থাকলে পরিস্থিতি ব্যাপকভাবে উন্নত হয় বলে উল্লেখ করে। এইচটি আরও কোনও নির্দেশনা ইস্যু ইউনিট বা ক্যাশে যুক্ত করে না তা দেওয়া হলেও এটি কেবল একটি থ্রেড চালানোর অনুমতি দেয় যখন অন্য ক্যাশে স্টলে থাকাকালীন, এটি দৃ strongly়ভাবে পরামর্শ দেয় যে এটি খাঁটি থ্রেডের সংখ্যার সাথে যুক্ত।

অন্য একটি পোস্টারে দাবি করা হয়েছে যে গ্রাফিক্স ড্রাইভারগুলি পরিবর্তন করা কাজ করে: http://answers.ea.com/t5/Dragon-Age-Inquifications/Working-solution-for-Intel-dual-core-CPUs/td-p/3994141 ; গ্রাফিক্স ড্রাইভারগুলি ময়দা এবং ভিলেনির এক ঘৃণ্য পোষাক হিসাবে প্রবণতা দেওয়া, এটি আশ্চর্যজনক নয়। এক কুখ্যাত ড্রাইভারের একটি "সঠিক এবং ধীর" বনাম "দ্রুত এবং ভুল" মোড ছিল যা কোয়াক.এক্স.ই.এস.এস থেকে ডাকলে নির্বাচিত হয়েছিল। এটি সম্পূর্ণভাবে সম্ভব যে ড্রাইভারগুলি বিভিন্ন সংখ্যক আপাত সিপিইউর জন্য আলাদাভাবে আচরণ করে। সম্ভবত (জল্পনা ফিরে) একটি আলাদা সিঙ্ক্রোনাইজেশন প্রক্রিয়া ব্যবহৃত হয়। স্পিনলকের অপব্যবহার ?

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

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

www.ecsl.cs.sunysb.edu/tr/ashok.pdf (২০০৮) গ্রাফিক্স কার্ডগুলির জন্য আরও ভাল সময় নির্ধারণের জন্য একটি স্নাতক থিসিস যা স্পষ্টভাবে উল্লেখ করেছে যে তারা সাধারণত প্রথম-প্রথম-প্রথম পরিবেশন করার সময়সূচী ব্যবহার করে, যা কার্যকর করা সহজ in অ-প্রাকিমূলক সিস্টেম। পরিস্থিতির উন্নতি হয়েছে? সম্ভবত না.


1
হ্যাঁ এই প্রশ্নের উত্তর দেওয়ার দুটি অংশ রয়েছে: সিপিইউ অ্যাফিনিটি কাউকে এমন কিছু কোড করার অনুমতি দেয় যা এটি উইন্ডোজে একটি প্রযুক্তিগত প্রয়োজনীয়তা তৈরি করে, বিকল্প উত্তরটি রিয়েলটাইম সিস্টেমগুলিতে খুব অবশ্যই এই জাতীয় জিনিসগুলির প্রয়োজন হতে পারে। সিপিইউ অ্যাফিনিটি উল্লেখ করার জন্য একমাত্র ব্যক্তি হিসাবে এখানে +1 যা এখানে জিজ্ঞাসা করা হচ্ছে এর জন্য সম্ভবত সবচেয়ে সম্ভাব্য অপরাধী।
জিমি হোফা

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

@ রাস্লান সম্ভবত অবৈধ সম্পর্ক স্থাপনের চেষ্টা করার ফলে অ্যাপ্লিকেশনটি প্রথম স্থানে ক্রাশ হবে?
লুয়ান

1
@Luaan ভাল যে না যে ঝুঁকিপূর্ণ ক্র্যাশ নেতৃত্ব অপারেশন। সর্বাধিক আমি যা প্রত্যাশা করব তা হ'ল ওএস দ্বারা ফিরে আসা একটি ত্রুটি। আমি সন্ধান করেছি, লিনাক্সে আমি "অবৈধ যুক্তি" ত্রুটি পেয়েছি। জানিনা উইন্ডোজ কী বলবে।
রুসলান

@ রুসলান অবশ্যই এক দশকেরও বেশি সময় ধরে প্রতিটি বড় ওএসে থ্রেড অনাহার এড়াতে কোড অন্তর্ভুক্ত করেছে (সাধারণত দীর্ঘস্থায়ীভাবে চালানোর পরে কোনও থ্রেডের অগ্রাধিকার বাড়িয়ে তোলে)।
ভু

34

4 টি কোর থাকা প্রয়োজন হতে পারে কারণ অ্যাপ্লিকেশনটি সমান্তরাল থ্রেডে চারটি কাজ চালায় এবং আশা করে যে এটি প্রায় একই সাথে শেষ হবে।

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

অপ্রত্যাশিত থ্রেড সময়সীমার কারণে যে বাগগুলি ঘটে থাকে তাদের " রেস শর্ত " হিসাবে উল্লেখ করা হয় ।

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

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


11
তবে যে কোনও গেমের যুক্তিযুক্ত ফ্রিকোয়েন্সি সহ রেন্ডার করার জন্য পরবর্তী ফ্রেমের জন্য সমস্ত গণনা সম্পূর্ণ করতে সক্ষম হওয়ার উপর একটি নাজুক নির্ভরতা রয়েছে। এমনকি যদি আপনার 4 টি থ্রেডগুলি সঠিকভাবে সিঙ্ক্রোনাইজ করা থাকে তবে সময়োপযোগী ফ্যাশনে রেন্ডার করা অসম্ভব হতে পারে এবং গেমের কোনও লাভ নেই যা কম্পিউটারের দিক থেকে সঠিক তবে পিছিয়ে এবং তোড়জোড়ের কারণে খেলতে পারা যায় না।
বেহুদা

1
@ ব্যবহারহীন: এটি সত্য নয়। আপনি কোনও স্টাটার আড়াল করতে উদাহরণস্বরূপ বাফার ফ্রেম বা সিমুলেশন ডেটা করতে পারেন এবং আরও একত্রে সামঞ্জস্যপূর্ণ ডিজাইন রয়েছে। আপনার সমস্ত প্রসেসিং এক্স টাইমে সম্পন্ন করা এবং সেই প্রক্রিয়াজাতকরণের সঠিক সিঙ্ক্রোনাইজেশনকে নিশ্চিত করা বিভিন্ন বিষয়।
ডেড এমএমজি 7'15

23
"একটি সফ্টওয়্যার আর্কিটেকচার যা নির্দিষ্ট সময়ের সাথে চলমান স্বতন্ত্র থ্রেডের উপর নির্ভর করে অত্যন্ত নাজুক" এই কারণেই আমি এমন কোনও গেমটি কল্পনাও করতে পারি না যা 2 টি কোর দিয়ে মোটেও চালিত হয় না, তবে নির্ভরযোগ্যভাবে 4 টি কোর দিয়ে কাজ করে। এমনকি 4 টি কোরের সাথে সময় নির্ধারিত হবে অনাকাঙ্ক্ষিত, সুতরাং খুব কম ঘন ঘন হলেও রেসের অবস্থাও ঘটবে।
সুইভ

8
@ স্পিক অবশ্যই কিন্তু প্রশ্নটি জিজ্ঞাসা করে "এটি কি সম্ভব?" না "এটা বুদ্ধিমান?"
ব্যবহারকারী 253751

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

16

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

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

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

আপনি, তাত্ত্বিকভাবে, একটি একক কোর এ সমস্ত ক্র্যাম করতে পারে, কিন্তু তারপরে সবকিছু আরও শক্ত হয়ে যায়। হঠাৎ আপনাকে নিশ্চিত করতে হবে যে সমস্ত গেমের স্টেট স্টাফ যথেষ্ট দ্রুত ঘটে এবং আপনার রেন্ডারিং ঘটতে দেয়। আপনি কেবল সেগুলিকে দুটি সফ্টওয়্যার থ্রেড তৈরি করতে পারবেন না কারণ ওএসকে বুঝতে "থ্রেড এ কী থ্রেড বি করে তা নির্বিশেষে 16 টি এমসিতে X পরিমাণ কাজ শেষ করতে হবে" understand

গেম ডেভেলপারদের আপনার নতুন হার্ডওয়্যার কেনার বিষয়ে শূন্য আগ্রহ রয়েছে। তাদের সিস্টেমের প্রয়োজনীয়তা থাকার কারণটি হ'ল নিম্ন প্রান্তের মেশিনগুলিকে সমর্থন করার জন্য এটি মূল্যবান নয়।


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

4
তুলনা করার জিনিসটি 2 বনাম 4 কোর নয়। এটি মূলত 1 বনাম 3 টি কোর, কারণ সিপিইউ # 0 গ্রাফিক্স ড্রাইভার এবং ডিপিসি দ্বারা অনেকটা প্যাগড হবে। আপনি যদি একটি আধুনিক আধুনিক গেমের জব সিস্টেমে বিভিন্ন ধরণের কাজের সাথে একটি সিপিইউ ওভারস্ক্রাইব করেন তবে তা উল্লেখযোগ্য ক্যাশে এবং মাইগ্রেশন প্রভাব রয়েছে। প্রয়োজনীয়তা এখানে কারণ ফ্রস্টবাইট (ডিএ: আই ইঞ্জিন) খুব সাবধানে টিউনিংয়ের সাথে গ্রাউন্ড আপ থেকে ডিজাইন করা হয়েছে যার জন্য নির্দিষ্ট সংখ্যক কোরের প্রয়োজন requires
লার্স ভিক্লুন্ড

6
@ লার্সভিক্লুন্ড মনে হচ্ছে আপনি এখানে অন্য কারও চেয়ে বেশি বিশদ জানেন। আপনি কি উত্তর একসাথে রেখে বিবেচনা করেছেন?
রোবট

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

2
@ রিক আমি সন্দেহ করি যে কোনও শেষ খেলোয়াড় সহজেই বলতে পারে যে কোনও নির্দিষ্ট গেমের সাথে অন্যের তুলনায় কী পরিমাণ সংস্থান রয়েছে resource
রোবট

9

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

স্পষ্টতই যদি রিয়েলটাইম থ্রেডগুলি এমন কোনও কিছুতে অপেক্ষা করে যা তাদের ঘুমানোর অনুমতি দেয় না (যেমন একটি স্পিনলক) প্রোগ্রাম ডিজাইনারটি খারাপ হয়ে যায়।


1
যুক্তিযুক্তভাবে, যখন কোনও ব্যবহারকারীর অ্যাপ্লিকেশন প্রথম স্থানে রিয়েলটাইম থ্রেডগুলির জন্য অনুরোধ করে, তখন ডিজাইনার বিভ্রান্ত হন: ডি
লুয়ান

2
আমি এটা করেছি. অর্ধ মিলিয়ন লাইনের কোড। প্রায় 300 লাইন ব্যবহার করে একটি কেস। রিয়েলটাইম থ্রেড তার বেশিরভাগ সময় ইনপুটটির জন্য অপেক্ষা করতে ব্যয় করে যাতে এটি ইনপুটকে টাইমস্ট্যাম্প করতে পারে এবং এটিকে কম অগ্রাধিকারের থ্রেডে দিতে পারে।
জোশুয়া

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

যদিও এটি বিশেষভাবে দক্ষ হবে না, তবে এই দৃশ্যটি কোনও অচলাবস্থার দিকে পরিচালিত করবে না - অগ্রাধিকার বিপরীতটি এটির যত্ন নেবে (গত দশকের কোনও বড় ওএসে কোনও অর্ধেক শালীন সময়সূচী ধরে নিয়ে)
ভু

2
@ জোশুয়া > উইন্ডোজ অগ্রাধিকার বিপরীতটি কী তা জানে না। কি? support.microsoft.com/kb/96418 , msdn.microsoft.com/en-us/library/windows/desktop/ms684831.aspx । এছাড়াও, অগ্রাধিকার বিপর্যয় শব্দটি বর্ণনা করে ইস্যু , না একটি সমাধান (@Voo)।
বব

3

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

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


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

2
যতক্ষণ না পিসি গেমিং থাকে ততক্ষণ এই সমস্যাগুলি বিদ্যমান। শুরুতে আমাদের 486dx এবং 486sx ছিল, পরে এমএমএক্স এবং নন-এমএমএক্স পেন্টিয়াম, কোর এবং নন-কোর এবং আজ আমাদের এন-কোর প্রয়োজনীয়তা রয়েছে। কনসোলগুলি এখনও বিদ্যমান থাকার এটি অন্যতম কারণ।
ডিজে বাজি ওয়াজি 14

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

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

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

1

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

এটি বলার অপেক্ষা রাখে না, এমন সফ্টওয়্যার লেখা সম্ভব নয় যা সবসময় এন কোরের চেয়ে কম চলবে।

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


1

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


1
এই জাতীয় পরিস্থিতিতে গেমটি এলোমেলোভাবে ব্যর্থ হয় যখন ব্যাকগ্রাউন্ড পরিষেবাগুলি চলার সময় নির্ধারিত ছিল, যা বেশিরভাগ পিসিতে থাকে frequently
জুলাইস

1

আমি মনে করি যে জোশুয়া সঠিক উপায়ে চলেছে, কেবল এটির উপসংহারে নয়।

মনে করুন আপনার কাছে এমন একটি আর্কিটেকচার রয়েছে যেখানে তিনটি থ্রেড রয়েছে যা তারা যা করতে পারে তেমন করার জন্য লেখা হয় - যখন তারা কী করছে তা শেষ করে তারা আবার এটি করে। এই থ্রেডগুলি কার্য সম্পাদন করতে কোনও কিছুর জন্য নিয়ন্ত্রণ প্রকাশ করবেন না - তারা উইন্ডোজ টাস্ক শিডিয়ুলার থেকে ল্যাগটি ঝুঁকি নিতে চান না। 4 বা ততোধিক কোর রয়েছে যতক্ষণ না এটি সূক্ষ্মভাবে কাজ করে, এটি না থাকলে এটি খারাপভাবে ব্যর্থ হয়।

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


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

@ রিরব বুস্ট এটি অগ্রাধিকার।
লরেইন পেচটেল

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

1

Is it possible to write code (or complete software, rather than a piece of code) that won't work properly when run on a CPU that has less than N number of cores?

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

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


1

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

উদাহরণস্বরূপ কল্পনা করুন কোনও প্রযোজক থ্রেড একটি সারিতে কাজ জমা দেওয়ার জন্য যা 4 টি গ্রাহক থ্রেড সরবরাহ করে। দুটি মাত্র কোর রয়েছে:

প্রযোজক স্পিনলকটি পাওয়ার চেষ্টা করে তবে এটি অন্য কোরটিতে চালিত কোনও ভোক্তা দ্বারা ধারণ করে। প্রযোজক কাটাকাটি করার সময় দুটি কোর লকস্টেপ চালাচ্ছে, লকটি ছেড়ে দেওয়ার অপেক্ষায় রয়েছে। এটি ইতিমধ্যে খারাপ, তবে এটি যতটা খারাপ তা পাবে না।
দুর্ভাগ্যক্রমে, গ্রাহক থ্রেডটি তার সময়ের কোয়ান্টামের শেষে, তাই এটি প্রিম্পটেড এবং অন্য একটি গ্রাহক থ্রেড নির্ধারিত। এটি লকটি ধরে রাখার চেষ্টা করে, তবে অবশ্যই লকটি নেওয়া হয়েছে, সুতরাং এখন দুটি কোর ঘুরছে এবং এমন কিছু জন্য অপেক্ষা করছে যা সম্ভবত ঘটতে পারে না।
প্রযোজক থ্রেডটি তার সময়ের স্লাইসের শেষ প্রান্তে পৌঁছে যায় এবং প্রিম্প্ট হয়, অন্য এক গ্রাহক জেগে। আবার দু'জন গ্রাহক একটি লক প্রকাশের অপেক্ষায় রয়েছেন, এবং আরও দুটি সময় কোয়ান্টাম পাস হওয়ার আগে এটি ঘটবে না।
[...] অবশেষে যে গ্রাহক স্পিনলকটি ধরে ছিলেন তারা লকটি ছেড়ে দিয়েছে। এটি অন্য কোরে স্পিনিং করে যারা তাৎক্ষণিকভাবে গ্রহণ করেছে। একটি 75% সুযোগ রয়েছে (3 থেকে 1) এটি অন্য গ্রাহক থ্রেড। অন্য কথায়, এটা যে প্রযোজক 75% সম্ভবত এখনও স্থগিত করা হচ্ছে। অবশ্যই এটির অর্থ গ্রাহকরাও স্টল করেন। প্রযোজককে কমিয়ে দেওয়া কাজ বাদে তাদের কিছু করার নেই।

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

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


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

-1

আপনি যদি জিজ্ঞাসা করেন তবে আমি যদি তা বুঝতে পারি তবে এটি সম্ভব, তবে এটি খুব খারাপ বিষয়।

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

সময় এবং সঠিকতার মধ্যে এই নির্ভরতা কম্পিউটার বিজ্ঞান একটি রেস শর্ত বলে

ভাগ করা তথ্যের একটি অংশে থ্রেডগুলি অ্যাক্সেসের জন্য লাইনে থাকতে হবে তা নিশ্চিত করতে সিঙ্ক্রোনাইজেশন পদ্ধতি ব্যবহার করে রেসের পরিস্থিতি প্রায়শই এড়ানো যায়। উপরে বর্ণিত কাউন্টারটি এর জন্য একটি পঠন-লিখনের লক ব্যবহার করতে পারে ।

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

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

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

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


1
কিছু খেলোয়াড় বলছেন যে এটি ডিআরএম 2 টি কোরে চলমান এবং আসল গেমটি 2-তেও চলে। যখন ডিআরএম এবং গেমের থ্রেডগুলি একই কোরতে চালিত হয় তখন তা গণ্ডগোল হয়ে যায়। তবে এটি আমার কাছে সঠিক মনে হচ্ছে না, এটি কোনও প্লেয়ার দ্বারা নির্মিত একটি ছোট গল্প হতে পারে যা ডাব্লু বা এইচডাব্লুয়ের স্থাপত্য সম্পর্কে খুব বেশি জানেন না।
uylmz

4
মূল শর্তগুলির সাথে রেসের শর্তগুলি আসলে তেমন কিছু করতে পারে না, -১ ... একাধিক ভার্চুয়াল থ্রেড সহ একক কোর মেশিনে রেসটাইমগুলি রানটাইমের সময় স্লাইসিংয়ের কৌশলের উপর সম্পূর্ণ নির্ভর করে থাকতে পারে, বা অনেকগুলি সিস্টেম সমস্ত জাতি শর্ত নির্ভর করে এড়াতে পারে মেম্বার অপারেশনগুলির সাথে এটি কতটা কঠোর ...
জিমি হোফা

1
@ রিক: প্রোগ্রামটি কীভাবে কার্যকর হয় তার অন্তরঙ্গ জ্ঞান ব্যতীত যে কোনও কিছুই অনুমান করা যায়। কেবল ডিআরএম করার জন্য দুটি কোর আমার কাছে কিছুটা অতিরিক্ত বলে মনে হচ্ছে।
blrfl

1
@ জিমি হোফা: আমি একমত নই অনাবশ্যক আচরণের কারণ না থাকলেও একটি দৌড় শর্ত এখনও একটি জাতি শর্ত। কোর গণনা করতে প্রভাবিত কিনা বা না যে আচরণ, ঘটে যা কি প্রশ্নকারী জিজ্ঞেস করলেন, কিন্তু আমি একমাত্র পরিবর্তনশীল যেমন cite নি।
blrfl

-1

উইন্ডোজ এর জন্য বিল্ট-ইন করেছে কার্যকারিতা: ফাংশন GetLogicalProcessorInformation উইন্ডোজ হয় এপিআই । কোর, ভার্চুয়াল কোর এবং হাইপারথ্রেডিং সম্পর্কিত তথ্য পেতে আপনি এটি আপনার প্রোগ্রাম থেকে কল করতে পারেন।

সুতরাং আপনার প্রশ্নের উত্তর হবে: হ্যাঁ।


3
আমি জিজ্ঞাসা করছি না "আমি কোড থেকে কোনও কোর খুঁজে বের করতে পারি?" ... এই জাতীয় কোডটি অ-উদ্দেশ্যপ্রণোদিত হবে (একটি প্রোগ্রাম চালানোর জন্য আপনাকে আরও ব্যয়বহুল সিপিইউ কিনতে বাধ্য করে - গণ্যক্ষমতার প্রয়োজন ছাড়াই)।
uylmz

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

1
এটি উইন্ডোতে কাজ করতে পারে তবে ওএসএক্স / লিনাক্স / আইওএস / অ্যান্ড্রয়েড / ইত্যাদি সম্পর্কে কী বলা যায়? যখন এটি কোনও গেমটিকে উদাহরণ হিসাবে দেখায় যেখানে এই আচরণটি দেখা হয় (এবং প্রাকৃতিক সম্পর্কটি উইন্ডোজ = গেমিং হবে) তবে এটি কোনও গেমের নির্দিষ্ট অনুরোধ বলে মনে হয় না।
রবার্ট

ড্রাগন এজের মতো খেলার জন্য, প্রশ্নগুলির মধ্যে থাকা সিস্টেমগুলি হ'ল উইন্ডোজ / এক্সবক্স / পিএস 4।
রোবট

লিনাক্স রয়েছে /proc/cpuinfoএবং sysconf(_SC_NPROCESSORS_ONLN)(পরেরটি পসিক্সে উল্লেখ করা হচ্ছে)। ন্যূনতম পারফরম্যান্স থ্রেশহোল্ড প্রয়োগ করতে তথ্য ব্যবহার করা এখনও বেশ খারাপ ফর্ম।
সিএইচও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.