49 lines
968 B
Markdown
49 lines
968 B
Markdown
|
|
# quickstart
|
|||
|
|
|
|||
|
|
## установка
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
pip install rawcpu
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## узнать процессор
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import rawcpu
|
|||
|
|
|
|||
|
|
print(rawcpu.vendor()) # GenuineIntel / AuthenticAMD
|
|||
|
|
print(rawcpu.brand()) # полная строка модели
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## проверить фичи перед SIMD-кодом
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
if rawcpu.has_feature("avx2"):
|
|||
|
|
# можно грузить AVX2-путь
|
|||
|
|
...
|
|||
|
|
else:
|
|||
|
|
# fallback
|
|||
|
|
...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
список доступных имён — `rawcpu.FEATURES`.
|
|||
|
|
|
|||
|
|
## точный замер тактов
|
|||
|
|
|
|||
|
|
`time.perf_counter()` меряет время через ОС, `rdtsc()` — реальные такты процессора напрямую:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
start = rawcpu.rdtsc()
|
|||
|
|
do_something()
|
|||
|
|
end = rawcpu.rdtsc()
|
|||
|
|
print(end - start, "cycles")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## сырой cpuid
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
eax, ebx, ecx, edx = rawcpu.cpuid(leaf=7, subleaf=0)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
leaf/subleaf — как в интеловской документации по CPUID.
|