Модуль: OS::Linux::Hardware::CPU::ClassMethods Закрытый
- Расширен модулем:
- T::Helpers
- Определён в:
- extend/os/linux/hardware/cpu.rb
Этот модуль является частью закрытого API. Этот модуль можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого модуля, так как он может быть удалён или изменён без предупреждения.
Сводка методов экземпляра свернуть
- #amd_family(family, cpu_model) ⇒ Symbol? закрытый
- #family ⇒ Symbol закрытый
- #features ⇒ Array<Symbol> закрытый
Совместимость с методом Mac, который возвращает символы в нижнем регистре вместо строк.
- #flags ⇒ Array<String> закрытый
Поддерживаемые инструкции ЦП.
- #intel_family(family, cpu_model) ⇒ Symbol? закрытый
- #optimization_flags ⇒ Hash{Symbol => String} закрытый
- #sse3? ⇒ Boolean закрытый
- #sse4? ⇒ Boolean закрытый
Подробное описание методов экземпляра
#amd_family(family, cpu_model) ⇒ Symbol?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | # File 'extend/os/linux/hardware/cpu.rb', line 100 def amd_family(family, cpu_model) case family when 0x06 :amd_k7 when 0x0f :amd_k8 when 0x10 :amd_k10 when 0x11 :amd_k8_k10_hybrid when 0x12 :amd_k10_llano when 0x14 :bobcat when 0x15 :bulldozer when 0x16 :jaguar when 0x17 case cpu_model when 0x10..0x2f :zen when 0x30..0x3f, 0x47, 0x60..0x7f, 0x84..0x87, 0x90..0xaf :zen2 end when 0x19 case cpu_model when ..0x0f, 0x20..0x5f :zen3 when 0x10..0x1f, 0x60..0x7f, 0xa0..0xaf :zen4 end when 0x1a :zen5 end end |
#family ⇒ Symbol
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # File 'extend/os/linux/hardware/cpu.rb', line 23 def family return :arm if arm? return :ppc if ppc? return :dunno unless intel? # See https://software.intel.com/en-us/articles/intel-architecture-and-processor-identification-with-cpuid-model-and-family-numbers # and https://github.com/llvm/llvm-project/blob/main/llvm/lib/TargetParser/Host.cpp # and https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures#Roadmap vendor_id = cpuinfo[/^vendor_id\s*: (.*)/, 1] cpu_family = cpuinfo[/^cpu family\s*: ([0-9]+)/, 1].to_i cpu_model = cpuinfo[/^model\s*: ([0-9]+)/, 1].to_i unknown = :"unknown_0x#{cpu_family.to_s(16)}_0x#{cpu_model.to_s(16)}" case vendor_id when "GenuineIntel" intel_family(cpu_family, cpu_model) when "AuthenticAMD" amd_family(cpu_family, cpu_model) end || unknown end |
#features ⇒ Array<Symbol>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Совместимость с методом Mac, который возвращает символы в нижнем регистре вместо строк.
147 148 149 | # File 'extend/os/linux/hardware/cpu.rb', line 147 def features @features ||= T.let(flags.map(&:intern), T.nilable(T::Array[Symbol])) end |
#flags ⇒ Array<String>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Поддерживаемые инструкции ЦП
139 140 141 142 | # File 'extend/os/linux/hardware/cpu.rb', line 139 def flags @flags ||= T.let(cpuinfo[/^(?:flags|Features)\s*: (.*)/, 1]&.split, T.nilable(T::Array[String])) @flags ||= [] end |
#intel_family(family, cpu_model) ⇒ Symbol?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | # File 'extend/os/linux/hardware/cpu.rb', line 44 def intel_family(family, cpu_model) case family when 0x06 case cpu_model when 0x3a, 0x3e :ivybridge when 0x2a, 0x2d :sandybridge when 0x25, 0x2c, 0x2f :westmere when 0x1a, 0x1e, 0x1f, 0x2e :nehalem when 0x17, 0x1d :penryn when 0x0f, 0x16 :merom when 0x0d :dothan when 0x1c, 0x26, 0x27, 0x35, 0x36 :atom when 0x3c, 0x3f, 0x45, 0x46 :haswell when 0x3d, 0x47, 0x4f, 0x56 :broadwell when 0x4e, 0x5e, 0x8e, 0x9e, 0xa5, 0xa6 :skylake when 0x66 :cannonlake when 0x6a, 0x6c, 0x7d, 0x7e :icelake when 0xa7 :rocketlake when 0x8c, 0x8d :tigerlake when 0x97, 0x9a, 0xbe, 0xb7, 0xba, 0xbf, 0xaa, 0xac :alderlake when 0xc5, 0xb5, 0xc6, 0xbd :arrowlake when 0xcc :pantherlake when 0xad, 0xae :graniterapids when 0xcf, 0x8f :sapphirerapids end when 0x0f case cpu_model when 0x06 :presler when 0x03, 0x04 :prescott end end end |
#optimization_flags ⇒ Hash{Symbol => String}
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
14 15 16 17 18 19 20 | # File 'extend/os/linux/hardware/cpu.rb', line 14 def optimization_flags @optimization_flags ||= T.let(begin flags = super.dup flags[:native] = arch_flag(Homebrew::EnvConfig.arch) flags end, T.nilable(T::Hash[Symbol, String])) end |
#sse3? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
159 160 161 | # File 'extend/os/linux/hardware/cpu.rb', line 159 def sse3? flags.include?("pni") || flags.include?("sse3") end |
#sse4? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
164 165 166 | # File 'extend/os/linux/hardware/cpu.rb', line 164 def sse4? flags.include? "sse4_1" end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/OS/Linux/Hardware/CPU/ClassMethods.html