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-এর জন্য সমাধান নেই।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# CPU features\n\nThere are several ways to check for CPU features in your code, each with a\ndifferent set of trade-offs.\n\nABI: Use the preprocessor's pre-defined macros\n----------------------------------------------\n\nIt's usually most convenient to determine the ABI at build time using `#ifdef`\nin conjunction with:\n\n- `__arm__` for 32-bit ARM\n- `__aarch64__` for 64-bit ARM\n- `__i386__` for 32-bit X86\n- `__x86_64__` for 64-bit X86\n\nNote that 32-bit X86 is called `__i386__`, not `__x86__` as you might expect!\n\nCPU core counts: Use libc's sysconf(3)\n--------------------------------------\n\n[sysconf(3)](http://man7.org/linux/man-pages/man3/sysconf.3.html) lets you\nquery both `_SC_NPROCESSORS_CONF` (the number of CPU cores in the system)\nand `_SC_NPROCESSORS_ONLN` (the number of CPU cores currently online).\n\nFeatures: Use libc's getauxval(3)\n---------------------------------\n\nIn API level 18 and newer,\n[getauxval(3)](http://man7.org/linux/man-pages/man3/getauxval.3.html)\nis available in Android's C library. The `AT_HWCAP` and `AT_HWCAP2` arguments\nreturn bitmasks listing CPU-specific features. See the various `hwcap.h`\nheaders in the NDK for the constants to compare against, such as `HWCAP_SHA512`\nfor arm64's SHA512 instructions, or `HWCAP_IDIVT` for arm's Thumb integer\ndivision instructions.\n\nThe Google cpu_features library\n-------------------------------\n\nOne problem with `AT_HWCAP` is that sometimes devices are mistaken. Some old\ndevices, for example, claim to have integer division instructions but do not.\n\n[Google's cpu_features](https://github.com/google/cpu_features) library works\naround such issues by applying its own knowledge of specific SoCs (by parsing\n`/proc/cpuinfo` to work out the specific SoC in question).\n\nThis library is maintained for use by Google's first-party app teams, and\nhas workarounds for every problematic device they've encountered in the wild.\n\nThe NDK cpufeatures library (deprecated)\n----------------------------------------\n\nThe NDK still provides a deprecated library named `cpufeatures` for source\ncompatibility with apps that already use it. Unlike the newer and more complete\n[cpu_features](https://github.com/google/cpu_features) library, this historical\nlibrary does not have workarounds for as many specific SoCs."]]