2424 # Intel CPUs
2525 'INTEL64' , 'SNB' , 'IVB' , 'HSW' , 'BDW' , 'KNL' , 'KNL7210' ,
2626 'SKX' , 'KLX' , 'CLX' , 'CLK' , 'SPR' ,
27+ # AMD CPUs
28+ 'AMD' ,
2729 # ARM CPUs
28- 'AMD' , ' ARM' , 'AppleArm' , 'M1' , 'M2' , 'M3' ,
30+ 'ARM' , 'AppleArm' , 'M1' , 'M2' , 'M3' ,
2931 'Graviton' , 'GRAVITON2' , 'GRAVITON3' , 'GRAVITON4' ,
32+ 'Cortex' ,
3033 # Other legacy CPUs
3134 'POWER8' , 'POWER9' ,
3235 # Generic GPUs
@@ -226,7 +229,7 @@ def homogenise_gpus(gpu_infos):
226229 for i in ['total' , 'free' , 'used' ]:
227230 def make_cbk (i ):
228231 def cbk (deviceid = 0 ):
229- info_cmd = ['nvidia-smi' , '--query-gpu=memory.%s' % i , '--format=csv' ]
232+ info_cmd = ['nvidia-smi' , f '--query-gpu=memory.{ i } ' , '--format=csv' ]
230233 proc = Popen (info_cmd , stdout = PIPE , stderr = DEVNULL )
231234 raw_info = str (proc .stdout .read ())
232235
@@ -248,7 +251,7 @@ def cbk(deviceid=0):
248251
249252 return cbk
250253
251- gpu_info ['mem.%s' % i ] = make_cbk (i )
254+ gpu_info [f 'mem.{ i } ' ] = make_cbk (i )
252255
253256 return gpu_info
254257
@@ -303,10 +306,10 @@ def make_cbk(i):
303306 def cbk (deviceid = 0 ):
304307 try :
305308 # Should only contain Used and total
306- assert len (info ['card%s' % deviceid ]) == 2
307- used = [int (v ) for k , v in info ['card%s' % deviceid ].items ()
309+ assert len (info [f 'card{ deviceid } ' ]) == 2
310+ used = [int (v ) for k , v in info [f 'card{ deviceid } ' ].items ()
308311 if 'Used' in k ][0 ]
309- total = [int (v ) for k , v in info ['card%s' % deviceid ].items ()
312+ total = [int (v ) for k , v in info [f 'card{ deviceid } ' ].items ()
310313 if 'Used' not in k ][0 ]
311314 free = total - used
312315 return {'total' : total , 'free' : free , 'used' : used }[i ]
@@ -318,7 +321,7 @@ def cbk(deviceid=0):
318321
319322 return cbk
320323
321- gpu_info ['mem.%s' % i ] = make_cbk (i )
324+ gpu_info [f 'mem.{ i } ' ] = make_cbk (i )
322325
323326 gpu_infos ['architecture' ] = 'AMD'
324327 return gpu_info
@@ -737,7 +740,7 @@ def numa_domains(self):
737740 try :
738741 return int (lscpu ()['NUMA node(s)' ])
739742 except (ValueError , TypeError , KeyError ):
740- warning ("NUMA domain count autodetection failed" )
743+ warning ("NUMA domain count autodetection failed, assuming 1 " )
741744 return 1
742745
743746 @cached_property
@@ -793,6 +796,21 @@ def march(self):
793796 return 'neoverse-n1'
794797
795798
799+ class Cortex (Arm ):
800+
801+ @property
802+ def version (self ):
803+ return int (self .name .split ('cortexa' )[- 1 ])
804+
805+ @cached_property
806+ def march (self ):
807+ return 'armv8-a+crc+simd'
808+
809+ @cached_property
810+ def mtune (self ):
811+ return f'cortex-a{ self .version } '
812+
813+
796814class Amd (Cpu64 ):
797815
798816 known_isas = ('cpp' , 'sse' , 'avx' , 'avx2' )
@@ -1007,6 +1025,8 @@ def march(cls):
10071025M1 = AppleArm ('m1' )
10081026M2 = AppleArm ('m2' )
10091027M3 = AppleArm ('m3' )
1028+ CORTEX = Cortex ('cortex' )
1029+ CORTEXA76 = Cortex ('cortexa76' )
10101030
10111031AMD = Amd ('amd' )
10121032
0 commit comments