স্বয়ংক্রিয় প্রতিক্রিয়া-নির্দেশিত অপ্টিমাইজেশান (12 বা উচ্চতর)

অ্যান্ড্রয়েড ১২-এ প্রবর্তিত অ্যান্ড্রয়েড বিল্ড সিস্টেম, অটোমেটিক ফিডব্যাক-ডাইরেক্টেড অপটিমাইজেশন (AutoFDO) ব্যবহার করে ব্লুপ্রিন্ট বিল্ড রুলযুক্ত নেটিভ অ্যান্ড্রয়েড মডিউলগুলোকে অপটিমাইজ করা সমর্থন করে। AutoFDO একটি স্যাম্পলিং-ভিত্তিক অপটিমাইজেশন কৌশল। AutoFDO সিস্টেম বাইনারিগুলোর রানটাইম আচরণ ধারণ করে, যা কম্পাইলারকে আরও ভালো পারফরম্যান্স অপটিমাইজেশন করতে সক্ষম করে এবং একই সাথে বাইনারির আকারও হ্রাস করে। অ্যান্ড্রয়েড X86, X86_64, ARM, এবং ARM64 ডিভাইসগুলো থেকে প্রোফাইল সংগ্রহ করা সমর্থন করে, যদিও এই প্রোফাইলগুলো বিভিন্ন আর্কিটেকচার জুড়ে ব্যবহার করা যেতে পারে।

AutoFDO হলো ইন্সট্রুমেন্টেশন-ভিত্তিক প্রোফাইল-গাইডেড অপটিমাইজেশন (PGO)-এর উত্তরসূরি।

অন্যান্য ইন্সট্রুমেন্টেশন ভিত্তিক প্রোফাইলের তুলনায়, AutoFDO-এর এই অতিরিক্ত সুবিধাগুলো রয়েছে:

  • নির্বিঘ্ন ডেটা সংগ্রহ: বিল্ড রুলসে কোনো পরিবর্তন না করেই ডেভেলপমেন্ট বা ইউজার ডিভাইস থেকে AutoFDO প্রোফাইল সংগ্রহ করা যায়।

  • বাস্তব-জগতের ব্যবহারের উপস্থাপনা: AutoFDO ব্যবহারকারীর ডিভাইস থেকে প্রোফাইল সংগ্রহের অনুমানের ভিত্তিতে বাস্তব-জগতের ব্যবহারের আচরণকে উপস্থাপন করে, যেখানে ইন্সট্রুমেন্টেশন PGO শুধুমাত্র কৃত্রিম সংগ্রহ কর্মভারের প্রতিনিধিত্ব করে। এমন একটি সংগ্রহ কর্মভার তৈরি করা সাধারণত সহজ নয় যা বাস্তব-জগতের ব্যবহারের সাথে পুরোপুরি মিলে যায়।

বেশিরভাগ পারফরম্যান্স-সংবেদনশীল প্রোজেক্টের জন্য AOSP-এর সাথে AutoFDO প্রোফাইল দেওয়া থাকে। এই প্রোফাইলগুলো ফোন এবং ট্যাবলেট ডিভাইস থেকে সংগ্রহ করা হয়েছে এবং এগুলো সেগুলোর সাধারণ ব্যবহারের ধরনের প্রতিনিধিত্ব করে। প্রোফাইলগুলো toolchain/pgo-profiles/sampling ফোল্ডারে অবস্থিত। AOSP-তে AFDO ডিফল্টরূপে সক্রিয় থাকে।

একটি ব্লুপ্রিন্ট বিল্ড রুলের জন্য AutoFDO সক্রিয় করুন

ব্লুপ্রিন্ট বিল্ড রুলের জন্য AutoFDO সক্রিয় করতে, শেয়ার্ড লাইব্রেরি বা বাইনারি রুলের শেষে afdo: true যুক্ত করুন।

প্রোফাইল সংগ্রহ করুন

AOSP-এর সাথে প্রদত্ত প্রি-বান্ডেল প্রোফাইলটি এই নির্দিষ্ট সিনারিওগুলো সমর্থন করে না:

  • অতিরিক্ত অটোএফডিও প্রকল্প অন্তর্ভুক্তি
  • স্থানীয়ভাবে পরিবর্তিত কোডের উপস্থিতি
  • আপনার সিস্টেমের সাথে যুক্ত অনন্য ব্যবহারের ধরণ

আপনার ক্ষেত্রে এই ধরনের কোনো পরিস্থিতি তৈরি হলে, আপনাকে অবশ্যই সরাসরি ডেভেলপমেন্ট বা ব্যবহারকারীর ডিভাইস থেকে প্রোফাইল সংগ্রহ করতে হবে।

AutoFDO প্রোফাইল সংগ্রহের জন্য ARM ডিভাইসগুলি কীভাবে প্রস্তুত করতে হয় তার বিস্তারিত নির্দেশাবলীর জন্য, "AutoFDO-এর জন্য ETM ডেটা সংগ্রহ করুন" দেখুন।

AutoFDO প্রোফাইল সংগ্রহের জন্য X86 ডিভাইসগুলি কীভাবে প্রস্তুত করতে হয় তার বিস্তারিত নির্দেশাবলীর জন্য, "AutoFDO-এর জন্য LBR ডেটা সংগ্রহ করুন" দেখুন।

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

AutoFDO প্রোফাইলগুলি বিশ্লেষণ করুন

অ্যান্ড্রয়েড স্ট্যান্ডার্ড LLVM AutoFDO প্রোফাইল ব্যবহার করে। LLVM-এর llvm-profdata টুল ব্যবহার করে AFDO প্রোফাইলগুলো পড়া যায়। afdo_summary.sh স্ক্রিপ্টটি ( toolchain/pgo-profiles/scripts/afdo_summary.sh ) AutoFDO প্রোফাইল অনুযায়ী সবচেয়ে বেশি ব্যবহৃত ফাংশনগুলো স্বয়ংক্রিয়ভাবে তৈরি করে।