আমার কখন সিপিইউর পরিবর্তে কোনও জিপিইউতে অফলোডিং কাজ করা উচিত?


16

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

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



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

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

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

2
@ রেট্রাক্স নকল হিসাবে প্রশ্নগুলি বিভিন্ন সাইটে থাকলে আমরা বন্ধ করতে পারি না।
অ্যাডাম লিয়ার

উত্তর:


27

যাইহোক, এই সমস্ত নতুন সিস্টেমের সাথে, দেখে মনে হচ্ছে যেন জিপিইউগুলি প্রতিটি উপায়ে সিপিইউগুলির চেয়ে ভাল।

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

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

জিপিইউতে প্রসেসররা বিচ্ছিন্ন বিশ্বে বাস করেন। তারা প্রদর্শন নিয়ন্ত্রণ করতে পারে তবে ডিস্ক, নেটওয়ার্ক বা কীবোর্ডে তাদের অ্যাক্সেস নেই।

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

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


ডাবল নির্ভুলতা সমর্থন শ্যাডার মডেল 5 এর অংশ, এবং এটিএম / এটিআইও রয়েছে।
বেন ভয়েগট

@ বেন, সংশোধন করার জন্য ধন্যবাদ। আমি ভুল বিবৃতি সরিয়েছি।
চার্লস ই। গ্রান্ট

11

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

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

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


8

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

বেশিরভাগ বর্তমান সিপিইউ বেশ কয়েকটি প্রকারের ক্রিয়াকলাপ সমর্থন করে যা একটি বর্তমান জিপিইউ কেবল সমর্থন করার চেষ্টা করে না (যেমন, মাল্টিটাস্কিংয়ের জন্য মেমরি সুরক্ষা)।

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

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

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

  1. সমস্যাটি এতটা সমান্তরাল যে আপনি ন্যূনতম প্রচেষ্টা থেকে একটি বড় লাভ আশা করতে পারেন, বা
  2. গতি বৃদ্ধি এত গুরুত্বপূর্ণ যে এটি অনেক অতিরিক্ত কাজের ন্যায্যতা দেয়।

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

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


3

আপনি একবারে অনেকগুলি গণনা করতে সক্ষম হবেন এবং সত্যিকারের গতির উন্নতি করতে পারবেন।

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

আমাকে ভুল করবেন না - কোডার হিসাবে আমি সিপিইউ টিকগুলি পুরোপুরি চেপে উপভোগ করি। এটি কেবলমাত্র যে এই শিল্পটি সাধারণত উচ্চ চাহিদা হয় না।

এখনও কি এমন কিছু ক্ষেত্রে রয়েছে যেখানে সিরিয়াল প্রক্রিয়াকরণটি সমান্তরালের চেয়ে আরও ভাল, দ্রুত এবং / বা আরও দক্ষ?

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

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


2

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


3
আপনি কি আরও কিছু বিশদে যেতে পারেন? সেগুলির সত্যতা সম্পর্কে আপনি কোনও তথ্য বা ব্যাখ্যা সহ তিনটি বিবৃতি সরবরাহ করেছেন।

ওয়েল, দক্ষ ডবল স্পষ্টতা গণনার অভাব সাধারণ জ্ঞান হল: en.wikipedia.org/wiki/GPGPU
quant_dev

@ কোয়ান্ট: আপনার তথ্য কমপক্ষে 2 বছর বয়সী : 544 গিগাএফএলপিওএস যে কোনও মূলধারার সিপিইউর থেকে অনেক দ্রুত।
বেন ভয়েগট

@ তবুও আমি দেখতে পাচ্ছি না যেখানে আপনার লিঙ্কটি দ্বিগুণ নির্ভুল পারফরম্যান্সের উল্লেখ করেছে।
কোয়ান্ট_দেব 12'11

@ কোয়ান্ট: awurl.com/Tt7LAX8lH
বেন ভয়েগট

2

সহজ নিয়মটি হ'ল, আপনি যা করছেন তা লিনিয়ার বীজগণিত থেকে রচনার ক্ষেত্রে চিহ্নিত করা যেতে পারে এবং সময় সমালোচনামূলক হলে জিপিইউতে করুন অন্যথায় সিপিইউ ব্যবহার করুন।

জিপিইউগুলি প্রচুর সংখ্যক সিপিইউয়ের মতো নয়, তাদের পারফরম্যান্সের বৈশিষ্ট্যগুলি অত্যন্ত ভিন্ন।


যদি এটি "সময় সমালোচনামূলক" হয় তবে আপনার কাছে সম্ভবত একটি কম্পিউট শেডারের জন্য জিপিইউ পুনরায় কনফিগার করার এবং ডেটা আপলোড করার সময় নেই। এটি সবচেয়ে বড় সমস্যা যা সবচেয়ে বেশি উপকৃত হয়।
বেন ভয়েগট

@ বেন, আমি মনে করি আমাদের "টাইম সমালোচনামূলক" এর বিভিন্ন সংজ্ঞা রয়েছে, আমার অর্থ হ'ল গণনা একটি উল্লেখযোগ্য সময়ের জন্য সমালোচনামূলক পথে চলছে on
ড্যান_ওয়াটারওয়ার্থ

1

আপনার যদি কাঁচা নম্বর-ক্রাঞ্চিংয়ের প্রয়োজন হয় তবে জিপিইউগুলি হ'ল উপায়। যাইহোক, সমস্ত ALUs এর অর্থ হল যে প্রবাহ (ব্রাঞ্চিং) সার্কিটিকে নিয়ন্ত্রণ করতে নিবেদিত কম ট্রানজিস্টর রয়েছে। সুতরাং, আপনার যদি এমন কিছু লেখার দরকার হয় যার জন্য প্রচুর জটিল নিয়ন্ত্রণ প্রবাহ, প্রচুর শর্তাদি ইত্যাদির প্রয়োজন হয় তবে একটি সিপিইউ দ্রুত হবে।

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