আপনার কোডে 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-এর জন্য সমাধান নেই।