février
2013
Dans mon précédent billet, je vous ai montré qu’il ne fallait pas faire confiance à la fonction feature(‘GetCPU’) pour obtenir les caractéristiques du processeur (CPU) de votre machine.
Il existe une méthode plus robuste dépendante du système d’exploitation
Sous Windows, il est possible d’utiliser la fonction getenv dans MATLAB comme ceci :
Sous Linux, il suffit de traiter les données contenues dans /proc/cpuinfo avec MATLAB comme ceci :
[status,data{2}] = system('grep -m 1 "cpu family" /proc/cpuinfo | cut -d: -f2');
[status,data{3}] = system('grep -m 1 "model" /proc/cpuinfo | cut -d: -f2');
[status,data{4}] = system('grep -m 1 "stepping" /proc/cpuinfo | cut -d: -f2');
fprintf('Family %s Model %s Stepping %s, %s\n',strtrim(data{2}),strtrim(data{3}),strtrim(data{4}),strtrim(data{1}));
ce qui donne également :
Pour rappel, la valeur de Model était 10 dans le précédent billet et cela posait problème pour déterminer avec exactitude le CPU.
Ici, il faut convertir 42 en binaire, soit 00101010. Il faut ensuite séparer les bits en deux paquets comme ceci : 0010 et 1010. La première valeur correspond à l’Extended Model qui si on se reporte au tableau Intel nous permet bien de cibler : « 2nd Generation Intel core Processor Family Mobile (Sandy Bridge) ». Ce qui correspond bien à la famille de mon CPU.
Pour identifier le CPU avec précision dans sa famille, il faut identifier plusieurs paramètres comme la fréquence, les mémoire caches… Ce qui peut s’avérer assez fastidieux.
Il nous faudrait une solution plus rapide qui donnerait la désignation commerciale du CPU en une seule ligne.
Sous Linux, il suffit de faire :
cpuname = strtrim(cpuname);
cpuname =
Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz
C’est beaucoup mieux
Par contre, je ne connais pas de solution équivalente sous Windows.
Dans le prochain billet, je vous montrerai comment demander directement ces informations au CPU lui-même à l’aide de l’opcode CPUID. Cette dernière solution sera portable et fonctionnera donc quelque soit le système d’exploitation.
2 Commentaires + Ajouter un commentaire
Laisser un commentaire
Demande à la poussière
Archives
Commentaires récents
- bredelet dans Clavier PC et Mac : aïe !
- gaurbhack dans Rien ne vaut une image
- Identification de processeur sous MATLAB (3/3) | Demande à la poussière dans Identification de processeur sous MATLAB (2/3)
- Identification de processeur sous MATLAB (3/3) | Demande à la poussière dans Identification de processeur sous MATLAB (1/3)
- tug83 dans Identification de processeur sous MATLAB (2/3)



Un article de Dut
[...] ← Précédent [...]
Salut
D’autres lignes qui peuvent interesser:
mhz = num2str(ceil(feature('timing', 'cpuspeed')/1000000));
disp(['The measured CPU speed is ' mhz ' MHz']);
%% RAM
pts = strfind(cmp, 'Total:');
mem = regexp(cmp(pts(1):end), '[0-9]+', 'once', 'match');
disp(['RAM is ' mem ' MB']);
%% SWAP
mem = regexp(cmp(pts(2):end), '[0-9]+', 'once', 'match');
disp(['Swap space is ' mem ' MB'])
Aurélien