গ্রাফিক্স এপিআইয়ের জন্য থ্রেড সুরক্ষা কেন এত বড় একটি চুক্তি?


21

Vulkan এবং DirectX12 উভয়ই থ্রেড-নিরাপদ উপায়ে ব্যবহারযোগ্য বলে দাবি করা হচ্ছে। লোকেরা সে সম্পর্কে উচ্ছ্বসিত বলে মনে হচ্ছে।

কেন এটি এত বিশাল বৈশিষ্ট্য হিসাবে বিবেচিত হয়? "আসল" প্রসেসিং যাইহোক মেমরি ব্রিজের উপরে পৃথক প্রসেসিং ইউনিটে ফেলে দেওয়া হয়।

এছাড়াও যদি এটি এত বড় হয় তবে কেন এখন অবধি থ্রেড নিরাপদ গ্রাফিক্স এপিআই বেরিয়ে আসেনি?


এই নিবন্ধটি আরও অনেক বেশি "গেমার ফোকাসড
কি-

উত্তর:


13

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

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

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


1
অতিরিক্ত নোট হিসাবে ওপেনজিএল কেবলমাত্র একটি থ্রেডে কাজ করে তাই গ্রাফিক্স নিবিড় অ্যাপ্লিকেশনটি একটি কোরকে সর্বোচ্চ সীমাবদ্ধ করতে পারে। ভুলকানের মতো কিছু একাধিক থ্রেডকে একটি কাতারে কমান্ড প্রেরণের অনুমতি দেয় যার অর্থ একাধিক থ্রেড থেকে অনেক গ্রাফিক্স কল করা যেতে পারে।
সাবান

9

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

আশা করা যায় যে ডিএক্স 12 / ভলকান সেই বিধিনিষেধটি সরিয়ে দেয়, ড্রাইভারের কাজটি একটি ফ্রেমের মধ্যে একাধিক সিপিইউ থ্রেডের সমান্তরালে সম্পাদন করতে দেয়। এটি মাল্টিকোর সিপিইউগুলির আরও দক্ষ ব্যবহার সক্ষম করবে, গেম ইঞ্জিনগুলি সিপিইউ-সীমাবদ্ধ না হয়ে আরও জটিল দৃশ্যের দিকে ঠেলে দেবে। এটাই প্রত্যাশা practice বাস্তবে তা বাস্তবায়িত হবে কিনা তা হ'ল আমাদের আগামী কয়েক বছর ধরে অপেক্ষা করতে হবে।

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

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

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

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


5

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

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

এটি কম কাজ করার জন্য মোটামুটি প্রাকৃতিক উপায়ের পরামর্শ দেয়: জিপিইউতে একক ড্র কলটিতে বিপুল সংখ্যক প্রান্ত ছুড়ানোর পরিবর্তে আপনার মডেলটিকে বিভাগগুলিতে বিভক্ত করুন, সেই বিভাগগুলিতে সস্তা মোটা কুলিং করুন, এবং প্রতিটি খণ্ডটি যদি পাস করে তবে স্বতন্ত্রভাবে জমা দিন কুলিং পরীক্ষা। আপনি যদি সঠিক গ্রানুলারিটিতে এটি করেন তবে আপনার উচিত একটি দুর্দান্ত স্পিডআপ!

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

এটি কীভাবে ফুটে উঠেছে তা হ'ল আপনার কাছে কল কলগুলির জন্য বাজেট রয়েছে যা পুরোপুরি ড্রাইভারের ওভারহেড দ্বারা আরোপিত হয় । (আমার মনে হয় আমি শুনেছি যে আজকাল আপনি 60 টি এফপিএস শিরোনামের জন্য প্রায় ফ্রেম প্রতি 5,000 নিয়ে চলে যেতে পারেন)) আপনি এই কমান্ড স্ট্রিমটিকে সমান্তরাল খণ্ডে তৈরি করে বড় শতাংশের মাধ্যমে এটি বাড়িয়ে নিতে পারেন।

অন্যান্য কারণও রয়েছে (উদাহরণস্বরূপ, ভিআর ল্যাটেন্সি উন্নতির জন্য অ্যাসিঙ্ক্রোনাস টাইমওয়ার্প), তবে গ্রাফিক্স-গেমস গেমস এবং অন্যান্য ড্রকল-ভারী সফ্টওয়্যার (3 ডি মডেলিং প্যাকেজগুলির মতো) এর জন্য এটি একটি বড়।

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