একটি শেডারে লুপ পারফরম্যান্স


11

আমি ভাবছি শ্যাডারে ডায়নামিক লুপ ফাংশন সংহত করার সর্বোত্তম উপায় কোনটি?

প্রথমত, মনে হচ্ছে গতিশীল অ্যারেগুলি সম্ভব নয়। সুতরাং, সর্বাধিক আকারের অ্যারে তৈরি করা এবং কেবলমাত্র এর একটি অংশ পূরণ করা বা পূর্বনির্ধারিত মাপের সাথে অ্যারেগুলি সংজ্ঞায়িত করা ভাল?

তারপরে, এই অ্যারের উপরে পুনরাবৃত্তি করার সবচেয়ে ভাল উপায় কী?

4 থেকে 128 পুনরাবৃত্তির মধ্যে কোনও কিছুর জন্য একটি নিয়ন্ত্রিত লুপ বা ডায়নামিক লুপ ব্যবহার করা কি ভাল? আমি এটিও দেখেছি যে এটি সর্বাধিক পূর্বনির্ধারিত সংখ্যায় পুনরাবৃত্তি করা সম্ভব এবং তারপরে এটি একটি শর্ত দিয়ে বন্ধ করুন if (i == myCurrentMaximumIterationNumber)


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

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

উত্তর:


6

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

বিটিডাব্লু, জিপিইউতে ডায়নামিক লুপের সবচেয়ে বড় ক্ষতি হ'ল ওয়েভফ্রন্ট / ওয়ার্পের স্বতন্ত্র "থ্রেডগুলি" বিভিন্ন সময়ে শেষ হবে। থ্রেডগুলি যেগুলি পরে থামায় তা এনওপিগুলি কার্যকর করার জন্য তাড়াতাড়ি শেষ হওয়া সমস্তগুলিকে বাধ্য করে।

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

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