come scoprire la famiglia di architettura Intel dalla riga di comando


28

Ottengo l'accesso ad alcune macchine xeon per il controllo delle prestazioni. Voglio scoprire quale architettura stanno usando come Haswell, Sandybridge, Ivybridge. C'è un comando per scoprirlo?


2
/proc/cpuinfoin realtà dà il nome del modello come Intel (R) blah blah blah GHz, dovresti cercarlo direttamente su Google.
Arthur2e5,

Stavo chiedendo una famiglia di architetti
un curioso ingegnere il

1
Non penso che la "famiglia dell'architettura" sia riportata, sono solo nomi commerciali. Ottieni il nome del modello /proc/cpuinfo, penso che spetti a te tradurlo nel nome della famiglia corrispondente.
Gilles 'SO- smetti di essere malvagio' il

@Ijustwanttocode Devi usare una specie di tabella per cercare quei nomi commerciali.
Arthur2e5,

Risposte:


45

È un po 'una soluzione economica ma potresti ottenere quelle informazioni da gcc! Spiegherò: gcc è in grado di ottimizzare i binari per ogni sottoarchico con l'opzione -march. Inoltre, è in grado di rilevare i tuoi e ottimizzare automaticamente per la tua macchina con -march = native Assumendo quindi, devi solo chiamare gcc con march = native e chiedergli quali flag userebbe: in breve

gcc -march=native -Q --help=target|grep march

per me dà

-march=                               bdver1

ma il mio pc funziona con un processore amd buldozer


la tua soluzione risponde alla domanda. Per me funziona.
AJN

Questo non funziona per me in quanto restituisce broadwellinvece di kabylake. Questo probabilmente perché la mia versione di gcc non distingue queste due famiglie durante la generazione di assembly.
Tyilo,

gcc8 può identificare skylake come tale mentre gcc5 identifica come broadwell, in effetti.
Eric,

8

Probabilmente non puoi perché quelli sono nomi di marketing per la vendita commerciale, non il nome "tecnico".

Tuttavia, è possibile ottenere ciò che è necessario da dmidecode e quindi visitare http://ark.intel.com (per il proprio processore Xeon) per determinare la famiglia commerciale.

[root@mediasrv ~]# dmidecode|grep -i intel
        Socket Designation: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
        Manufacturer: Intel
        Version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

Da quell'output, ho potuto visitare il sito Web di Intel Ark e cercare la CPU 3770, che mi direbbe che ho un chip Ivy Bridge.


1
Per farlo automatizzato con uno script userei dmidecode o / proc / cpuinfo e lo combinerei con grep o awk o perl e la versione stampabile dell'elenco cpu xeon su wikipedia che ottieni con curl o wget: en.wikipedia.org/ w /…
erik,

5

Di seguito è riportato uno script bash che trova automaticamente il nome del codice dell'architettura per la CPU utilizzando /proc/cpuinfoe https://ark.intel.com/ . Per funzionare richiede l' installazione di pup .

Eseguendo il codice sul mio computer ottengo il seguente risultato:

$ ./intel_codename
Processor name: i7-7700HQ
Kaby Lake

#!/bin/bash

set -euo pipefail

if [[ $# == 0 ]]; then
    modelname=$(cat /proc/cpuinfo | grep 'model name' | head -1)
    if ! grep Intel <<<"$modelname" > /dev/null; then
        echo "You don't seem to have an Intel processor" >&2
        exit 1
    fi

    name=$(sed 's/.*\s\(\S*\) CPU.*/\1/' <<<"$modelname")
    echo "Processor name: $name" >&2
else
    name=$1
fi

links=($(curl --silent "https://ark.intel.com/search?q=$name" | pup '.result-title a attr{href}'))

results=${#links[@]}
if [[ $results == 0 ]]; then
    echo "No results found" >&2
    exit 1
fi

link=${links[0]}
if [[ $results != 1 ]]; then
    echo "Warning: $results results found" >&2
    echo "Using: $link" >&2
fi

url="https://ark.intel.com$link"
codename=$(curl --silent "$url" | pup '.CodeNameText .value text{}' | xargs | sed 's/Products formerly //')

echo "$codename"

Funziona e fa ciò che @erik ha suggerito!
Panayotis,

5

Questi dati sono memorizzati in PMU_NAME, basta digitare:

cat /sys/devices/cpu/caps/pmu_name
haswell
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.