CPU বৈশিষ্ট্য

আপনার কোডে CPU বৈশিষ্ট্যগুলি পরীক্ষা করার বিভিন্ন উপায় রয়েছে, প্রতিটিতে ট্রেড-অফের আলাদা সেট রয়েছে।

ABI: প্রিপ্রসেসরের পূর্বনির্ধারিত ম্যাক্রো ব্যবহার করুন

এর সাথে একত্রে #ifdef ব্যবহার করে বিল্ড টাইমে ABI নির্ধারণ করা সাধারণত সবচেয়ে সুবিধাজনক:

  • __arm__ 32-বিট ARM-এর জন্য
  • __aarch64__ 64-বিট ARM-এর জন্য
  • __i386__ 32-বিট X86 এর জন্য
  • 64-বিট X86 এর জন্য __x86_64__

মনে রাখবেন যে 32-বিট X86 কে __i386__ বলা হয়, __x86__ যেমন আপনি আশা করতে পারেন!

CPU কোর গণনা: libc এর sysconf(3) ব্যবহার করুন

sysconf(3) আপনাকে _SC_NPROCESSORS_CONF (সিস্টেমের CPU কোরের সংখ্যা) এবং _SC_NPROCESSORS_ONLN (বর্তমানে অনলাইনে CPU কোরের সংখ্যা) উভয়কেই জিজ্ঞাসা করতে দেয়।

বৈশিষ্ট্য: libc এর getauxval(3) ব্যবহার করুন

এপিআই লেভেল 18 এবং আরও নতুন, getauxval(3) Android এর C লাইব্রেরিতে উপলব্ধ। AT_HWCAP এবং AT_HWCAP2 আর্গুমেন্টগুলি সিপিইউ-নির্দিষ্ট বৈশিষ্ট্যগুলির তালিকাভুক্ত বিটমাস্ক প্রদান করে। তুলনা করার জন্য ধ্রুবকগুলির জন্য NDK-এর বিভিন্ন hwcap.h শিরোনামগুলি দেখুন, যেমন arm64-এর SHA512 নির্দেশাবলীর জন্য HWCAP_SHA512 , বা বাহুর থাম্ব পূর্ণসংখ্যা বিভাগের নির্দেশাবলীর জন্য HWCAP_IDIVT

Google cpu_features লাইব্রেরি

AT_HWCAP এর একটি সমস্যা হল যে কখনও কখনও ডিভাইসগুলি ভুল হয়৷ কিছু পুরানো ডিভাইস, উদাহরণস্বরূপ, পূর্ণসংখ্যা বিভাগের নির্দেশাবলী আছে বলে দাবি করে কিন্তু তা করে না।

Google-এর cpu_features লাইব্রেরি নির্দিষ্ট SoC-এর নিজস্ব জ্ঞান প্রয়োগ করে (প্রশ্নযুক্ত নির্দিষ্ট SoC নিয়ে কাজ করার জন্য /proc/cpuinfo পার্স করে) এই ধরনের সমস্যাগুলির উপর কাজ করে।

এই লাইব্রেরিটি Google-এর প্রথম-পক্ষের অ্যাপ টিমের দ্বারা ব্যবহারের জন্য রক্ষণাবেক্ষণ করা হয়, এবং বন্য অঞ্চলে তাদের সম্মুখীন হওয়া প্রতিটি সমস্যাযুক্ত ডিভাইসের জন্য সমাধান রয়েছে৷

NDK cpufeatures লাইব্রেরি (বঞ্চিত)

NDK এখনও অ্যাপগুলির সাথে সোর্স সামঞ্জস্যের জন্য cpufeatures নামে একটি অবচিত লাইব্রেরি সরবরাহ করে যা ইতিমধ্যে এটি ব্যবহার করে৷ নতুন এবং আরও সম্পূর্ণ cpu_features লাইব্রেরির বিপরীতে, এই ঐতিহাসিক লাইব্রেরিতে অনেকগুলি নির্দিষ্ট SoC-এর জন্য সমাধান নেই।