রাষ্ট্র পরিবর্তনের ব্যয় কী?


25

প্রোগ্রামারদের কিছু নির্দিষ্ট ক্রিয়াকলাপের ব্যয় সম্পর্কে মোটামুটি ভাল ধারণা থাকার কথা: উদাহরণস্বরূপ সিপিইউতে কোনও নির্দেশনার ব্যয়, একটি এল 1, এল 2, বা এল 3 ক্যাশে মিসের মূল্য, একটি এলএইচএসের দাম।

যখন গ্রাফিক্সের কথা আসে তখন আমি বুঝতে পারি যে সেগুলি কী তা আমার খুব কমই ধারণা ছিল। আমার মনে আছে যে আমরা যদি তাদেরকে ব্যয় দিয়ে অর্ডার করি তবে রাষ্ট্র পরিবর্তনগুলি এমন কিছু:

  1. শেদার ইউনিফর্ম পরিবর্তন।
  2. সক্রিয় ভার্টেক্স বাফার পরিবর্তন।
  3. সক্রিয় টেক্সচার ইউনিট পরিবর্তন।
  4. সক্রিয় শেডার প্রোগ্রাম পরিবর্তন।
  5. সক্রিয় ফ্রেম বাফার পরিবর্তন।

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

উত্তর:


26

বিভিন্ন রাষ্ট্রের পরিবর্তনের তুলনামূলক ব্যয় নিয়ে আমি সর্বাধিক ডেটা দেখেছি হ'ল ক্যাস এভারিট এবং জন ম্যাকডোনাল্ডের জানুয়ারী ২০১৪ থেকে ওপেনগিএল এপিআই ওভারহেড হ্রাস করার বিষয়ে আলোচনা this

রাষ্ট্র পরিবর্তনের আপেক্ষিক ব্যয়

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


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

27

যে কোনও নির্দিষ্ট রাষ্ট্র পরিবর্তনের আসল ব্যয় এতগুলি কারণের সাথে পরিবর্তিত হয় যে একটি সাধারণ উত্তর অসম্ভব।

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

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

এখানে পারফরম্যান্সটি বুঝতে আপনার যে জিনিসটি জানতে হবে তা হ'ল: আপনার রাষ্ট্রীয় পরিবর্তন প্রক্রিয়া করার জন্য ড্রাইভার এবং জিপিইউয়ের কী প্রয়োজন? অবশ্যই এটি আপনার জিপিইউ এবং তার উপর নির্ভর করে যে আইএসভিগুলি প্রায়শই প্রকাশ্যে ভাগ করে না। তবে কিছু সাধারণ নীতি রয়েছে

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

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

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

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

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

আমি নিশ্চিত যে এগুলি খুব বিভ্রান্তিকর, এবং দুর্ভাগ্যক্রমে খুব নির্দিষ্ট হওয়া খুব কঠিন কারণ বিবরণ প্রায়শই প্রকাশ্য হয় না তবে আমি আশা করি যে আপনি যখন কিছু রাষ্ট্রকে কল করবেন তখন বাস্তবে যে কিছু চলছে সেগুলির অর্ধ-শালীন ওভারভিউ আপনার প্রিয় গ্রাফিক্স API এ ফাংশন পরিবর্তন করা changing

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