আধুনিক জিপিইউগুলিতে ভারটেক্স ডেটা সাজানোর সর্বাধিক পারফরম্যান্স উপায়


9

আমি একটি মডেল ছেদচিহ্ন গঠিত, সঙ্গে প্রতিটি আছে বলুন position, normal, tangent, এবং texcoordবৈশিষ্ট্যাবলী, যেখানে ত্রিভুজ সূচক triples করে নির্দেশিত।

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

এটি কি কার্যত এমনটি ঘটায় যা পারফরম্যান্সের উন্নতি করে? আমি যে মূল উপায়টি ভাবতে পারি তা হ'ল ভার্টেক্স সূচকগুলির মধ্যে যা রাস্টেরাইজারের আবশ্যক যা বহুদিন ধরে ক্যাশে থেকে উচ্ছেদ করা হয়েছে te যদি ভার্টেক্স ডেটা অ্যাক্সেসটি এ জাতীয় এলোমেলো হয়, তবে একই ক্যাশে লাইনে একটি শীর্ষবিন্দুর জন্য সমস্ত বৈশিষ্ট্য রাখলে অবশ্যই জিনিসগুলি দ্রুততর হয়ে উঠবে, তবে এটি কি এমন সমস্যা নয় যা বেশিরভাগ ক্ষেত্রে ত্রিভুজ স্পেসিফিকেশনের ক্রমটিকে অনুকূলিত করে প্রশমিত করা যেতে পারে?

তদুপরি, এটি আমার বোঝা যে আধুনিক জিপিইউগুলি একই ধরণের লম্বা ভেক্টরগুলিকে আনপ্যাক করার ক্ষেত্রে আরও অনেক ধরণের স্ট্রাকচারের ভেক্টরগুলির চেয়ে ভাল। যদি সূচীর আদেশটি অনুকূলিত করা হয় তবে কাঠামোগুলির অ্যারে বিন্যাসের জন্য একই ভার্টেক্স ডেটের একটি অ্যারে-স্ট্রাকচার লেআউটটিকে ধারাবাহিকভাবে কার্যকর করা সম্ভব হবে?


4
আপনি কি কেবল এটি চেষ্টা করে দেখতে পারলেন না এবং আপনার ক্ষেত্রে কোনটি দ্রুত?
ব্যবহারকারী 1118321

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

কাঠামোর ডেটা ধরণের উপর নির্ভর করে, ভেক 4 এবং ফ্লোটগুলি একসাথে সুন্দরভাবে প্যাক করে, অন্য
ধরণেরগুলি

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

উত্তর:


2

দুঃখিত, আমি আপনার প্রশ্ন থ্রেডে একটি মন্তব্য যুক্ত করতে যাচ্ছিলাম তবে আমি খুব বেশি বিবরণ দিয়ে শেষ করেছি। আমার বিকাশের অভিজ্ঞতা একটি ডিএক্স 11 দৃষ্টিকোণ থেকে তাই এর কিছু ওপেনজিএলে নাও থাকতে পারে

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

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

আমি নিজের থেকে সংক্ষেপে যা বলতে পারি তা হ'ল:

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

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


1

এটি টার্গেট হার্ডওয়্যার এবং আপনি যে API ব্যবহার করতে যাচ্ছেন তার উপর নির্ভর করে। আপনি আরও তথ্য সরবরাহ করতে পারেন? ওপেনজিএলের জন্য কয়েকটি (খুব বিস্তৃত এবং সাধারণ) সেরা অনুশীলন এখানে রয়েছে। https://www.khronos.org/opengl/wiki/Vertex_Specification_Best_Practices

এছাড়াও, আপনার কি পারফরম্যান্স সমস্যা আছে? বা আপনি কি কৌতূহলী?

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