জিপিইউর পরিবর্তে সিপিইউ ব্যবহারের কোনও সুবিধা আছে কি?


63

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


17
আপনি যদি এমন একটি খেলায় থাকেন যেখানে আপনি জিপিইউতে সমস্ত কিছু অফলোড করে চলেছেন এবং আপনার সিপিইউ খুব কমই কিছু করছে তবে আপনি কিছুটা লোড সিপিইউতে রেখে পারফরম্যান্স বৃদ্ধি পেতে পারবেন।
টেট্রাড

3
আপনার জিপিইউ এটি সম্ভবত আপনার সিপিইউর চেয়ে ভাল, তবে আমি মনে করি না যে আপনার ভিডিও কার্ডটি আপনার মেইনবোর্ডের চেয়ে ভাল (এবং আমি ড্রাইভারের সাথে ওএসটির তুলনা করব না)
ই-এমইই

27
GPU is faster than a CPUএটি একটি মিথ্যা কল্পকাহিনী যা বহু লোকেরা বিশেষত জিপিইউয়ের জন্য প্রস্তুত করা সমস্যাগুলির ভিত্তিতে বেঞ্চমার্কগুলি দেখার পরে বিশ্বাস করতে পরিচালিত হয় (এই শ্রেণীর সমস্যাকে "বিব্রতকরভাবে সমান্তরাল সমস্যা" বলা হয়), এই সুপার ব্যবহারকারী প্রশ্নটিতে আমার উত্তর দেখুন: আমরা এখনও কেন ব্যবহার করছি? জিপিইউগুলির পরিবর্তে সিপিইউ?
মিথ্যা রায়ান


5
একটি সুবিধা হ'ল প্রতিটি কম্পিউটারের সিপিইউ থাকে :)
টিম হল্ট

উত্তর:


50

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

তে জিপিইউতে কার্যকর একটি প্রোগ্রামটি বোঝায় যখন এটি সমান্তরালভাবে বহুবার কার্যকর করা আবশ্যক, উদাহরণস্বরূপ যখন আপনাকে টেক্সচার বি থেকে পিক্সেল সহ টেক্সচার এ থেকে সমস্ত পিক্সেল মিশ্রিত করতে হবে এবং সেগুলি সমস্ত টেক্সচার সিতে রেখে দিতে হবে, এই কার্যটি কার্যকর করার সময় একটি সিপিইউ, এমন কিছু হিসাবে প্রক্রিয়া করা হবে:

for( int i =0; i< nPixelCount; i++ )
     TexC[i] = TexA[i] + TexB[i];

আপনি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরেاوস্থর তরফরানাই) যখন আপনাকে অনেক পিক্সেল প্রসেস করতে হয় তা ধীরে ধীরে হয়, সুতরাং উপরের কোডটি ব্যবহারের পরিবর্তে জিপিইউ কেবল পরবর্তীটি ব্যবহার করে:

     TexC[i] = TexA[i] + TexB[i];

এবং তারপরে এটি প্রতিটি কোরের জন্য একটি মান নির্ধারণ করে (মূলত প্রোগ্রামটিতে মূলটিতে অনুলিপি করে) সমস্ত করকে পপুলেট iকরে। তারপরে এটি জিপিইউ থেকে যাদু আসে এবং সমস্ত কোরের একই সাথে প্রোগ্রামটি কার্যকর করে তোলে, লিনিয়ার সিপিইউ প্রোগ্রামের তুলনায় অনেক বেশি ক্রিয়াকলাপ তৈরি করে।

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

  • 1: প্রথম লজিকাল অপারেশন পর্যন্ত প্রোগ্রামটি কার্যকর করুন
  • 2: মূল্যায়ন
  • 3: তুলনার মেমরি ঠিকানা ফলাফল থেকে চালানো চালিয়ে যান (একটি জেএনজেড asm নির্দেশ হিসাবে)

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

  • 1: প্রোগ্রামটির এমন একটি সংস্করণ তৈরি করুন যা কেবলমাত্র শাখা A অনুসরণ করে, সমস্ত কোডটিতে এই কোডটি তৈরি করুন।
  • 2: প্রথম যৌক্তিক অপারেশন পর্যন্ত প্রোগ্রামটি কার্যকর করুন
  • 3: সমস্ত উপাদান মূল্যায়ন
  • 4: শাখা A অনুসরণ করে এমন সমস্ত উপাদানগুলির প্রক্রিয়া চালিয়ে যান, পথ বি বেছে নেওয়া সমস্ত প্রক্রিয়া সজ্জিত করুন (যার জন্য মূলটিতে কোনও প্রোগ্রাম নেই!)। এখন সেই সমস্ত কোর যা পথ বি বেছে নিয়েছে, তা আইডিএল হবে !! - সবচেয়ে খারাপ ঘটনাটি একটি একক কোর নির্বাহক এবং অন্য প্রতিটি কোর কেবল অপেক্ষা করছে।
  • 5: সবগুলি প্রক্রিয়া সমাপ্ত হওয়ার পরে, প্রোগ্রামটির শাখা বি সংস্করণটি সক্রিয় করুন (মেমরি বাফারগুলি থেকে কিছু ছোট কোর মেমোরিতে এটি অনুলিপি করে)।
  • 6: শাখা বি কার্যকর করুন।
  • 7: যদি প্রয়োজন হয়, উভয় ফলাফল মিশ্রিত / মার্জ করুন।

এই পদ্ধতিটি অনেক কিছুর উপর ভিত্তি করে পরিবর্তিত হতে পারে (কিছু কিছু খুব ছোট) smallশাখাগুলি এই পার্থক্যের প্রয়োজন ছাড়াই চলতে সক্ষম হয়) তবে এখন আপনি ইতিমধ্যে দেখতে পাচ্ছেন যে কেন শাখা প্রশাখাগুলি একটি সমস্যা হবে be জিপিইউ ক্যাশেগুলি খুব ছোট আপনি কোনও ভিআরএএম থেকে রৈখিক উপায়ে কোনও প্রোগ্রাম সম্পাদন করতে পারবেন না, এটি সম্পাদনের জন্য কোরগুলির নির্দেশের ছোট ছোট ব্লকগুলি অনুলিপি করতে হবে এবং যদি আপনার যথেষ্ট শাখা থাকে তবে আপনার জিপিইউ বেশিরভাগ স্থগিতের চেয়ে স্থগিত থাকবে যে কোনও কোড, কোনও প্রোগ্রাম যা শুধুমাত্র একটি শাখা অনুসরণ করে এমন একটি প্রোগ্রাম কার্যকর করার সময় যখন তা আসে তখন কিছু অর্থ হয় না - যেমন একাধিক থ্রেডে চলছে multiple এফ 1 উদাহরণের সাথে তুলনা করে, এটি প্রতিটি কোণে ব্রেকিং প্যারাশুটগুলি খোলার মতো হবে, তারপরে পরবর্তী কোণায় আপনি আবার ঘুরতে বা একটি লাল সেমফোর (পরবর্তী কোণে) পেতে না হওয়া পর্যন্ত গাড়ি থেকে ফিরে তাদের প্যাক করতে গাড়ি থেকে বেরিয়ে আসুন the সম্ভবত)

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

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


6
অদ্ভুত উপমা কিন্তু এটি একটি ভাল পয়েন্ট the fastest isn't always the fastest
মিথ্যা রায়ান

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

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

5
@ পাবলো অ্যারিয়েল আমি এই উক্তিটির প্রতিক্রিয়া ব্যক্ত করছি: "এফ 1 গাড়ি বেশিরভাগ গাড়ি যেমন তত দ্রুত ভাঙ্গতে বা ঘুরতে পারে না"। আপনি পরামর্শ দিচ্ছেন যে এফ 1 গাড়িগুলি কেবল একটি সরলরেখায় ত্বরান্বিত করতে পারে এবং ঘুরিয়ে বা হ্রাসের সময় খুব ভাল নয়। তবে এফ 1 গাড়ি আসলে "বেশিরভাগ গাড়ি" এর চেয়ে অনেক বেশি দ্রুত ব্রেক করতে পারে এবং উচ্চ-গতির কোণায় দুর্দান্ত।
গারগান্টুচেট

4
উপমাটি আরও নির্ভুল যদি আপনি এফ 1 গাড়িগুলির চেয়ে ড্র্যাগস্টারগুলিতে ভাবেন
আগস্টিন মেরিলস

32

জিপিইউগুলি খুব ভাল একটি সমান্তরাল কাজ। যা দুর্দান্ত ... যদি আপনি একটি সমান্তরাল কাজ চালাচ্ছেন।

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

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

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

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

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

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

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

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

এটি ঠিক: ম্যানুয়াল ডিবাগিং। সে জন্য শুভকামনা।

এছাড়াও, সেই সহায়ক লাইব্রেরিগুলি আপনি সি / সি ++ ব্যবহার করেন? অথবা সম্ভবত আপনি আরও কিছু নেট নেট, এক্সএনএ এবং আরও ব্যবহার করে। বা যাই হোক না কেন. এটা কোন ব্যাপার না, যেহেতু আপনি ব্যবহার করতে পারবেন না কোনো GPU এর মাধ্যমে তাদের। আপনাকে অবশ্যই স্ক্র্যাচ থেকে সমস্ত কোড করতে হবে। এবং আপনার যদি ইতিমধ্যে বিদ্যমান কোডবেস থাকে তবে শক্ত: সেই সমস্ত কোডটি পুনরায় লেখার সময়।

তাই হ্যা. যে কোনও জটিল ধরণের গেমের জন্য আসলে তা করা ভয়ঙ্কর। এবং এটি এমনকি কার্যকর হবে না, কারণ গেমগুলি এটির পক্ষে যথেষ্ট সমান্তরাল নয়।


21

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

আমার সন্দেহ হয় যে বিকাশকারীরা বিভিন্ন কারণে এটি করেন না, সহ:

  • তারা চান গ্রাফিকগুলি যত তাড়াতাড়ি সম্ভব এবং সর্বোচ্চ মানের হওয়া এবং মূল্যবান জিপিইউ সংস্থানগুলি ব্যবহার করে এতে হস্তক্ষেপ করতে পারে।

  • জিপিইউ-নির্দিষ্ট কোডটি লিখতে হতে পারে এবং এটি সম্ভবত গেমের সামগ্রিক প্রোগ্রামিংয়ে (বা অ্যাপ্লিকেশন) অতিরিক্ত জটিলতার পরিচয় দেবে।

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

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

  আপনার এনভিআইডিআইএ জিপিইউতে SETI @ বাড়ি চালান
  http://setiathome.berkeley.edu/cuda.php

( আপনার প্রশ্নটি আমি পছন্দ করি কারণ এটি একটি আকর্ষণীয় ধারণা পোষ্ট করে ))


18

সিপিইউগুলি আরও নমনীয়, এগুলি প্রোগ্রাম করা সাধারণত তাদের পক্ষে সহজ, তারা একক থ্রেডগুলি আরও দ্রুত চালাতে পারে।

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

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

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

প্রকৃতপক্ষে সম্ভাবনাগুলি দুর্দান্ত তবে আপনি যখন পাসওয়ার্ডগুলি ক্র্যাক করার পরিবর্তে বেশিরভাগ ক্ষেত্রে ব্যবহারিক সমস্যাগুলির তুলনায় সুবিধাগুলি ছাড়িয়ে যান game


6

জিপিইউ প্রোগ্রাম করা খুব কঠিন। আপনার একটি জিপিইউতে তালিকাটি বাছাই করার জন্য কীভাবে অনুসন্ধান করা উচিত । এটি করার জন্য অনেক থিসিসের সন্ধান রয়েছে।

একটি থ্রেড সহ সিপিইউ ব্যবহার করা সহজ, মাল্টি-থ্রেড ব্যবহার করা আরও কঠিন, সমান্তরাল গ্রন্থাগার সহ অনেকগুলি কম্পিউটার ব্যবহার করুন কারণ পিভিএম বা এমপিআই হার্ড এবং জিপিইউ ব্যবহার করা সবচেয়ে কঠিন।


4

র‌্যান্ডল্ফ রিচার্ডসন যা উত্তর দিয়েছেন তা ব্যতীত কিছু নির্দিষ্ট কার্যকারিতা রয়েছে যা জিপিইউ প্রসেসরগুলি নিজেরাই পরিচালনা করতে পারে না। উদাহরণস্বরূপ, কিছু গ্রাফিক্স মেমরি ম্যানেজমেন্ট কমান্ডগুলি সিপিইউ দ্বারা প্রক্রিয়া করা হয় যেহেতু জিপিইউ তাদের পরিচালনা করতে পারে না।

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


4

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

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


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

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

আমি নিশ্চিত যে তারা এখনও অন্তর্নিহিত স্থাপত্যে প্রচুর রৈখিক প্রক্রিয়াজাতকরণ করে। প্রোগ্রামিংয়ের দিক থেকে এটি জিপিইউতে কেবল একটি নির্দেশিকা গ্রহণ করে তবে কোরগুলি সমান্তরালভাবে ঠিক সঞ্চালন করে না কারণ অন্যান্য হার্ডওয়্যারের সাথে তাদের নির্ভরতার কারণে যেমন মেমরি থেকে পড়া সমান্তরাল নয়, সম্ভবত জিপিইউ কোনও একক কোরকে ডেটা সরবরাহ করতে পারে একটি সময়.
পাবলো আরিয়েল

3

ডেভেলপারগণ না সব ফাংশন তারা ভালো জন্য জিপিইউ ব্যবহার করেন। তারা যে ফাংশনে ভাল সেগুলি জন্য তারা সিপিইউ ব্যবহার করে। কি তারা ভাবছে না যে তারা না?

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

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


1

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


0

এটি একটি পুরানো থ্রেড, তবে সম্প্রতি প্রকাশিত এই কাগজটি এই প্রশ্নের উত্তর দিতে পারে। এসিএম কম্পিউটিং সমীক্ষা ২০১৫ এ প্রকাশিত এই কাগজটি দেখায় যে প্রতিটি সিপিইউ এবং জিপিইউ এর নিজস্ব সুবিধা রয়েছে এবং তাই, এই কাগজটি "সিপিইউ বনাম জিপিইউ বিতর্ক" থেকে "সিপিইউ-জিপিইউ সহযোগী কম্পিউটিং" দৃষ্টান্তে চলে যাওয়ার জন্য একটি মামলা করে।

সিপিইউ-জিপিইউ ভিন্নজাতীয় কম্পিউটিং কৌশলগুলির একটি সমীক্ষা

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