জন ইতিমধ্যে একটি দুর্দান্ত উত্তর লিখেছেন তাই এই উত্তরটিকে তার একটি বর্ধন বিবেচনা করুন।
আমি বর্তমানে বিভিন্ন অ্যালগরিদমের জন্য গণনা শেডারগুলির সাথে প্রচুর কাজ করছি। সাধারণভাবে, আমি খুঁজে পেয়েছি যে কম্পিউট শেডারগুলি তাদের সমতুল্য পিক্সেল শেডারের তুলনায় অনেক দ্রুত হতে পারে বা প্রতিক্রিয়া ভিত্তিক বিকল্পগুলি রূপান্তর করতে পারে।
একবার আপনি কীভাবে কম্পিউট শেডারগুলি কাজ করে আপনার মাথাটি গুটিয়ে রাখেন, সেগুলি অনেক ক্ষেত্রে আরও অনেক কিছু বোঝায়। কোনও চিত্র ফিল্টার করতে পিক্সেল শেডারগুলি ব্যবহার করার জন্য ফ্রেমবফার সেটআপ করা, একাধিক শ্যাডার পর্যায় ব্যবহার করা প্রয়োজন, ইত্যাদি কেন ইমেজ ফিল্টার করতে হবে? ইমেজ প্রসেসিংয়ের জন্য পূর্ণ-স্ক্রিনের কোয়াড রেন্ডারিংয়ের জন্য অভ্যস্ত হওয়া অবশ্যই আমার মতে সেগুলি চালিয়ে যাওয়ার একমাত্র "বৈধ" কারণ। আমি নিশ্চিত যে গণনা গ্রাফিক্স ক্ষেত্রের একজন আগত ব্যক্তি টেক্সচারে রেন্ডারিংয়ের চেয়ে চিত্র প্রসেসিংয়ের জন্য কমপ্যাটে শেডারের চেয়ে অনেক বেশি প্রাকৃতিক ফিট খুঁজে পাবেন।
আপনার প্রশ্নটি চিত্রের ফিল্টারিংকে বিশেষত বোঝায় তাই আমি অন্যান্য বিষয়ে খুব বেশি বিস্তৃত করব না। আমাদের কয়েকটি পরীক্ষায়, কেবল কোনও টেক্সচারে রেন্ডার করতে ট্রান্সফর্ম ফিডব্যাক সেটআপ করা বা ফ্রেমবফার অবজেক্টগুলি স্যুইচ করাতে পারফরম্যান্সের ব্যয় 0.2 মিমি হতে পারে। মনে রাখবেন যে এটি কোনও রেন্ডারিং বাদ দেয় না! একটি ক্ষেত্রে, আমরা একই অ্যালগরিদমকে শেডগুলি গণনা করতে রেখেছিলাম এবং একটি পারফরম্যান্সে পারফরম্যান্স বৃদ্ধি পেয়েছি।
কম্পিউট শেডারগুলি ব্যবহার করার সময়, জিপিইউতে থাকা সিলিকনের অনেকগুলি আসল কাজটি করতে ব্যবহার করা যেতে পারে। পিক্সেল শেডার রুটটি ব্যবহার করার সময় এই সমস্ত অতিরিক্ত পদক্ষেপের প্রয়োজন:
- ভার্টেক্স অ্যাসেমবিলি (ভার্টেক্স অ্যাট্রিবিউটস, ভারটেক্স বিভাজকগুলি পড়ুন, রূপান্তর টাইপ করুন, সেগুলি ভেক 4 এ প্রসারিত করা ইত্যাদি)
- ভার্টেক্স শ্যাডারটি যত ন্যূনতম হোক তা নির্ধারণ করা দরকার
- রাস্টারাইজারকে ভার্টেক্সের আউটপুটগুলি ছায়াযুক্ত এবং ইন্টারপোলেট করার জন্য পিক্সেলের একটি তালিকা গণনা করতে হবে (সম্ভবত চিত্রের প্রসেসিংয়ের জন্য কেবল টেক্সচারের কর্ড)
- সমস্ত বিভিন্ন রাজ্য (গভীরতা পরীক্ষা, আলফা পরীক্ষা, কাঁচি, মিশ্রণ) সেট এবং পরিচালনা করতে হবে
আপনি তর্ক করতে পারেন যে পূর্বে উল্লিখিত সমস্ত কার্যকারিতা সুবিধাগুলি একটি স্মার্ট ড্রাইভার দ্বারা উপেক্ষিত হতে পারে। আপনি ঠিক হবে। এই জাতীয় ড্রাইভার সনাক্ত করতে পারে যে আপনি গভীরতা পরীক্ষা না করেই একটি পূর্ণ-স্ক্রিন কোয়াড সরবরাহ করছেন এবং একটি "দ্রুত পথ" কনফিগার করেছেন যা পিক্সেল শেডারগুলিকে সমর্থন করার জন্য করা সমস্ত অকেজো কাজকে এড়িয়ে চলে। যদি কিছু ড্রাইভার তাদের নির্দিষ্ট জিপিইউগুলির জন্য কিছু এএএ গেমসে পোস্ট-প্রসেসিং পাসগুলি ত্বরান্বিত করতে এটি করে তবে আমি অবাক হব না। আপনি যদি এএএ গেমটিতে কাজ না করে থাকেন তবে অবশ্যই অবশ্যই এই জাতীয় কোনও চিকিত্সা সম্পর্কে ভুলে যেতে পারেন।
ড্রাইভারটি যা করতে পারে না তা হ'ল কমপিউটার শেডার পাইপলাইন দ্বারা প্রদত্ত আরও ভাল সমান্তরালতার সুযোগগুলি খুঁজে পাওয়া। গাউসিয়ান ফিল্টারটির ক্লাসিক উদাহরণ নিন। কম্পিউট শেডারগুলি ব্যবহার করে আপনি এর মতো কিছু করতে পারেন (ফিল্টার পৃথক করে না):
- প্রতিটি কাজের গোষ্ঠীর জন্য, উত্সের চিত্রের নমুনাটি কর্ম গ্রুপের আকার জুড়ে ভাগ করুন এবং ফলাফলগুলি ভাগ করে নেওয়া মেমরিতে সংরক্ষণ করুন।
- ভাগ করা মেমরিতে সঞ্চিত নমুনা ফলাফলগুলি ব্যবহার করে ফিল্টার আউটপুট গণনা করুন।
- আউটপুট জমিন লিখুন
পদক্ষেপ 1 এখানে মূল কী। পিক্সেল শেডার সংস্করণে, উত্স চিত্রটি পিক্সেলটিতে একাধিকবার নমুনা দেওয়া হয়। গণনা শেডার সংস্করণে, প্রতিটি উত্স টেক্সেল কেবলমাত্র একটি কাজের গ্রুপের মধ্যেই একবার পড়ে। টেক্সচার পাঠগুলি সাধারণত একটি টাইল-ভিত্তিক ক্যাশে ব্যবহার করে তবে এই ক্যাশেটি ভাগ করা মেমরির থেকে এখনও অনেক ধীর।
গাউসিয়ান ফিল্টার একটি সহজ উদাহরণ। অন্যান্য ফিল্টারিং অ্যালগরিদমগুলি ভাগ করা মেমরি ব্যবহার করে কাজের গ্রুপগুলির মধ্যে মধ্যবর্তী ফলাফলগুলি ভাগ করে নেওয়ার জন্য অন্যান্য সুযোগগুলি সরবরাহ করে।
তবে একটি ধরা আছে। গণনা শেডারের তাদের আউটপুট সিঙ্ক্রোনাইজ করার জন্য স্পষ্ট মেমরি বাধা প্রয়োজন। ত্রুটিযুক্ত মেমরি অ্যাক্সেস থেকে রক্ষা করার জন্য আরও কম সুরক্ষা রয়েছে। ভাল সমান্তরাল প্রোগ্রামিং জ্ঞান সহ প্রোগ্রামারদের জন্য, গণনা শেডারগুলি আরও অনেক নমনীয়তা সরবরাহ করে। এই নমনীয়তাটির অর্থ হ'ল সাধারণ সি ++ কোডের মতো গণনা শেডারের সাথে চিকিত্সা করা এবং ধীর বা ভুল কোড লিখতে আরও সহজ।
তথ্যসূত্র
- ওপেনজিএল কম্পিউট শেডার উইকি পৃষ্ঠা
- ডাইরেক্ট কম্পিউটার: অপ্টিমাইজেশন এবং সেরা অভ্যাসগুলি, এরিক ইয়ং, এনভিআইডিএ কর্পোরেশন, ২০১০ [পিডিএফ]
- দক্ষ গণনা শ্যাডার প্রম্মিং, বিল বিলোডো, এএমডি, ২০১১? [PPS]
- জন্য গেমিং DirectCompute - সুপারচার্জ কম্পিউট Shader গুলিকে, লায়লা মাঃ & স্টিফেন Hodes, এএমডির, 2013 সঙ্গে আপনার ইঞ্জিন, [PPS]
- এএমডি জিপিইউগুলির জন্য কম্পিউট শেডার অপ্টিমাইজেশন: সমান্তরাল হ্রাস, ওল্ফগ্যাং এঞ্জেল, ২০১৪