С помощью all
из списка Perl ::Модуль Util:
$ perl -MList::Util=all -alne 'shift @F; print unless all { $_ eq "NA" } @F' file
gene v1 v2 v3 v4
g2 NA NA 2 3
g4 1 2 3 2
Некоторая терминология странная, но да.
Я думаю, что в этом выводе Socket означает CPU. Ядро означает ядро процессора (Socket ). Таким образом, может быть ядро 0 сокета 0 и ядро 0 сокета 1.
Узел — это нума-узел, поэтому у вас есть два устройства, объединенных в сеть в виде кластера.
И ЦП означает отдельное ядро :, одно для ядра 0 сокета 0, а другое для ядра 0 сокета 1.
Однако я думаю, что вы правы. CPU n и n+24 кажутся одинаковыми. На моем ноутбуке я получаю
0 0 0 0 0:0:0:0 yes 2000.0000 500.0000
1 0 0 1 1:1:1:0 yes 2000.0000 500.0000
2 0 0 0 0:0:0:0 yes 2000.0000 500.0000
3 0 0 1 1:1:1:0 yes 2000.0000 500.0000
Аналогичный результат. Я знаю, что это устройство имеет 1 процессор Socket ()и 2 ядра, но 4 гиперпотока. Поэтому я думаю, что каждый ЦП является гипер -потоком (, а не реальным независимым ядром ).
вывод изlscpu
...
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
...