AGI ফ্রেম প্রোফাইলার আপনাকে পৃথক রেন্ডার পাস পরীক্ষা করতে দেয় যা আপনার অ্যাপের একটি একক ফ্রেম রচনা করতে ব্যবহৃত হয়। এটি প্রতিটি গ্রাফিক্স এপিআই কল চালানোর জন্য প্রয়োজনীয় সমস্ত স্টেট ইন্টারসেপ্ট এবং রেকর্ড করে এটি করে। ভলকানে এটি ভলকানের লেয়ারিং সিস্টেম ব্যবহার করে স্থানীয়ভাবে করা হয়। OpenGL-এ, ANGLE ব্যবহার করে কমান্ডগুলিকে আটকানো হয়, যা OpenGL কমান্ডকে Vulkan কলে রূপান্তর করে যাতে সেগুলি হার্ডওয়্যারে কার্যকর করা যায়।
অ্যাড্রেনো ডিভাইস
আপনার ব্যয়বহুল রেন্ডার পাস সনাক্ত করতে, প্রথমে উইন্ডোর শীর্ষে AGI এর টাইমলাইন ভিউ দেখুন। এটি সমস্ত রেন্ডার পাসগুলি দেখায় যা একটি প্রদত্ত ফ্রেমের রচনা কালানুক্রমিকভাবে গঠিত। এটি একই দৃশ্য যা আপনি সিস্টেম প্রোফাইলারে দেখতে পাবেন যদি আপনার কাছে GPU সারির তথ্য থাকে। এটি রেন্ডার পাস সম্পর্কে প্রাথমিক তথ্যও উপস্থাপন করে, যেমন রেন্ডার করা ফ্রেমবাফারগুলির রেজোলিউশন, যা রেন্ডার পাসে কী ঘটছে তার কিছু অন্তর্দৃষ্টি প্রদান করতে পারে।
আপনার রেন্ডার পাসগুলি তদন্ত করতে আপনি যে প্রথম মানদণ্ড ব্যবহার করতে পারেন তা হল তারা কতটা সময় নিচ্ছে। দীর্ঘতম রেন্ডার পাসটি সম্ভবত উন্নতির জন্য সর্বাধিক সম্ভাবনা সহ রেন্ডার পাস হতে পারে, তাই এটিকে একবার দেখে শুরু করুন৷
প্রাসঙ্গিক রেন্ডার পাসের সাথে সম্পর্কিত GPU স্লাইস রেন্ডার পাসের মধ্যে কী ঘটছে তার কিছু তথ্য ইতিমধ্যেই উপস্থাপন করবে:
- বিনিং: যেখানে শীর্ষবিন্দুগুলি স্ক্রিনে কোথায় অবতরণ করে তার উপর ভিত্তি করে বিনগুলিতে স্থাপন করা হয়
- রেন্ডারিং: যেখানে পিক্সেল বা টুকরা ছায়াযুক্ত
- GMEM লোড/স্টোর: যখন একটি ফ্রেমবাফারের বিষয়বস্তু অভ্যন্তরীণ GPU মেমরি থেকে প্রধান মেমরিতে লোড বা সংরক্ষণ করা হয়
রেন্ডার পাসের মধ্যে এইগুলির প্রতিটি কতটা সময় নেয় তা দেখে আপনি সম্ভাব্য বাধাগুলি কোথায় হতে পারে তার একটি ভাল ধারণা পেতে পারেন। যেমন:
- যদি বিনিং একটি বড় অংশ নেয়, তাহলে এটি শীর্ষবিন্দু ডেটার সাথে একটি বাধার পরামর্শ দেয় যা অনেকগুলি শীর্ষবিন্দু, বড় শীর্ষবিন্দু বা শীর্ষবিন্দু সম্পর্কিত অন্যান্য সমস্যার পরামর্শ দেয়।
- রেন্ডারিং যদি বেশিরভাগ সময় নেয়, তাহলে এটি পরামর্শ দেয় যে শেডিং হল বাধা। সম্ভাব্য কারণগুলি হতে পারে জটিল শেডার্স, অনেক বেশি টেক্সচার ফেচ করা, প্রয়োজন না হলে উচ্চ রেজোলিউশন ফ্রেমবাফারে রেন্ডার করা, বা অন্যান্য সম্পর্কিত সমস্যা।
GMEM লোড এবং স্টোরগুলিও মনে রাখতে হবে। জিনিসগুলিকে গ্রাফিক্স মেমরি থেকে মেইন মেমরিতে স্থানান্তর করা ব্যয়বহুল, তাই লোড বা স্টোর অপারেশনের পরিমাণ কমিয়ে আনাও পারফরম্যান্সে সহায়তা করবে। এটির একটি সাধারণ উদাহরণ হল একটি GMEM স্টোরের গভীরতা/স্টেনসিল থাকা, যা মূল মেমরিতে গভীরতা/স্টেনসিল বাফার লিখে দেয়; আপনি যদি ভবিষ্যতের রেন্ডার পাসগুলিতে সেই বাফারটি ব্যবহার না করেন তবে এই স্টোর অপারেশনটি বাদ দেওয়া যেতে পারে এবং আপনি ফ্রেম সময় এবং মেমরি ব্যান্ডউইথ সংরক্ষণ করবেন।
বড় রেন্ডার পাস তদন্ত
রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড দেখতে:
টাইমলাইনে রেন্ডার পাসে ক্লিক করুন। এটি ফ্রেম প্রোফাইলারের কমান্ড প্যানে পাওয়া অনুক্রমের রেন্ডার পাসটি খুলবে।
রেন্ডার পাসের মেনুতে ক্লিক করুন, যা রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড প্রদর্শন করে। এটি একটি OpenGL অ্যাপ্লিকেশন হলে, আপনি আরও খনন করতে পারেন এবং ANGLE দ্বারা জারি করা Vulkan কমান্ডগুলি দেখতে পারেন৷
ড্র কলগুলির মধ্যে একটি নির্বাচন করুন। এটি ফ্রেমবাফার ফলকটি খোলে, যা এই ড্রয়ের সময় আবদ্ধ সমস্ত ফ্রেমবাফার সংযুক্তি এবং সংযুক্ত ফ্রেমবাফারে ড্রয়ের চূড়ান্ত ফলাফল দেখায়। এখানে আপনি পূর্ববর্তী এবং পরবর্তী ড্র কল উভয় খুলতে AGI ব্যবহার করতে পারেন এবং উভয়ের মধ্যে পার্থক্য তুলনা করতে পারেন। যদি তারা দৃশ্যত প্রায় অভিন্ন হয়, তাহলে এটি একটি ড্র কল বাদ দেওয়ার একটি সুযোগের পরামর্শ দেয় যা চূড়ান্ত চিত্রটিতে অবদান রাখে না।
এই ড্রয়ের জন্য পাইপলাইন ফলকটি খোলার ফলে এই ড্র কলটি চালানোর জন্য গ্রাফিক্স পাইপলাইন দ্বারা ব্যবহৃত অবস্থা দেখায়।
ইনপুট অ্যাসেম্বলার তথ্য প্রদান করে কিভাবে ভার্টেক্স ডেটা এই ড্রতে আবদ্ধ ছিল। আপনি যদি লক্ষ্য করেন যে বিনিং আপনার রেন্ডার পাসের সময়ের একটি বড় অংশ নেয় তা তদন্ত করার জন্য এটি একটি ভাল এলাকা; এখানে আপনি শীর্ষবিন্দুর বিন্যাস, অঙ্কিত শীর্ষবিন্দুর সংখ্যা এবং মেমরিতে শীর্ষবিন্দুগুলি কীভাবে স্থাপন করা হয় সে সম্পর্কে তথ্য পেতে পারেন। এই বিষয়ে আরও তথ্যের জন্য, vertex বিন্যাস বিশ্লেষণ দেখুন।
ভার্টেক্স শেডার বিভাগটি এই ড্রয়ের সময় আপনি যে ভার্টেক্স শেডার ব্যবহার করেছেন সে সম্পর্কে তথ্য সরবরাহ করে এবং বিনিং একটি সমস্যা হিসাবে চিহ্নিত হয়েছে কিনা তা তদন্ত করার জন্য একটি ভাল জায়গা হতে পারে। আপনি ব্যবহৃত শেডারের SPIR-V এবং decompiled GLSL দেখতে পারেন এবং এই কলের জন্য আবদ্ধ ইউনিফর্ম বাফারগুলি তদন্ত করতে পারেন। আরও বিস্তারিত জানার জন্য শেডারের কর্মক্ষমতা বিশ্লেষণ দেখুন।
রাস্টারাইজার বিভাগ আপনাকে পাইপলাইনের আরও স্থির-ফাংশন সেটআপ সম্পর্কে তথ্য দেখায় এবং স্থির-ফাংশন অবস্থা যেমন ভিউপোর্ট, কাঁচি, গভীরতার অবস্থা এবং বহুভুজ মোডের ডিবাগিং উদ্দেশ্যে আরও বেশি ব্যবহার করা যেতে পারে।
ফ্র্যাগমেন্ট শেডার বিভাগটি অনেক একই তথ্য প্রদান করে যা ভার্টেক্স শেডার বিভাগে পাওয়া যায়, তবে ফ্র্যাগমেন্ট শেডারের জন্য নির্দিষ্ট। এই ক্ষেত্রে, আপনি আসলে দেখতে পারেন কোন টেক্সচারগুলি আবদ্ধ হচ্ছে এবং হ্যান্ডেলটিতে ক্লিক করে সেগুলি তদন্ত করতে পারেন৷
ছোট রেন্ডার পাস তদন্ত
আপনার জিপিইউ পারফরম্যান্স উন্নত করতে আপনি ব্যবহার করতে পারেন এমন আরেকটি মানদণ্ড হল ছোট রেন্ডার পাসের গোষ্ঠীর দিকে নজর দেওয়া। সাধারণভাবে আপনি যতটা সম্ভব রেন্ডার পাসের পরিমাণ কমিয়ে আনতে চান, কারণ একটি রেন্ডার পাস থেকে অন্যটিতে GPU-এর অবস্থা আপডেট করতে সময় লাগে। এই ছোট রেন্ডার পাসগুলি সাধারণত ছায়া মানচিত্র তৈরি করা, গাউসিয়ান ব্লার প্রয়োগ করা, আলোক অনুমান করা, পোস্ট প্রসেসিং প্রভাবগুলি করা বা UI রেন্ডার করার মতো জিনিসগুলি করতে ব্যবহৃত হয়। এর মধ্যে কিছু সম্ভাব্যভাবে একটি একক রেন্ডার পাসে একত্রিত করা যেতে পারে, বা এমনকি সম্পূর্ণরূপে বাদ দেওয়া যেতে পারে যদি তারা খরচের ন্যায্যতা প্রমাণ করার জন্য সামগ্রিক চিত্রকে যথেষ্ট প্রভাবিত না করে।
,AGI ফ্রেম প্রোফাইলার আপনাকে পৃথক রেন্ডার পাস পরীক্ষা করতে দেয় যা আপনার অ্যাপের একটি একক ফ্রেম রচনা করতে ব্যবহৃত হয়। এটি প্রতিটি গ্রাফিক্স এপিআই কল চালানোর জন্য প্রয়োজনীয় সমস্ত স্টেট ইন্টারসেপ্ট এবং রেকর্ড করে এটি করে। ভলকানে এটি ভলকানের লেয়ারিং সিস্টেম ব্যবহার করে স্থানীয়ভাবে করা হয়। OpenGL-এ, ANGLE ব্যবহার করে কমান্ডগুলিকে আটকানো হয়, যা OpenGL কমান্ডকে Vulkan কলে রূপান্তর করে যাতে সেগুলি হার্ডওয়্যারে কার্যকর করা যায়।
অ্যাড্রেনো ডিভাইস
আপনার ব্যয়বহুল রেন্ডার পাস সনাক্ত করতে, প্রথমে উইন্ডোর শীর্ষে AGI এর টাইমলাইন ভিউ দেখুন। এটি সমস্ত রেন্ডার পাসগুলি দেখায় যা একটি প্রদত্ত ফ্রেমের রচনা কালানুক্রমিকভাবে গঠিত। এটি একই দৃশ্য যা আপনি সিস্টেম প্রোফাইলারে দেখতে পাবেন যদি আপনার কাছে GPU সারির তথ্য থাকে। এটি রেন্ডার পাস সম্পর্কে প্রাথমিক তথ্যও উপস্থাপন করে, যেমন রেন্ডার করা ফ্রেমবাফারগুলির রেজোলিউশন, যা রেন্ডার পাসে কী ঘটছে তার কিছু অন্তর্দৃষ্টি প্রদান করতে পারে।
আপনার রেন্ডার পাসগুলি তদন্ত করতে আপনি যে প্রথম মানদণ্ড ব্যবহার করতে পারেন তা হল তারা কতটা সময় নিচ্ছে। দীর্ঘতম রেন্ডার পাসটি সম্ভবত উন্নতির জন্য সবচেয়ে বড় সম্ভাবনা সহ রেন্ডার পাস হবে, তাই সেটিকে একবার দেখে শুরু করুন৷
প্রাসঙ্গিক রেন্ডার পাসের সাথে সম্পর্কিত GPU স্লাইস রেন্ডার পাসের মধ্যে কী ঘটছে তার কিছু তথ্য ইতিমধ্যেই উপস্থাপন করবে:
- বিনিং: যেখানে শীর্ষবিন্দুগুলি স্ক্রিনে কোথায় অবতরণ করে তার উপর ভিত্তি করে বিনগুলিতে স্থাপন করা হয়
- রেন্ডারিং: যেখানে পিক্সেল বা টুকরা ছায়াযুক্ত
- GMEM লোড/স্টোর: যখন একটি ফ্রেমবাফারের বিষয়বস্তু অভ্যন্তরীণ GPU মেমরি থেকে প্রধান মেমরিতে লোড বা সংরক্ষণ করা হয়
রেন্ডার পাসের মধ্যে এইগুলির প্রতিটি কতটা সময় নেয় তা দেখে আপনি সম্ভাব্য বাধাগুলি কোথায় হতে পারে তার একটি ভাল ধারণা পেতে পারেন। যেমন:
- যদি বিনিং একটি বড় অংশ নেয়, তাহলে এটি শীর্ষবিন্দু ডেটার সাথে একটি বাধার পরামর্শ দেয় যা অনেকগুলি শীর্ষবিন্দু, বড় শীর্ষবিন্দু বা শীর্ষবিন্দু সম্পর্কিত অন্যান্য সমস্যার পরামর্শ দেয়।
- রেন্ডারিং যদি বেশিরভাগ সময় নেয়, তাহলে এটি পরামর্শ দেয় যে শেডিং হল বাধা। সম্ভাব্য কারণগুলি হতে পারে জটিল শেডার্স, অনেক বেশি টেক্সচার ফেচ করা, প্রয়োজন না হলে উচ্চ রেজোলিউশন ফ্রেমবাফারে রেন্ডার করা, বা অন্যান্য সম্পর্কিত সমস্যা।
GMEM লোড এবং স্টোরগুলিও মনে রাখতে হবে। জিনিসগুলিকে গ্রাফিক্স মেমরি থেকে মেইন মেমরিতে স্থানান্তর করা ব্যয়বহুল, তাই লোড বা স্টোর অপারেশনের পরিমাণ কমিয়ে আনাও পারফরম্যান্সে সহায়তা করবে। এটির একটি সাধারণ উদাহরণ হল একটি GMEM স্টোরের গভীরতা/স্টেনসিল থাকা, যা মূল মেমরিতে গভীরতা/স্টেনসিল বাফার লিখে দেয়; আপনি যদি ভবিষ্যতের রেন্ডার পাসগুলিতে সেই বাফারটি ব্যবহার না করেন তবে এই স্টোর অপারেশনটি বাদ দেওয়া যেতে পারে এবং আপনি ফ্রেম সময় এবং মেমরি ব্যান্ডউইথ সংরক্ষণ করবেন।
বড় রেন্ডার পাস তদন্ত
রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড দেখতে:
টাইমলাইনে রেন্ডার পাসে ক্লিক করুন। এটি ফ্রেম প্রোফাইলারের কমান্ড প্যানে পাওয়া অনুক্রমের রেন্ডার পাসটি খুলবে।
রেন্ডার পাসের মেনুতে ক্লিক করুন, যা রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড প্রদর্শন করে। এটি একটি OpenGL অ্যাপ্লিকেশন হলে, আপনি আরও খনন করতে পারেন এবং ANGLE দ্বারা জারি করা Vulkan কমান্ডগুলি দেখতে পারেন৷
ড্র কলগুলির মধ্যে একটি নির্বাচন করুন। এটি ফ্রেমবাফার ফলকটি খোলে, যা এই ড্রয়ের সময় আবদ্ধ সমস্ত ফ্রেমবাফার সংযুক্তি এবং সংযুক্ত ফ্রেমবাফারে ড্রয়ের চূড়ান্ত ফলাফল দেখায়। এখানে আপনি পূর্ববর্তী এবং পরবর্তী ড্র কল উভয় খুলতে AGI ব্যবহার করতে পারেন এবং উভয়ের মধ্যে পার্থক্য তুলনা করতে পারেন। যদি তারা দৃশ্যত প্রায় অভিন্ন হয়, তাহলে এটি একটি ড্র কল বাদ দেওয়ার একটি সুযোগের পরামর্শ দেয় যা চূড়ান্ত চিত্রটিতে অবদান রাখে না।
এই ড্রয়ের জন্য পাইপলাইন ফলকটি খোলার ফলে এই ড্র কলটি চালানোর জন্য গ্রাফিক্স পাইপলাইন দ্বারা ব্যবহৃত অবস্থা দেখায়।
ইনপুট অ্যাসেম্বলার তথ্য প্রদান করে কিভাবে ভার্টেক্স ডেটা এই ড্রতে আবদ্ধ ছিল। আপনি যদি লক্ষ্য করেন যে বিনিং আপনার রেন্ডার পাসের সময়ের একটি বড় অংশ নেয় তা তদন্ত করার জন্য এটি একটি ভাল এলাকা; এখানে আপনি শীর্ষবিন্দুর বিন্যাস, অঙ্কিত শীর্ষবিন্দুর সংখ্যা এবং মেমরিতে শীর্ষবিন্দুগুলি কীভাবে স্থাপন করা হয় সে সম্পর্কে তথ্য পেতে পারেন। এই বিষয়ে আরও তথ্যের জন্য, vertex বিন্যাস বিশ্লেষণ দেখুন।
ভার্টেক্স শেডার বিভাগটি এই ড্রয়ের সময় আপনি যে ভার্টেক্স শেডার ব্যবহার করেছেন সে সম্পর্কে তথ্য সরবরাহ করে এবং বিনিং একটি সমস্যা হিসাবে চিহ্নিত হয়েছে কিনা তা তদন্ত করার জন্য একটি ভাল জায়গা হতে পারে। আপনি ব্যবহৃত শেডারের SPIR-V এবং decompiled GLSL দেখতে পারেন এবং এই কলের জন্য আবদ্ধ ইউনিফর্ম বাফারগুলি তদন্ত করতে পারেন। আরও বিস্তারিত জানার জন্য শেডারের কর্মক্ষমতা বিশ্লেষণ দেখুন।
রাস্টারাইজার বিভাগ আপনাকে পাইপলাইনের আরও স্থির-ফাংশন সেটআপ সম্পর্কে তথ্য দেখায় এবং স্থির-ফাংশন অবস্থা যেমন ভিউপোর্ট, কাঁচি, গভীরতার অবস্থা এবং বহুভুজ মোডের ডিবাগিং উদ্দেশ্যে আরও বেশি ব্যবহার করা যেতে পারে।
ফ্র্যাগমেন্ট শেডার বিভাগটি অনেক একই তথ্য প্রদান করে যা ভার্টেক্স শেডার বিভাগে পাওয়া যায়, তবে ফ্র্যাগমেন্ট শেডারের জন্য নির্দিষ্ট। এই ক্ষেত্রে, আপনি আসলে দেখতে পারেন কোন টেক্সচারগুলি আবদ্ধ হচ্ছে এবং হ্যান্ডেলটিতে ক্লিক করে সেগুলি তদন্ত করতে পারেন৷
ছোট রেন্ডার পাস তদন্ত
আপনার জিপিইউ পারফরম্যান্স উন্নত করতে আপনি ব্যবহার করতে পারেন এমন আরেকটি মানদণ্ড হল ছোট রেন্ডার পাসের গোষ্ঠীর দিকে নজর দেওয়া। সাধারণভাবে আপনি যতটা সম্ভব রেন্ডার পাসের পরিমাণ কমিয়ে আনতে চান, কারণ একটি রেন্ডার পাস থেকে অন্যটিতে GPU-এর অবস্থা আপডেট করতে সময় লাগে। এই ছোট রেন্ডার পাসগুলি সাধারণত ছায়া মানচিত্র তৈরি করা, গাউসিয়ান ব্লার প্রয়োগ করা, আলোক অনুমান করা, পোস্ট প্রসেসিং প্রভাবগুলি করা বা UI রেন্ডার করার মতো জিনিসগুলি করতে ব্যবহৃত হয়। এর মধ্যে কিছু সম্ভাব্যভাবে একটি একক রেন্ডার পাসে একত্রিত করা যেতে পারে, বা এমনকি সম্পূর্ণরূপে বাদ দেওয়া যেতে পারে যদি তারা খরচের ন্যায্যতা প্রমাণ করার জন্য সামগ্রিক চিত্রকে যথেষ্ট প্রভাবিত না করে।
,AGI ফ্রেম প্রোফাইলার আপনাকে পৃথক রেন্ডার পাস পরীক্ষা করতে দেয় যা আপনার অ্যাপের একটি একক ফ্রেম রচনা করতে ব্যবহৃত হয়। এটি প্রতিটি গ্রাফিক্স এপিআই কল চালানোর জন্য প্রয়োজনীয় সমস্ত স্টেট ইন্টারসেপ্ট এবং রেকর্ড করে এটি করে। ভলকানে এটি ভলকানের লেয়ারিং সিস্টেম ব্যবহার করে স্থানীয়ভাবে করা হয়। OpenGL-এ, ANGLE ব্যবহার করে কমান্ডগুলিকে আটকানো হয়, যা OpenGL কমান্ডকে Vulkan কলে রূপান্তর করে যাতে সেগুলি হার্ডওয়্যারে কার্যকর করা যায়।
অ্যাড্রেনো ডিভাইস
আপনার ব্যয়বহুল রেন্ডার পাস সনাক্ত করতে, প্রথমে উইন্ডোর শীর্ষে AGI এর টাইমলাইন ভিউ দেখুন। এটি সমস্ত রেন্ডার পাসগুলি দেখায় যা একটি প্রদত্ত ফ্রেমের রচনা কালানুক্রমিকভাবে গঠিত। এটি একই দৃশ্য যা আপনি সিস্টেম প্রোফাইলারে দেখতে পাবেন যদি আপনার কাছে GPU সারির তথ্য থাকে। এটি রেন্ডার পাস সম্পর্কে প্রাথমিক তথ্যও উপস্থাপন করে, যেমন রেন্ডার করা ফ্রেমবাফারগুলির রেজোলিউশন, যা রেন্ডার পাসে কী ঘটছে তার কিছু অন্তর্দৃষ্টি প্রদান করতে পারে।
আপনার রেন্ডার পাসগুলি তদন্ত করতে আপনি যে প্রথম মানদণ্ড ব্যবহার করতে পারেন তা হল তারা কতটা সময় নিচ্ছে। দীর্ঘতম রেন্ডার পাসটি সম্ভবত উন্নতির জন্য সর্বাধিক সম্ভাবনা সহ রেন্ডার পাস হতে পারে, তাই এটিকে একবার দেখে শুরু করুন৷
প্রাসঙ্গিক রেন্ডার পাসের সাথে সম্পর্কিত GPU স্লাইস রেন্ডার পাসের মধ্যে কী ঘটছে তার কিছু তথ্য ইতিমধ্যেই উপস্থাপন করবে:
- বিনিং: যেখানে শীর্ষবিন্দুগুলি স্ক্রিনে কোথায় অবতরণ করে তার উপর ভিত্তি করে বিনগুলিতে স্থাপন করা হয়
- রেন্ডারিং: যেখানে পিক্সেল বা টুকরা ছায়াযুক্ত
- GMEM লোড/স্টোর: যখন একটি ফ্রেমবাফারের বিষয়বস্তু অভ্যন্তরীণ GPU মেমরি থেকে প্রধান মেমরিতে লোড বা সংরক্ষণ করা হয়
রেন্ডার পাসের মধ্যে এইগুলির প্রতিটি কতটা সময় নেয় তা দেখে আপনি সম্ভাব্য বাধাগুলি কোথায় হতে পারে তার একটি ভাল ধারণা পেতে পারেন। যেমন:
- যদি বিনিং একটি বড় অংশ নেয়, তাহলে এটি শীর্ষবিন্দু ডেটার সাথে একটি বাধার পরামর্শ দেয় যা অনেকগুলি শীর্ষবিন্দু, বড় শীর্ষবিন্দু বা শীর্ষবিন্দু সম্পর্কিত অন্যান্য সমস্যার পরামর্শ দেয়।
- রেন্ডারিং যদি বেশিরভাগ সময় নেয়, তাহলে এটি পরামর্শ দেয় যে শেডিং হল বাধা। সম্ভাব্য কারণগুলি হতে পারে জটিল শেডার্স, অনেক বেশি টেক্সচার ফেচ করা, প্রয়োজন না হলে উচ্চ রেজোলিউশন ফ্রেমবাফারে রেন্ডার করা, বা অন্যান্য সম্পর্কিত সমস্যা।
GMEM লোড এবং স্টোরগুলিও মনে রাখতে হবে। জিনিসগুলিকে গ্রাফিক্স মেমরি থেকে মেইন মেমরিতে স্থানান্তর করা ব্যয়বহুল, তাই লোড বা স্টোর অপারেশনের পরিমাণ কমিয়ে আনাও পারফরম্যান্সে সহায়তা করবে। এটির একটি সাধারণ উদাহরণ হল একটি GMEM স্টোরের গভীরতা/স্টেনসিল থাকা, যা মূল মেমরিতে গভীরতা/স্টেনসিল বাফার লিখে দেয়; আপনি যদি ভবিষ্যতের রেন্ডার পাসগুলিতে সেই বাফারটি ব্যবহার না করেন তবে এই স্টোর অপারেশনটি বাদ দেওয়া যেতে পারে এবং আপনি ফ্রেম সময় এবং মেমরি ব্যান্ডউইথ সংরক্ষণ করবেন।
বড় রেন্ডার পাস তদন্ত
রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড দেখতে:
টাইমলাইনে রেন্ডার পাসে ক্লিক করুন। এটি ফ্রেম প্রোফাইলারের কমান্ড প্যানে পাওয়া অনুক্রমের রেন্ডার পাসটি খুলবে।
রেন্ডার পাসের মেনুতে ক্লিক করুন, যা রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড প্রদর্শন করে। এটি একটি OpenGL অ্যাপ্লিকেশন হলে, আপনি আরও খনন করতে পারেন এবং ANGLE দ্বারা জারি করা Vulkan কমান্ডগুলি দেখতে পারেন৷
ড্র কলগুলির মধ্যে একটি নির্বাচন করুন। এটি ফ্রেমবাফার ফলকটি খোলে, যা এই ড্রয়ের সময় আবদ্ধ সমস্ত ফ্রেমবাফার সংযুক্তি এবং সংযুক্ত ফ্রেমবাফারে ড্রয়ের চূড়ান্ত ফলাফল দেখায়। এখানে আপনি পূর্ববর্তী এবং পরবর্তী ড্র কল উভয় খুলতে AGI ব্যবহার করতে পারেন এবং উভয়ের মধ্যে পার্থক্য তুলনা করতে পারেন। যদি তারা দৃশ্যত প্রায় অভিন্ন হয়, তাহলে এটি একটি ড্র কল বাদ দেওয়ার একটি সুযোগের পরামর্শ দেয় যা চূড়ান্ত চিত্রটিতে অবদান রাখে না।
এই ড্রয়ের জন্য পাইপলাইন ফলকটি খোলার ফলে এই ড্র কলটি চালানোর জন্য গ্রাফিক্স পাইপলাইন দ্বারা ব্যবহৃত অবস্থা দেখায়।
ইনপুট অ্যাসেম্বলার তথ্য প্রদান করে কিভাবে ভার্টেক্স ডেটা এই ড্রতে আবদ্ধ ছিল। আপনি যদি লক্ষ্য করেন যে বিনিং আপনার রেন্ডার পাসের সময়ের একটি বড় অংশ নেয় তা তদন্ত করার জন্য এটি একটি ভাল এলাকা; এখানে আপনি শীর্ষবিন্দুর বিন্যাস, অঙ্কিত শীর্ষবিন্দুর সংখ্যা এবং মেমরিতে শীর্ষবিন্দুগুলি কীভাবে স্থাপন করা হয় সে সম্পর্কে তথ্য পেতে পারেন। এই বিষয়ে আরও তথ্যের জন্য, vertex বিন্যাস বিশ্লেষণ দেখুন।
ভার্টেক্স শেডার বিভাগটি এই ড্রয়ের সময় আপনি যে ভার্টেক্স শেডার ব্যবহার করেছেন সে সম্পর্কে তথ্য সরবরাহ করে এবং বিনিং একটি সমস্যা হিসাবে চিহ্নিত হয়েছে কিনা তা তদন্ত করার জন্য একটি ভাল জায়গা হতে পারে। আপনি ব্যবহৃত শেডারের SPIR-V এবং decompiled GLSL দেখতে পারেন এবং এই কলের জন্য আবদ্ধ ইউনিফর্ম বাফারগুলি তদন্ত করতে পারেন। আরও বিস্তারিত জানার জন্য শেডারের কর্মক্ষমতা বিশ্লেষণ দেখুন।
রাস্টারাইজার বিভাগ আপনাকে পাইপলাইনের আরও স্থির-ফাংশন সেটআপ সম্পর্কে তথ্য দেখায় এবং স্থির-ফাংশন অবস্থা যেমন ভিউপোর্ট, কাঁচি, গভীরতার অবস্থা এবং বহুভুজ মোডের ডিবাগিং উদ্দেশ্যে আরও বেশি ব্যবহার করা যেতে পারে।
ফ্র্যাগমেন্ট শেডার বিভাগটি অনেক একই তথ্য প্রদান করে যা ভার্টেক্স শেডার বিভাগে পাওয়া যায়, তবে ফ্র্যাগমেন্ট শেডারের জন্য নির্দিষ্ট। এই ক্ষেত্রে, আপনি আসলে দেখতে পারেন কোন টেক্সচারগুলি আবদ্ধ হচ্ছে এবং হ্যান্ডেলটিতে ক্লিক করে সেগুলি তদন্ত করতে পারেন৷
ছোট রেন্ডার পাস তদন্ত
আপনার জিপিইউ পারফরম্যান্স উন্নত করতে আপনি ব্যবহার করতে পারেন এমন আরেকটি মানদণ্ড হল ছোট রেন্ডার পাসের গোষ্ঠীর দিকে নজর দেওয়া। সাধারণভাবে আপনি যতটা সম্ভব রেন্ডার পাসের পরিমাণ কমিয়ে আনতে চান, কারণ একটি রেন্ডার পাস থেকে অন্যটিতে GPU-এর অবস্থা আপডেট করতে সময় লাগে। এই ছোট রেন্ডার পাসগুলি সাধারণত ছায়া মানচিত্র তৈরি করা, গাউসিয়ান ব্লার প্রয়োগ করা, আলোক অনুমান করা, পোস্ট প্রসেসিং প্রভাবগুলি করা বা UI রেন্ডার করার মতো জিনিসগুলি করতে ব্যবহৃত হয়। এর মধ্যে কিছু সম্ভাব্যভাবে একটি একক রেন্ডার পাসে একত্রিত করা যেতে পারে, বা এমনকি সম্পূর্ণরূপে বাদ দেওয়া যেতে পারে যদি তারা খরচের ন্যায্যতা প্রমাণ করার জন্য সামগ্রিক চিত্রকে যথেষ্ট প্রভাবিত না করে।
,AGI ফ্রেম প্রোফাইলার আপনাকে পৃথক রেন্ডার পাস পরীক্ষা করতে দেয় যা আপনার অ্যাপের একটি একক ফ্রেম রচনা করতে ব্যবহৃত হয়। এটি প্রতিটি গ্রাফিক্স এপিআই কল চালানোর জন্য প্রয়োজনীয় সমস্ত স্টেট ইন্টারসেপ্ট এবং রেকর্ড করে এটি করে। ভলকানে এটি ভলকানের লেয়ারিং সিস্টেম ব্যবহার করে স্থানীয়ভাবে করা হয়। OpenGL-এ, ANGLE ব্যবহার করে কমান্ডগুলিকে আটকানো হয়, যা OpenGL কমান্ডকে Vulkan কলে রূপান্তর করে যাতে সেগুলি হার্ডওয়্যারে কার্যকর করা যায়।
অ্যাড্রেনো ডিভাইস
আপনার ব্যয়বহুল রেন্ডার পাস সনাক্ত করতে, প্রথমে উইন্ডোর শীর্ষে AGI এর টাইমলাইন ভিউ দেখুন। এটি সমস্ত রেন্ডার পাসগুলি দেখায় যা একটি প্রদত্ত ফ্রেমের রচনা কালানুক্রমিকভাবে গঠিত। এটি একই দৃশ্য যা আপনি সিস্টেম প্রোফাইলারে দেখতে পাবেন যদি আপনার কাছে GPU সারির তথ্য থাকে। এটি রেন্ডার পাস সম্পর্কে প্রাথমিক তথ্যও উপস্থাপন করে, যেমন রেন্ডার করা ফ্রেমবাফারগুলির রেজোলিউশন, যা রেন্ডার পাসে কী ঘটছে তার কিছু অন্তর্দৃষ্টি প্রদান করতে পারে।
আপনার রেন্ডার পাসগুলি তদন্ত করতে আপনি যে প্রথম মানদণ্ড ব্যবহার করতে পারেন তা হল তারা কতটা সময় নিচ্ছে। দীর্ঘতম রেন্ডার পাসটি সম্ভবত উন্নতির জন্য সবচেয়ে বড় সম্ভাবনা সহ রেন্ডার পাস হবে, তাই সেটিকে একবার দেখে শুরু করুন৷
প্রাসঙ্গিক রেন্ডার পাসের সাথে সম্পর্কিত GPU স্লাইস রেন্ডার পাসের মধ্যে কী ঘটছে তার কিছু তথ্য ইতিমধ্যেই উপস্থাপন করবে:
- বিনিং: যেখানে শীর্ষবিন্দুগুলি স্ক্রিনে কোথায় অবতরণ করে তার উপর ভিত্তি করে বিনগুলিতে স্থাপন করা হয়
- রেন্ডারিং: যেখানে পিক্সেল বা টুকরা ছায়াযুক্ত
- GMEM লোড/স্টোর: যখন একটি ফ্রেমবাফারের বিষয়বস্তু অভ্যন্তরীণ GPU মেমরি থেকে প্রধান মেমরিতে লোড বা সংরক্ষণ করা হয়
রেন্ডার পাসের মধ্যে এইগুলির প্রতিটি কতটা সময় নেয় তা দেখে আপনি সম্ভাব্য বাধাগুলি কোথায় হতে পারে তার একটি ভাল ধারণা পেতে পারেন। যেমন:
- যদি বিনিং একটি বড় অংশ নেয়, তাহলে এটি শীর্ষবিন্দু ডেটার সাথে একটি বাধার পরামর্শ দেয় যা অনেকগুলি শীর্ষবিন্দু, বড় শীর্ষবিন্দু বা শীর্ষবিন্দু সম্পর্কিত অন্যান্য সমস্যার পরামর্শ দেয়।
- রেন্ডারিং যদি বেশিরভাগ সময় নেয়, তাহলে এটি পরামর্শ দেয় যে শেডিং হল বাধা। সম্ভাব্য কারণগুলি হতে পারে জটিল শেডার্স, অনেক বেশি টেক্সচার ফেচ করা, প্রয়োজন না হলে উচ্চ রেজোলিউশন ফ্রেমবাফারে রেন্ডার করা, বা অন্যান্য সম্পর্কিত সমস্যা।
GMEM লোড এবং স্টোরগুলিও মনে রাখতে হবে। জিনিসগুলিকে গ্রাফিক্স মেমরি থেকে মেইন মেমরিতে স্থানান্তর করা ব্যয়বহুল, তাই লোড বা স্টোর অপারেশনের পরিমাণ কমিয়ে আনাও পারফরম্যান্সে সহায়তা করবে। এটির একটি সাধারণ উদাহরণ হল একটি GMEM স্টোরের গভীরতা/স্টেনসিল থাকা, যা মূল মেমরিতে গভীরতা/স্টেনসিল বাফার লিখে দেয়; আপনি যদি ভবিষ্যতের রেন্ডার পাসগুলিতে সেই বাফারটি ব্যবহার না করেন তবে এই স্টোর অপারেশনটি বাদ দেওয়া যেতে পারে এবং আপনি ফ্রেম সময় এবং মেমরি ব্যান্ডউইথ সংরক্ষণ করবেন।
বড় রেন্ডার পাস তদন্ত
রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড দেখতে:
টাইমলাইনে রেন্ডার পাসে ক্লিক করুন। এটি ফ্রেম প্রোফাইলারের কমান্ড প্যানে পাওয়া অনুক্রমের রেন্ডার পাসটি খুলবে।
রেন্ডার পাসের মেনুতে ক্লিক করুন, যা রেন্ডার পাসের সময় জারি করা সমস্ত পৃথক ড্র কমান্ড প্রদর্শন করে। এটি একটি OpenGL অ্যাপ্লিকেশন হলে, আপনি আরও খনন করতে পারেন এবং ANGLE দ্বারা জারি করা Vulkan কমান্ডগুলি দেখতে পারেন৷
ড্র কলগুলির মধ্যে একটি নির্বাচন করুন। এটি ফ্রেমবাফার ফলকটি খোলে, যা এই ড্রয়ের সময় আবদ্ধ সমস্ত ফ্রেমবাফার সংযুক্তি এবং সংযুক্ত ফ্রেমবাফারে ড্রয়ের চূড়ান্ত ফলাফল দেখায়। এখানে আপনি পূর্ববর্তী এবং পরবর্তী ড্র কল উভয় খুলতে AGI ব্যবহার করতে পারেন এবং উভয়ের মধ্যে পার্থক্য তুলনা করতে পারেন। যদি তারা দৃশ্যত প্রায় অভিন্ন হয়, তাহলে এটি একটি ড্র কল বাদ দেওয়ার একটি সুযোগের পরামর্শ দেয় যা চূড়ান্ত চিত্রটিতে অবদান রাখে না।
এই ড্রয়ের জন্য পাইপলাইন ফলকটি খোলার ফলে এই ড্র কলটি চালানোর জন্য গ্রাফিক্স পাইপলাইন দ্বারা ব্যবহৃত অবস্থা দেখায়।
ইনপুট অ্যাসেম্বলার তথ্য প্রদান করে কিভাবে ভার্টেক্স ডেটা এই ড্রতে আবদ্ধ ছিল। আপনি যদি লক্ষ্য করেন যে বিনিং আপনার রেন্ডার পাসের সময়ের একটি বড় অংশ নেয় তা তদন্ত করার জন্য এটি একটি ভাল এলাকা; এখানে আপনি শীর্ষবিন্দুর বিন্যাস, অঙ্কিত শীর্ষবিন্দুর সংখ্যা এবং মেমরিতে শীর্ষবিন্দুগুলি কীভাবে স্থাপন করা হয় সে সম্পর্কে তথ্য পেতে পারেন। এই বিষয়ে আরও তথ্যের জন্য, vertex বিন্যাস বিশ্লেষণ দেখুন।
ভার্টেক্স শেডার বিভাগটি এই ড্রয়ের সময় আপনি যে ভার্টেক্স শেডার ব্যবহার করেছেন সে সম্পর্কে তথ্য সরবরাহ করে এবং বিনিং একটি সমস্যা হিসাবে চিহ্নিত হয়েছে কিনা তা তদন্ত করার জন্য একটি ভাল জায়গা হতে পারে। আপনি ব্যবহৃত শেডারের SPIR-V এবং decompiled GLSL দেখতে পারেন এবং এই কলের জন্য আবদ্ধ ইউনিফর্ম বাফারগুলি তদন্ত করতে পারেন। আরও বিস্তারিত জানার জন্য শেডারের কর্মক্ষমতা বিশ্লেষণ দেখুন।
রাস্টারাইজার বিভাগ আপনাকে পাইপলাইনের আরও স্থির-ফাংশন সেটআপ সম্পর্কে তথ্য দেখায় এবং স্থির-ফাংশন অবস্থা যেমন ভিউপোর্ট, কাঁচি, গভীরতার অবস্থা এবং বহুভুজ মোডের ডিবাগিং উদ্দেশ্যে আরও বেশি ব্যবহার করা যেতে পারে।
ফ্র্যাগমেন্ট শেডার বিভাগটি অনেক একই তথ্য প্রদান করে যা ভার্টেক্স শেডার বিভাগে পাওয়া যায়, তবে ফ্র্যাগমেন্ট শেডারের জন্য নির্দিষ্ট। এই ক্ষেত্রে, আপনি আসলে দেখতে পারেন কোন টেক্সচারগুলি আবদ্ধ হচ্ছে এবং হ্যান্ডেলটিতে ক্লিক করে সেগুলি তদন্ত করতে পারেন৷
ছোট রেন্ডার পাস তদন্ত
আপনার জিপিইউ পারফরম্যান্স উন্নত করতে আপনি ব্যবহার করতে পারেন এমন আরেকটি মানদণ্ড হল ছোট রেন্ডার পাসের গোষ্ঠীর দিকে নজর দেওয়া। সাধারণভাবে আপনি যতটা সম্ভব রেন্ডার পাসের পরিমাণ কমিয়ে আনতে চান, কারণ একটি রেন্ডার পাস থেকে অন্যটিতে GPU-এর অবস্থা আপডেট করতে সময় লাগে। এই ছোট রেন্ডার পাসগুলি সাধারণত ছায়া মানচিত্র তৈরি করা, গাউসিয়ান ব্লার প্রয়োগ করা, আলোক অনুমান করা, পোস্ট প্রসেসিং প্রভাবগুলি করা বা UI রেন্ডার করার মতো জিনিসগুলি করতে ব্যবহৃত হয়। এর মধ্যে কিছু সম্ভাব্যভাবে একটি একক রেন্ডার পাসে একত্রিত করা যেতে পারে, বা এমনকি সম্পূর্ণরূপে বাদ দেওয়া যেতে পারে যদি তারা খরচের ন্যায্যতা প্রমাণ করার জন্য সামগ্রিক চিত্রকে যথেষ্ট প্রভাবিত না করে।