জিপিইউ প্রোগ্রামিংয়ের জন্য জোর দেওয়া


10

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

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

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


আপনি অ্যারেফায়ার বিবেচনা করেছেন?
অ্যারেফায়ার

উত্তর:


2

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

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


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

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

5

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

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


3

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

আমি পারফরম্যান্স নিয়ে বেশি চিন্তিত না হওয়ার পরামর্শ দিচ্ছি, তবে নিজেকে জিজ্ঞাসা করার জন্য

  • আপনার প্রয়োগটি জোড়ায় প্রয়োগ করা অ্যালগরিদমের পরিপ্রেক্ষিতে বর্ণনা করা যেতে পারে, এবং যদি

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

যদি আপনি উভয় প্রশ্নের ইতিবাচক প্রতিক্রিয়া জানান তবে আপনার কেবলমাত্র CUDA বাস্তবায়নের ক্ষেত্রে কম চেষ্টা করে আপনার প্রোগ্রামটি কার্যকর করা উচিত। তারপরে আপনি নিজের অ্যাপ্লিকেশনটিকে প্রোফাইল করতে পারেন এবং পারফরম্যান্স উন্নত করার চেষ্টা করা সার্থক কিনা তা স্থির করতে পারেন।

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

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