added support for amd epyc cpus
as a result, concho is now able to handle hpe's amd configurations - also added the l3 cache attribute on cpus (not used yet but I'm planning to show it in the graphs as l3cache per core affects the performance) - added the ability to output the figure in a file instead of the screen (will be useful for continuous integration) work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=4015]
This commit is contained in:
		
							parent
							
								
									a0ba1f3b95
								
							
						
					
					
						commit
						9aebde1f0f
					
				|  | @ -1,267 +1,286 @@ | ||||||
| #id	clock	num_cores	max_cpus	tdp	cpumark_1_cpu	cpumark_2_cpu | #id	clock	num_cores	max_cpus	tdp	cpumark_1_cpu	cpumark_2_cpu	l3_cache_mb | ||||||
| intel-core-i7-8700k	3.7	6	1	95	0	0 | intel-core-i7-8700k	3.7	6	1	95	0	0	0 | ||||||
| intel-xeon-5150	2.66	2	2	65	1746	3498 | intel-xeon-5150	2.66	2	2	65	1746	3498	0 | ||||||
| intel-xeon-e5462	2.8	4	2	80	4038	7350 | intel-xeon-e5462	2.8	4	2	80	4038	7350	0 | ||||||
| intel-xeon-x5550	2.67	4	2	95	5416	9131 | intel-xeon-x5550	2.67	4	2	95	5416	9131	0 | ||||||
| intel-xeon-x5560	2.8	4	2	95	5426	9215 | intel-xeon-x5560	2.8	4	2	95	5426	9215	0 | ||||||
| intel-xeon-x5650	2.67	6	2	95	7601	11728 | intel-xeon-x5650	2.67	6	2	95	7601	11728	0 | ||||||
| intel-xeon-x5660	2.8	6	2	95	7954	11893 | intel-xeon-x5660	2.8	6	2	95	7954	11893	0 | ||||||
| intel-xeon-e5-2660	2.2	8	2	95	11535	17282 | intel-xeon-e5-2660	2.2	8	2	95	11535	17282	0 | ||||||
| intel-xeon-e5-2670	2.6	8	2	115	0	18509 | intel-xeon-e5-2670	2.6	8	2	115	0	18509	0 | ||||||
| intel-xeon-e5-2680	2.7	8	2	130	0	18480 | intel-xeon-e5-2680	2.7	8	2	130	0	18480	0 | ||||||
| intel-xeon-e5-2690	2.9	8	2	135	0	20699 | intel-xeon-e5-2690	2.9	8	2	135	0	20699	0 | ||||||
| intel-xeon-e5-2620v2	2.1	6	2	95	8664	13474 | intel-xeon-e5-2620v2	2.1	6	2	95	8664	13474	0 | ||||||
| intel-xeon-e5-2630v2	2.6	6	2	80	10615	16256 | intel-xeon-e5-2630v2	2.6	6	2	80	10615	16256	0 | ||||||
| intel-xeon-e5-2640v2	2	8	2	95	10132	14792 | intel-xeon-e5-2640v2	2	8	2	95	10132	14792	0 | ||||||
| intel-xeon-e5-2650v2	2.6	8	2	95	13276	19333 | intel-xeon-e5-2650v2	2.6	8	2	95	13276	19333	0 | ||||||
| intel-xeon-e5-2660v2	2.2	10	2	95	13659	18670 | intel-xeon-e5-2660v2	2.2	10	2	95	13659	18670	0 | ||||||
| intel-xeon-e5-2670v2	2.5	10	2	115	14892	22062 | intel-xeon-e5-2670v2	2.5	10	2	115	14892	22062	0 | ||||||
| intel-xeon-e5-2680v2	2.8	10	2	115	16340	23263 | intel-xeon-e5-2680v2	2.8	10	2	115	16340	23263	0 | ||||||
| intel-xeon-e5-2690v2	3	10	2	130	17304	24189 | intel-xeon-e5-2690v2	3	10	2	130	17304	24189	0 | ||||||
| intel-xeon-e5-2695v2	2.4	12	2	130	17231	21980 | intel-xeon-e5-2695v2	2.4	12	2	130	17231	21980	0 | ||||||
| intel-xeon-e5-2697v2	2.7	12	2	130	17516	23910 | intel-xeon-e5-2697v2	2.7	12	2	130	17516	23910	0 | ||||||
| intel-xeon-e5-2603v3	1.6	6	2	85	4996	8358 | intel-xeon-e5-2603v3	1.6	6	2	85	4996	8358	0 | ||||||
| intel-xeon-e5-2609v3	1.9	6	2	85	5878	9885 | intel-xeon-e5-2609v3	1.9	6	2	85	5878	9885	0 | ||||||
| intel-xeon-e5-2620v3	2.4	6	2	85	9955	15400 | intel-xeon-e5-2620v3	2.4	6	2	85	9955	15400	0 | ||||||
| intel-xeon-e5-2623v3	3	6	2	105	9007	13914 | intel-xeon-e5-2623v3	3	6	2	105	9007	13914	0 | ||||||
| intel-xeon-e5-2630v3	2.4	8	2	85	12803	18699 | intel-xeon-e5-2630v3	2.4	8	2	85	12803	18699	0 | ||||||
| intel-xeon-e5-2630lv3	1.8	8	2	55	11201	0 | intel-xeon-e5-2630lv3	1.8	8	2	55	11201	0	0 | ||||||
| intel-xeon-e5-2637v3	3.5	4	2	135	10278	16823 | intel-xeon-e5-2637v3	3.5	4	2	135	10278	16823	0 | ||||||
| intel-xeon-e5-2640v3	2.6	8	2	90	14081	20824 | intel-xeon-e5-2640v3	2.6	8	2	90	14081	20824	0 | ||||||
| intel-xeon-e5-2643v3	3.4	6	2	135	13671	20574 | intel-xeon-e5-2643v3	3.4	6	2	135	13671	20574	0 | ||||||
| intel-xeon-e5-2650v3	2.3	10	2	105	15106	20602 | intel-xeon-e5-2650v3	2.3	10	2	105	15106	20602	0 | ||||||
| intel-xeon-e5-2650lv3	1.8	12	2	65	13132	0 | intel-xeon-e5-2650lv3	1.8	12	2	65	13132	0	0 | ||||||
| intel-xeon-e5-2660v3	2.6	10	2	105	16161	23388 | intel-xeon-e5-2660v3	2.6	10	2	105	16161	23388	0 | ||||||
| intel-xeon-e5-2667v3	3.2	8	2	135	16125	22935 | intel-xeon-e5-2667v3	3.2	8	2	135	16125	22935	0 | ||||||
| intel-xeon-e5-2670v3	2.3	12	2	120	16549	22330 | intel-xeon-e5-2670v3	2.3	12	2	120	16549	22330	0 | ||||||
| intel-xeon-e5-2680v3	2.5	12	2	120	18840	25352 | intel-xeon-e5-2680v3	2.5	12	2	120	18840	25352	0 | ||||||
| intel-xeon-e5-2683v3	2	14	2	120	17917	22704 | intel-xeon-e5-2683v3	2	14	2	120	17917	22704	0 | ||||||
| intel-xeon-e5-2687wv3	3.1	10	2	160	17785	24769 | intel-xeon-e5-2687wv3	3.1	10	2	160	17785	24769	0 | ||||||
| intel-xeon-e5-2690v3	2.6	12	2	160	19567	26665 | intel-xeon-e5-2690v3	2.6	12	2	160	19567	26665	0 | ||||||
| intel-xeon-e5-2695v3	2.3	14	2	120	20742	26021 | intel-xeon-e5-2695v3	2.3	14	2	120	20742	26021	0 | ||||||
| intel-xeon-e5-2697v3	2.6	14	2	145	21667	29009 | intel-xeon-e5-2697v3	2.6	14	2	145	21667	29009	0 | ||||||
| intel-xeon-e5-2698v3	2.3	16	2	135	21794	30217 | intel-xeon-e5-2698v3	2.3	16	2	135	21794	30217	0 | ||||||
| intel-xeon-e5-2699v3	2.3	18	2	145	22520	24820 | intel-xeon-e5-2699v3	2.3	18	2	145	22520	24820	0 | ||||||
| intel-xeon-e5-2603v4	1.7	6	2	85	5247	8809 | intel-xeon-e5-2603v4	1.7	6	2	85	5247	8809	0 | ||||||
| intel-xeon-e5-2609v4	1.7	8	2	85	0	10835 | intel-xeon-e5-2609v4	1.7	8	2	85	0	10835	0 | ||||||
| intel-xeon-e5-2620v4	2.1	8	2	85	11219	17063 | intel-xeon-e5-2620v4	2.1	8	2	85	11219	17063	0 | ||||||
| intel-xeon-e5-2623v4	2.6	4	2	85	0	10196 | intel-xeon-e5-2623v4	2.6	4	2	85	0	10196	0 | ||||||
| intel-xeon-e5-2630v4	2.2	10	2	85	14221	18281 | intel-xeon-e5-2630v4	2.2	10	2	85	14221	18281	0 | ||||||
| intel-xeon-e5-2630lv4	1.8	10	2	55	0	0 | intel-xeon-e5-2630lv4	1.8	10	2	55	0	0	0 | ||||||
| intel-xeon-e5-2637v4	3.5	4	2	135	9665	17398 | intel-xeon-e5-2637v4	3.5	4	2	135	9665	17398	0 | ||||||
| intel-xeon-e5-2640v4	2.4	10	2	90	15244	21556 | intel-xeon-e5-2640v4	2.4	10	2	90	15244	21556	0 | ||||||
| intel-xeon-e5-2643v4	3.4	6	2	135	14329	22063 | intel-xeon-e5-2643v4	3.4	6	2	135	14329	22063	0 | ||||||
| intel-xeon-e5-2650v4	2.2	12	2	105	16212	22619 | intel-xeon-e5-2650v4	2.2	12	2	105	16212	22619	0 | ||||||
| intel-xeon-e5-2650lv4	1.7	14	2	65	0	0 | intel-xeon-e5-2650lv4	1.7	14	2	65	0	0	0 | ||||||
| intel-xeon-e5-2660v4	2.0	14	2	105	0	0 | intel-xeon-e5-2660v4	2.0	14	2	105	0	0	0 | ||||||
| intel-xeon-e5-2667v4	3.2	8	2	135	0	0 | intel-xeon-e5-2667v4	3.2	8	2	135	0	0	0 | ||||||
| intel-xeon-e5-2680v4	2.4	14	2	120	20489	0 | intel-xeon-e5-2680v4	2.4	14	2	120	20489	0	0 | ||||||
| intel-xeon-e5-2683v4	2.1	16	2	120	0	0 | intel-xeon-e5-2683v4	2.1	16	2	120	0	0	0 | ||||||
| intel-xeon-e5-2687wv4	3.0	12	2	160	20340	27161 | intel-xeon-e5-2687wv4	3.0	12	2	160	20340	27161	0 | ||||||
| intel-xeon-e5-2690v4	2.6	14	2	120	22843	28262 | intel-xeon-e5-2690v4	2.6	14	2	120	22843	28262	0 | ||||||
| intel-xeon-e5-2695v4	2.1	18	2	135	19351	20768 | intel-xeon-e5-2695v4	2.1	18	2	135	19351	20768	0 | ||||||
| intel-xeon-e5-2697v4	2.3	18	2	135	23070	0 | intel-xeon-e5-2697v4	2.3	18	2	135	23070	0	0 | ||||||
| intel-xeon-e5-2697av4	2.6	16	2	145	0	24075 | intel-xeon-e5-2697av4	2.6	16	2	145	0	24075	0 | ||||||
| intel-xeon-e5-2698v4	2.2	20	2	135	24615	32248 | intel-xeon-e5-2698v4	2.2	20	2	135	24615	32248	0 | ||||||
| intel-xeon-e5-2699v4	2.2	22	2	145	21277	38461 | intel-xeon-e5-2699v4	2.2	22	2	145	21277	38461	0 | ||||||
| intel-xeon-gold-5115	2.4	10 	4	85	0	0 | intel-xeon-gold-5115	2.4	10 	4	85	0	0	0 | ||||||
| intel-xeon-gold-5117	2.0	14 	4	105	0	0 | intel-xeon-gold-5117	2.0	14 	4	105	0	0	0 | ||||||
| intel-xeon-gold-5117f	2.0	14 	4	113	0	0 | intel-xeon-gold-5117f	2.0	14 	4	113	0	0	0 | ||||||
| intel-xeon-gold-5117m	2.0	0 	4	0	0	21250 | intel-xeon-gold-5117m	2.0	0 	4	0	0	21250	0 | ||||||
| intel-xeon-gold-5118	2.3	12 	4	105	0	0 | intel-xeon-gold-5118	2.3	12 	4	105	0	0	0 | ||||||
| intel-xeon-gold-5119t	1.9	14 	4	85	0	0 | intel-xeon-gold-5119t	1.9	14 	4	85	0	0	0 | ||||||
| intel-xeon-gold-5120	2.2	14 	4	105	0	0 | intel-xeon-gold-5120	2.2	14 	4	105	0	0	0 | ||||||
| intel-xeon-gold-5120t	2.2	14 	4	105	0	0 | intel-xeon-gold-5120t	2.2	14 	4	105	0	0	0 | ||||||
| intel-xeon-gold-5122	3.6	4 	4	105	0	0 | intel-xeon-gold-5122	3.6	4 	4	105	0	0	0 | ||||||
| intel-xeon-gold-6126	2.6	12 	4	125	0	0 | intel-xeon-gold-6126	2.6	12 	4	125	0	0	0 | ||||||
| intel-xeon-gold-6126f	2.6	12 	4	135	0	0 | intel-xeon-gold-6126f	2.6	12 	4	135	0	0	0 | ||||||
| intel-xeon-gold-6128	3.4	6 	4	115	0	0 | intel-xeon-gold-6128	3.4	6 	4	115	0	0	0 | ||||||
| intel-xeon-gold-6130	2.1	16 	4	125	0	0 | intel-xeon-gold-6130	2.1	16 	4	125	0	0	0 | ||||||
| intel-xeon-gold-6130f	2.1	16 	4	125	0	0 | intel-xeon-gold-6130f	2.1	16 	4	125	0	0	0 | ||||||
| intel-xeon-gold-6130t	2.1	16 	4	125	0	0 | intel-xeon-gold-6130t	2.1	16 	4	125	0	0	0 | ||||||
| intel-xeon-gold-6132	2.6	14 	4	140	0	0 | intel-xeon-gold-6132	2.6	14 	4	140	0	0	0 | ||||||
| intel-xeon-gold-6134	3.2	8 	4	130	0	0 | intel-xeon-gold-6134	3.2	8 	4	130	0	0	0 | ||||||
| intel-xeon-gold-6134m	3.2	8 	4	130	0	0 | intel-xeon-gold-6134m	3.2	8 	4	130	0	0	0 | ||||||
| intel-xeon-gold-6136	3.0	12 	4	150	0	0 | intel-xeon-gold-6136	3.0	12 	4	150	0	0	0 | ||||||
| intel-xeon-gold-6138	2.0	20 	4	125	0	0 | intel-xeon-gold-6138	2.0	20 	4	125	0	0	0 | ||||||
| intel-xeon-gold-6138f	2.0	20 	4	135	0	0 | intel-xeon-gold-6138f	2.0	20 	4	135	0	0	0 | ||||||
| intel-xeon-gold-6138t	2.0	20 	4	125	0	0 | intel-xeon-gold-6138t	2.0	20 	4	125	0	0	0 | ||||||
| intel-xeon-gold-6140	2.3	18 	4	140	0	0 | intel-xeon-gold-6140	2.3	18 	4	140	0	0	0 | ||||||
| intel-xeon-gold-6140m	2.3	18 	4	140	0	0 | intel-xeon-gold-6140m	2.3	18 	4	140	0	0	0 | ||||||
| intel-xeon-gold-6142	2.6	16 	4	150	0	0 | intel-xeon-gold-6142	2.6	16 	4	150	0	0	0 | ||||||
| intel-xeon-gold-6142f	2.6	16 	4	160	0	0 | intel-xeon-gold-6142f	2.6	16 	4	160	0	0	0 | ||||||
| intel-xeon-gold-6142m	2.6	16 	4	150	0	0 | intel-xeon-gold-6142m	2.6	16 	4	150	0	0	0 | ||||||
| intel-xeon-gold-6144	3.5	8 	4	150	0	0 | intel-xeon-gold-6144	3.5	8 	4	150	0	0	0 | ||||||
| intel-xeon-gold-6145	2.0	20 	4	145	0	0 | intel-xeon-gold-6145	2.0	20 	4	145	0	0	0 | ||||||
| intel-xeon-gold-6146	3.2	12 	4	165	0	0 | intel-xeon-gold-6146	3.2	12 	4	165	0	0	0 | ||||||
| intel-xeon-gold-6148	2.4	20 	4	150	0	0 | intel-xeon-gold-6148	2.4	20 	4	150	0	0	0 | ||||||
| intel-xeon-gold-6150	2.7	18 	4	165	0	26349 | intel-xeon-gold-6150	2.7	18 	4	165	0	26349	0 | ||||||
| intel-xeon-gold-6152	2.1	22 	4	140	0	0 | intel-xeon-gold-6152	2.1	22 	4	140	0	0	0 | ||||||
| intel-xeon-gold-6154	3.0	18 	4	200	0	0 | intel-xeon-gold-6154	3.0	18 	4	200	0	0	0 | ||||||
| intel-xeon-gold-6161	2.2	22 	4	165	0	0 | intel-xeon-gold-6161	2.2	22 	4	165	0	0	0 | ||||||
| intel-xeon-platinum-8153	2.0	16	8	125	0	0 | intel-xeon-platinum-8153	2.0	16	8	125	0	0	0 | ||||||
| intel-xeon-platinum-8160	2.1	24	8	150	0	0 | intel-xeon-platinum-8160	2.1	24	8	150	0	0	0 | ||||||
| intel-xeon-platinum-8164	2.0	26	8	165	0	0 | intel-xeon-platinum-8164	2.0	26	8	165	0	0	0 | ||||||
| intel-xeon-platinum-8168	2.7	24	8	205	0	0 | intel-xeon-platinum-8168	2.7	24	8	205	0	0	0 | ||||||
| intel-xeon-platinum-8170	2.1	26	8	165	0	0 | intel-xeon-platinum-8170	2.1	26	8	165	0	0	0 | ||||||
| intel-xeon-platinum-8176	2.1	28	8	165	0	0 | intel-xeon-platinum-8176	2.1	28	8	165	0	0	0 | ||||||
| 
 | 
 | ||||||
|  | intel-xeon-silver-4208	2.1	8 	2	85	0	0	0 | ||||||
|  | intel-xeon-silver-4210r	2.4	10 	2	100	0	0	0 | ||||||
|  | intel-xeon-silver-4214	2.2	12 	2	85	0	0	0 | ||||||
|  | intel-xeon-silver-4214r	2.4	12 	2	100	0	0	0 | ||||||
|  | intel-xeon-silver-4214y	2.2	12 	2	85	0	0	0 | ||||||
|  | intel-xeon-silver-4215r	3.2	8 	2	130	0	0	0 | ||||||
|  | intel-xeon-silver-4216	2.1	16 	2	100	0	0	0 | ||||||
|  | intel-xeon-gold-5215	2.5	10 	4	85	0	0	0 | ||||||
|  | intel-xeon-gold-5215l	2.5	10 	4	85	0	0	0 | ||||||
|  | intel-xeon-gold-5217	3.0	8 	4	115	0	0	0 | ||||||
|  | intel-xeon-gold-5218	2.3	16 	4	125	0	0	0 | ||||||
|  | intel-xeon-gold-5218n	2.3	16 	4	125	0	0	0 | ||||||
|  | intel-xeon-gold-5218r	2.1	20 	2	125	0	0	0 | ||||||
|  | intel-xeon-gold-5220	2.2	18 	4	125	0	0	0 | ||||||
|  | intel-xeon-gold-5220r	2.2	24 	2	150	0	0	0 | ||||||
|  | intel-xeon-gold-5222	3.8	4 	4	105	0	0	0 | ||||||
|  | intel-xeon-gold-6208u	2.9	16 	1	150	0	0	0 | ||||||
|  | intel-xeon-gold-6210u	2.5	20 	1	150	0	0	0 | ||||||
|  | intel-xeon-gold-6212u	2.4	24 	1	165	0	0	0 | ||||||
|  | intel-xeon-gold-6226	2.7	12 	4	125	0	0	0 | ||||||
|  | intel-xeon-gold-6226r	2.9	16 	2	150	0	0	0 | ||||||
|  | intel-xeon-gold-6230	2.1	20 	4	125	0	0	0 | ||||||
|  | intel-xeon-gold-6230n	2.3	20 	2	125	0	0	0 | ||||||
|  | intel-xeon-gold-6230r	2.1	26 	2	150	0	0	0 | ||||||
|  | intel-xeon-gold-6234	3.3	8 	4	130	0	0	0 | ||||||
|  | intel-xeon-gold-6238	2.1	22 	4	140	0	0	0 | ||||||
|  | intel-xeon-gold-6238l	2.1	22 	4	140	0	0	0 | ||||||
|  | intel-xeon-gold-6238m	2.1	22 	4	140	0	0	0 | ||||||
|  | intel-xeon-gold-6238r	2.2	28 	2	165	0	0	0 | ||||||
|  | intel-xeon-gold-6240	2.6	18 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6240l	2.6	18 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6240m	2.6	18 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6240r	2.4	24 	2	165	0	0	0 | ||||||
|  | intel-xeon-gold-6240y	2.6	18 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6242	2.8	16 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6242r	3.1	20 	2	205	0	0	0 | ||||||
|  | intel-xeon-gold-6244	3.6	8 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6246	3.3	12 	4	165	0	0	0 | ||||||
|  | intel-xeon-gold-6246r	3.4	16 	2	205	0	0	0 | ||||||
|  | intel-xeon-gold-6248	2.5	20 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6248r	3.0	24 	2	205	0	0	0 | ||||||
|  | intel-xeon-gold-6250	3.9	8 	4	185	0	0	0 | ||||||
|  | intel-xeon-gold-6252	2.1	24 	4	150	0	0	0 | ||||||
|  | intel-xeon-gold-6254	3.1	18 	4	200	0	0	0 | ||||||
|  | intel-xeon-gold-6258r	2.7	28 	2	205	0	0	0 | ||||||
|  | intel-xeon-platinum-8253	2.2	16 	8	125	0	0	0 | ||||||
|  | intel-xeon-platinum-8256	3.8	4 	8	105	0	0	0 | ||||||
|  | intel-xeon-platinum-8260	2.4	24 	8	165	0	0	0 | ||||||
|  | intel-xeon-platinum-8260l	2.4	24 	8	165	0	0	0 | ||||||
|  | intel-xeon-platinum-8260y	2.4	24 	8	165	0	0	0 | ||||||
|  | intel-xeon-platinum-8268	2.9	24 	8	205	0	0	0 | ||||||
|  | intel-xeon-platinum-8270	2.7	26 	8	205	0	0	0 | ||||||
|  | intel-xeon-platinum-8276	2.2	28 	8	165	0	0	0 | ||||||
|  | intel-xeon-platinum-8280	2.7	28 	8	205	0	0	0 | ||||||
|  | intel-xeon-platinum-8280l	2.7	28 	8	205	0	0	0 | ||||||
| 
 | 
 | ||||||
| intel-xeon-silver-4208	2.1	8 	2	85	0	0 | intel-xeon-silver-4310	2.1	12 	2	120	0	0	18.0 | ||||||
| intel-xeon-silver-4210r	2.4	10 	2	100	0	0 | intel-xeon-silver-4314	2.4	16 	2	135	0	0	24.0 | ||||||
| intel-xeon-silver-4214	2.2	12 	2	85	0	0 | intel-xeon-silver-4316	2.3	20 	2	150	0	0	30.0 | ||||||
| intel-xeon-silver-4214r	2.4	12 	2	100	0	0 | intel-xeon-gold-5315y	3.2	8 	2	140	0	0	12.0 | ||||||
| intel-xeon-silver-4214y	2.2	12 	2	85	0	0 | intel-xeon-gold-5317	3.0	12 	2	150	0	0	18.0 | ||||||
| intel-xeon-silver-4215r	3.2	8 	2	130	0	0 | intel-xeon-gold-5318s	2.1	24 	2	165	0	0	36.0 | ||||||
| intel-xeon-silver-4216	2.1	16 	2	100	0	0 | intel-xeon-gold-5318y	2.1	24 	2	165	0	0	36.0 | ||||||
| intel-xeon-gold-5215	2.5	10 	4	85	0	0 | intel-xeon-gold-5320	2.2	26 	2	185	0	0	39.0 | ||||||
| intel-xeon-gold-5215l	2.5	10 	4	85	0	0 | intel-xeon-gold-6312u	2.4	24 	1	185	0	0	36.0 | ||||||
| intel-xeon-gold-5217	3.0	8 	4	115	0	0 | intel-xeon-gold-6314u	2.3	32 	1	205	0	0	48.0 | ||||||
| intel-xeon-gold-5218	2.3	16 	4	125	0	0 | intel-xeon-gold-6326	2.9	16 	2	185	0	0	24.0 | ||||||
| intel-xeon-gold-5218n	2.3	16 	4	125	0	0 | intel-xeon-gold-6330	2.0	28 	2	205	0	0	42.0 | ||||||
| intel-xeon-gold-5218r	2.1	20 	2	125	0	0 | intel-xeon-gold-6334	3.6	8 	2	165	0	0	18.0 | ||||||
| intel-xeon-gold-5220	2.2	18 	4	125	0	0 | intel-xeon-gold-6336y	2.4	24 	2	185	0	0	36.0 | ||||||
| intel-xeon-gold-5220r	2.2	24 	2	150	0	0 | intel-xeon-gold-6338	2.0	32 	2	205	0	0	48.0 | ||||||
| intel-xeon-gold-5222	3.8	4 	4	105	0	0 | intel-xeon-gold-6338n	2.2	32 	2	185	0	0	48.0 | ||||||
| intel-xeon-gold-6208u	2.9	16 	1	150	0	0 | intel-xeon-gold-6342	2.8	24 	2	230	0	0	30.0 | ||||||
| intel-xeon-gold-6210u	2.5	20 	1	150	0	0 | intel-xeon-gold-6346	3.1	16 	2	205	0	0	36.0 | ||||||
| intel-xeon-gold-6212u	2.4	24 	1	165	0	0 | intel-xeon-gold-6348	2.6	28 	2	235	0	0	42.0 | ||||||
| intel-xeon-gold-6226	2.7	12 	4	125	0	0 | intel-xeon-gold-6354	3.0	18 	2	205	0	0	39.0 | ||||||
| intel-xeon-gold-6226r	2.9	16 	2	150	0	0 | intel-xeon-platinum-8351n	2.4	36 	2	225	0	0	54.0 | ||||||
| intel-xeon-gold-6230	2.1	20 	4	125	0	0 | intel-xeon-platinum-8352m	2.3	32 	2	185	0	0	0 | ||||||
| intel-xeon-gold-6230n	2.3	20 	2	125	0	0 | intel-xeon-platinum-8352s	2.2	32 	2	205	0	0	48.0 | ||||||
| intel-xeon-gold-6230r	2.1	26 	2	150	0	0 | intel-xeon-platinum-8352v	2.1	36 	2	195	0	0	54.0 | ||||||
| intel-xeon-gold-6234	3.3	8 	4	130	0	0 | intel-xeon-platinum-8352y	2.2	32 	2	205	0	0	48.0 | ||||||
| intel-xeon-gold-6238	2.1	22 	4	140	0	0 | intel-xeon-platinum-8358	2.6	32 	2	250	0	0	48.0 | ||||||
| intel-xeon-gold-6238l	2.1	22 	4	140	0	0 | intel-xeon-platinum-8358p	2.6	32 	2	240	0	0	48.0 | ||||||
| intel-xeon-gold-6238m	2.1	22 	4	140	0	0 | intel-xeon-platinum-8362	2.8	32 	2	265	0	0	48.0 | ||||||
| intel-xeon-gold-6238r	2.2	28 	2	165	0	0 | intel-xeon-platinum-8368	2.4	38 	2	270	0	0	57.0 | ||||||
| intel-xeon-gold-6240	2.6	18 	4	150	0	0 | intel-xeon-platinum-8380	2.3	40 	2	270	0	0	60.0 | ||||||
| intel-xeon-gold-6240l	2.6	18 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6240m	2.6	18 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6240r	2.4	24 	2	165	0	0 |  | ||||||
| intel-xeon-gold-6240y	2.6	18 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6242	2.8	16 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6242r	3.1	20 	2	205	0	0 |  | ||||||
| intel-xeon-gold-6244	3.6	8 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6246	3.3	12 	4	165	0	0 |  | ||||||
| intel-xeon-gold-6246r	3.4	16 	2	205	0	0 |  | ||||||
| intel-xeon-gold-6248	2.5	20 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6248r	3.0	24 	2	205	0	0 |  | ||||||
| intel-xeon-gold-6250	3.9	8 	4	185	0	0 |  | ||||||
| intel-xeon-gold-6252	2.1	24 	4	150	0	0 |  | ||||||
| intel-xeon-gold-6254	3.1	18 	4	200	0	0 |  | ||||||
| intel-xeon-gold-6258r	2.7	28 	2	205	0	0 |  | ||||||
| intel-xeon-platinum-8253	2.2	16 	8	125	0	0 |  | ||||||
| intel-xeon-platinum-8256	3.8	4 	8	105	0	0 |  | ||||||
| intel-xeon-platinum-8260	2.4	24 	8	165	0	0 |  | ||||||
| intel-xeon-platinum-8260l	2.4	24 	8	165	0	0 |  | ||||||
| intel-xeon-platinum-8260y	2.4	24 	8	165	0	0 |  | ||||||
| intel-xeon-platinum-8268	2.9	24 	8	205	0	0 |  | ||||||
| intel-xeon-platinum-8270	2.7	26 	8	205	0	0 |  | ||||||
| intel-xeon-platinum-8276	2.2	28 	8	165	0	0 |  | ||||||
| intel-xeon-platinum-8280	2.7	28 	8	205	0	0 |  | ||||||
| intel-xeon-platinum-8280l	2.7	28 	8	205	0	0 |  | ||||||
| 
 | 
 | ||||||
| intel-xeon-silver-4310	2.1	12 	2	120	0	0 | intel-xeon-bronze-3408u	1.8	8	2	125	0	0	22.5 | ||||||
| intel-xeon-silver-4314	2.4	16 	2	135	0	0 | intel-xeon-silver-4410y	2.0	12	2	150	0	0	30.0 | ||||||
| intel-xeon-silver-4316	2.3	20 	2	150	0	0 | intel-xeon-silver-4416+	2.0	20	2	165	0	0	37.5 | ||||||
| intel-xeon-gold-5315y	3.2	8 	2	140	0	0 | intel-xeon-gold-5411n	1.9	24	1	165	0	0	45.0 | ||||||
| intel-xeon-gold-5317	3.0	12 	2	150	0	0 | intel-xeon-gold-5412u	2.1	24	1	185	0	0	45.0 | ||||||
| intel-xeon-gold-5318s	2.1	24 	2	165	0	0 | intel-xeon-gold-5415+	2.9	8	2	150	0	0	22.5 | ||||||
| intel-xeon-gold-5318y	2.1	24 	2	165	0	0 | intel-xeon-gold-5416s	2.0	16	2	150	0	0	30.0 | ||||||
| intel-xeon-gold-5320	2.2	26 	2	185	0	0 | intel-xeon-gold-5418n	1.8	24	2	165	0	0	45.0 | ||||||
| intel-xeon-gold-6312u	2.4	24 	1	185	0	0 | intel-xeon-gold-5418y	2.0	24	2	185	0	0	45.0 | ||||||
| intel-xeon-gold-6314u	2.3	32 	1	205	0	0 | intel-xeon-gold-5420+	2.0	28	2	205	0	0	52.5 | ||||||
| intel-xeon-gold-6326	2.9	16 	2	185	0	0 | intel-xeon-gold-6414u	2.0	32	1	250	0	0	60.0 | ||||||
| intel-xeon-gold-6330	2.0	28 	2	205	0	0 | intel-xeon-gold-6416h	2.2	18	4	165	0	0	45.0 | ||||||
| intel-xeon-gold-6334	3.6	8 	2	165	0	0 | intel-xeon-gold-6418h	2.1	24	4	185	0	0	60.0 | ||||||
| intel-xeon-gold-6336y	2.4	24 	2	185	0	0 | intel-xeon-gold-6421n	1.8	32	1	185	0	0	60.0 | ||||||
| intel-xeon-gold-6338	2.0	32 	2	205	0	0 | intel-xeon-gold-6426y	2.5	16	2	185	0	0	37.5 | ||||||
| intel-xeon-gold-6338n	2.2	32 	2	185	0	0 | intel-xeon-gold-6430	2.1	32	2	270	0	0	60.0 | ||||||
| intel-xeon-gold-6342	2.8	24 	2	230	0	0 | intel-xeon-gold-6434	3.7	8	2	195	0	0	22.5 | ||||||
| intel-xeon-gold-6346	3.1	16 	2	205	0	0 | intel-xeon-gold-6434h	3.7	8	4	195	0	0	22.5 | ||||||
| intel-xeon-gold-6348	2.6	28 	2	235	0	0 | intel-xeon-gold-6438n	2.0	32	2	205	0	0	60.0 | ||||||
| intel-xeon-gold-6354	3.0	18 	2	205	0	0 | intel-xeon-gold-6438y+	2.0	32	2	205	0	0	60.0 | ||||||
| intel-xeon-platinum-8351n	2.4	36 	2	225	0	0 | intel-xeon-gold-6442y	2.6	24	2	225	0	0	60.0 | ||||||
| intel-xeon-platinum-8352m	2.3	32 	2	185	0	0 | intel-xeon-gold-6444y	3.6	16	2	270	0	0	45.0 | ||||||
| intel-xeon-platinum-8352s	2.2	32 	2	205	0	0 | intel-xeon-gold-6448h	2.4	32	4	250	0	0	60.0 | ||||||
| intel-xeon-platinum-8352v	2.1	36 	2	195	0	0 | intel-xeon-gold-6448y	2.1	32	2	225	0	0	60.0 | ||||||
| intel-xeon-platinum-8352y	2.2	32 	2	205	0	0 | intel-xeon-gold-6454s	2.2	32	2	270	0	0	60.0 | ||||||
| intel-xeon-platinum-8358	2.6	32 	2	250	0	0 | intel-xeon-gold-6458q	3.1	32	2	350	0	0	60.0 | ||||||
| intel-xeon-platinum-8358p	2.6	32 	2	240	0	0 | intel-xeon-platinum-8444h	2.9	16 	2	270	0	0	45.0 | ||||||
| intel-xeon-platinum-8362	2.8	32 	2	265	0	0 | intel-xeon-platinum-8452y	2.0	36 	2	300	0	0	67.5 | ||||||
| intel-xeon-platinum-8368	2.4	38 	2	270	0	0 | intel-xeon-platinum-8458p	2.7	44 	2	350	0	0	82.5 | ||||||
| intel-xeon-platinum-8380	2.3	40 	2	270	0	0 | intel-xeon-platinum-8460y+	2.0	40 	2	300	0	0	105.0 | ||||||
|  | intel-xeon-platinum-8462y+	2.8	32 	2	300	0	0	60.0 | ||||||
|  | intel-xeon-platinum-8468	2.1	48 	2	350	0	0	105.0 | ||||||
|  | intel-xeon-platinum-8468v	2.4	48 	2	330	0	0	97.5 | ||||||
|  | intel-xeon-platinum-8470	2.0	52 	2	350	0	0	105.0 | ||||||
|  | intel-xeon-platinum-8470n	1.7	52 	2	300	0	0	97.5 | ||||||
|  | intel-xeon-platinum-8470q	2.1	52 	2	350	0	0	105.0 | ||||||
|  | intel-xeon-platinum-8471n	1.8	52 	1	300	0	0	95.5 | ||||||
|  | intel-xeon-platinum-8480+	2.0	56 	2	350	0	0	105.0 | ||||||
|  | intel-xeon-platinum-8490h	1.9	60 	8	350	0	0	112.5 | ||||||
|  | intel-xeon-platinum-9462	2.7	32 	2	350	0	0	75.0 | ||||||
| 
 | 
 | ||||||
| intel-xeon-bronze-3408u	1.8	8	2	125	0	0 | amd-epyc-7262	3.2	8	2	155	0	0	0 | ||||||
| intel-xeon-silver-4410y	2.0	12	2	150	0	0 | amd-epyc-7272	2.9	12	2	120	0	0	0 | ||||||
| intel-xeon-silver-4416+	2.0	20	2	165	0	0 | amd-epyc-7282	2.8	16	2	120	0	0	0 | ||||||
| intel-xeon-gold-5411n	1.9	24	2	165	0	0 | amd-epyc-7302	3.0	16	2	155	0	0	0 | ||||||
| intel-xeon-gold-5415+	2.9	8	2	150	0	0 | amd-epyc-7352	2.3	24	2	155	0	0	0 | ||||||
| intel-xeon-gold-5416s	2.0	16	2	150	0	0 | amd-epyc-7402	2.8	24	2	180	0	0	0 | ||||||
| intel-xeon-gold-5418n	1.8	24	2	165	0	0 | amd-epyc-7452	2.35	32	2	155	0	0	0 | ||||||
| intel-xeon-gold-5418y	2.0	24	2	185	0	0 | amd-epyc-7502	2.5	32	2	180	0	0	0 | ||||||
| intel-xeon-gold-5420+	2.0	28	2	205	0	0 | amd-epyc-7542	2.9	32	2	225	0	0	0 | ||||||
| intel-xeon-gold-6414u	2.0	32	1	250	0	0 | amd-epyc-7552	2.2	48	2	200	0	0	0 | ||||||
| intel-xeon-gold-6416h	2.2	18	2	165	0	0 | amd-epyc-7642	2.3	48	2	225	0	0	0 | ||||||
| intel-xeon-gold-6418h	2.1	24	2	185	0	0 | amd-epyc-7702	2.0	64	2	200	0	0	0 | ||||||
| intel-xeon-gold-6421n	1.8	32	2	185	0	0 | amd-epyc-7742	2.25	64	2	225	0	0	0 | ||||||
| intel-xeon-gold-6426y	2.5	16	2	185	0	0 | amd-epyc-7f32	3.7	8	2	180	0	0	0 | ||||||
| intel-xeon-gold-6430	2.1	32	2	270	0	0 | amd-epyc-7f52	3.5	16	2	240	0	0	0 | ||||||
| intel-xeon-gold-6434	3.7	8	2	195	0	0 | amd-epyc-7f72	3.5	24	2	240	0	0	0 | ||||||
| intel-xeon-gold-6438n	2.0	32	2	205	0	0 | amd-epyc-7h12	2.6	64	2	280	0	0	0 | ||||||
| intel-xeon-gold-6438y+	2.0	32	2	205	0	0 |  | ||||||
| intel-xeon-gold-6442y	2.6	24	2	225	0	0 |  | ||||||
| intel-xeon-gold-6444y	3.6	16	2	270	0	0 |  | ||||||
| intel-xeon-gold-6448y	2.1	32	2	225	0	0 |  | ||||||
| intel-xeon-gold-6454s	2.2	32	2	270	0	0 |  | ||||||
| intel-xeon-gold-6458q	3.1	32	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8444h	2.9	16 	2	270	0	0 |  | ||||||
| intel-xeon-platinum-8452y	2.0	36 	2	300	0	0 |  | ||||||
| intel-xeon-platinum-8458p	2.7	44 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8458q	3.1	32 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8460y+	2.0	40 	2	300	0	0 |  | ||||||
| intel-xeon-platinum-8462y+	2.8	32 	2	300	0	0 |  | ||||||
| intel-xeon-platinum-8468	2.1	48 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8468v	2.4	48 	2	330	0	0 |  | ||||||
| intel-xeon-platinum-8470	2.0	52 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8470n	1.7	52 	2	300	0	0 |  | ||||||
| intel-xeon-platinum-8470q	2.1	52 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8480+	2.0	56 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-8490h	1.9	60 	2	350	0	0 |  | ||||||
| intel-xeon-platinum-9462	2.7	32 	2	350	0	0 |  | ||||||
| 
 | 
 | ||||||
| amd-epyc-7262	3.2	8	2	155	0	0 | amd-epyc-72f3	3.7	8	2	180	0	0	0 | ||||||
| amd-epyc-7272	2.9	12	2	120	0	0 | amd-epyc-7313	3.0	16	2	155	0	0	0 | ||||||
| amd-epyc-7282	2.8	16	2	120	0	0 | amd-epyc-7343	3.2	16	2	190	0	0	0 | ||||||
| amd-epyc-7302	3.0	16	2	155	0	0 | amd-epyc-73f3	3.5	16	2	240	0	0	0 | ||||||
| amd-epyc-7352	2.3	24	2	155	0	0 | amd-epyc-7413	2.65	24	2	180	0	0	0 | ||||||
| amd-epyc-7402	2.8	24	2	180	0	0 | amd-epyc-7443	2.85	24	2	200	0	0	0 | ||||||
| amd-epyc-7452	2.35	32	2	155	0	0 | amd-epyc-7453	2.75	28	2	225	0	0	0 | ||||||
| amd-epyc-7502	2.5	32	2	180	0	0 | amd-epyc-74f3	3.2	24	2	240	0	0	0 | ||||||
| amd-epyc-7542	2.9	32	2	225	0	0 | amd-epyc-7513	2.6	32	2	200	0	0	0 | ||||||
| amd-epyc-7552	2.2	48	2	200	0	0 | amd-epyc-7543	2.8	32	2	225	0	0	0 | ||||||
| amd-epyc-7642	2.3	48	2	225	0	0 | amd-epyc-75f3	2.95	32	2	280	0	0	0 | ||||||
| amd-epyc-7702	2.0	64	2	200	0	0 | amd-epyc-7643	2.3	48	2	225	0	0	0 | ||||||
| amd-epyc-7742	2.25	64	2	225	0	0 | amd-epyc-7663	2.0	56	2	240	0	0	0 | ||||||
| amd-epyc-7f32	3.7	8	2	180	0	0 | amd-epyc-7713	2.0	64	2	225	0	0	0 | ||||||
| amd-epyc-7f52	3.5	16	2	240	0	0 | amd-epyc-7763	2.45	64	2	280	0	0	0 | ||||||
| amd-epyc-7f72	3.5	24	2	240	0	0 |  | ||||||
| amd-epyc-7h12	2.6	64	2	280	0	0 |  | ||||||
| 
 | 
 | ||||||
| amd-epyc-72f3	3.7	8	2	180	0	0 | amd-epyc-9124	3.0	16	2	200	0	0	64 | ||||||
| amd-epyc-7313	3.0	16	2	155	0	0 | amd-epyc-9174f	4.1	16	2	320	0	0	256 | ||||||
| amd-epyc-7343	3.2	16	2	190	0	0 | amd-epyc-9224	2.5	24	2	200	0	0	64 | ||||||
| amd-epyc-73f3	3.5	16	2	240	0	0 | amd-epyc-9254	2.9	24	2	220	0	0	128 | ||||||
| amd-epyc-7413	2.65	24	2	180	0	0 | amd-epyc-9274f	4.05	24	2	320	0	0	256 | ||||||
| amd-epyc-7443	2.85	24	2	200	0	0 | amd-epyc-9334	2.7	32	2	210	0	0	128 | ||||||
| amd-epyc-7453	2.75	28	2	225	0	0 | amd-epyc-9354	3.25	32	2	280	0	0	256 | ||||||
| amd-epyc-74f3	3.2	24	2	240	0	0 | amd-epyc-9374f	3.85	32	2	320	0	0	256 | ||||||
| amd-epyc-7513	2.6	32	2	200	0	0 | amd-epyc-9454	2.75	48	2	290	0	0	256 | ||||||
| amd-epyc-7543	2.8	32	2	225	0	0 | amd-epyc-9474f	3.6	48	2	360	0	0	256 | ||||||
| amd-epyc-75f3	2.95	32	2	280	0	0 | amd-epyc-9534	2.45	64	2	280	0	0	256 | ||||||
| amd-epyc-7643	2.3	48	2	225	0	0 | amd-epyc-9554	3.1	64	2	360	0	0	256 | ||||||
| amd-epyc-7663	2.0	56	2	240	0	0 | amd-epyc-9634	2.25	84	2	290	0	0	384 | ||||||
| amd-epyc-7713	2.0	64	2	225	0	0 | amd-epyc-9654	2.4	96	2	360	0	0	384 | ||||||
| amd-epyc-7763	2.45	64	2	280	0	0 | amd-epyc-9734	2.2	112	2	340	0	0	256 | ||||||
|  | amd-epyc-9754	2.25	128	2	360	0	0	256 | ||||||
|  |  | ||||||
| 
 | 
							
								
								
									
										140
									
								
								concho/config.py
								
								
								
								
							
							
						
						
									
										140
									
								
								concho/config.py
								
								
								
								
							|  | @ -95,11 +95,12 @@ class Cpu(Item): | ||||||
|     max_cpus: int  # how many such cpus can be put on the same motherboard |     max_cpus: int  # how many such cpus can be put on the same motherboard | ||||||
|     tdp: Power  # TDP of the cpu, in Watts |     tdp: Power  # TDP of the cpu, in Watts | ||||||
|     cpumark: float  # cpu mark |     cpumark: float  # cpu mark | ||||||
|  |     l3_cache_mb: int  # level 3 cache, in MiB | ||||||
| 
 | 
 | ||||||
|     def __init__(self, proc_id: CpuId): |     def __init__(self, proc_id: CpuId): | ||||||
|         super().__init__(proc_id) |         super().__init__(proc_id) | ||||||
|         cpuTable = numpy.genfromtxt('catalogs/cpu_table.tsv', dtype=("|U32", float, int, float, float, float), names=True, delimiter='\t') |         cpuTable = numpy.genfromtxt('catalogs/cpu_table.tsv', dtype=("|U32", float, int, float, float, float, int, int), names=True, delimiter='\t') | ||||||
|         for cpu_id, clock, num_cores, max_cpus, tdp, cpumark in zip(cpuTable['id'], cpuTable['clock'], cpuTable['num_cores'], cpuTable['max_cpus'], cpuTable['tdp'], cpuTable['cpumark_1_cpu']): |         for cpu_id, clock, num_cores, max_cpus, tdp, cpumark, l3_cache_mb in zip(cpuTable['id'], cpuTable['clock'], cpuTable['num_cores'], cpuTable['max_cpus'], cpuTable['tdp'], cpuTable['cpumark_1_cpu'], cpuTable['l3_cache_mb']): | ||||||
|             # print(cpu_id) |             # print(cpu_id) | ||||||
|             if cpu_id == proc_id: |             if cpu_id == proc_id: | ||||||
|                 # print('found '+procId) |                 # print('found '+procId) | ||||||
|  | @ -110,6 +111,7 @@ class Cpu(Item): | ||||||
|         self.max_cpus = max_cpus |         self.max_cpus = max_cpus | ||||||
|         self.tdp = tdp |         self.tdp = tdp | ||||||
|         self.cpumark = cpumark |         self.cpumark = cpumark | ||||||
|  |         self.l3_cache_mb = l3_cache_mb | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def architecture(self) -> CpuArchitecture: |     def architecture(self) -> CpuArchitecture: | ||||||
|  | @ -162,34 +164,62 @@ class Cpu(Item): | ||||||
|             return 'rome' |             return 'rome' | ||||||
|         elif re.match('amd-epyc-[0-9][0-9fh][0-9f]3', proc_id): |         elif re.match('amd-epyc-[0-9][0-9fh][0-9f]3', proc_id): | ||||||
|             return 'milan' |             return 'milan' | ||||||
|  |         elif re.match('amd-epyc-8[0-6][0-9f]4', proc_id): | ||||||
|  |             return 'siena'  # zen 4c | ||||||
|  |         elif re.match('amd-epyc-9[0-6][0-9f]4', proc_id): | ||||||
|  |             return 'genoa'  # zen 4 | ||||||
|  |         elif re.match('amd-epyc-97[0-9f]4', proc_id): | ||||||
|  |             return 'bergamo'  # zen 4c | ||||||
|         else: |         else: | ||||||
|             assert False, 'unhandled processor id : %s' % proc_id |             assert False, 'unhandled processor id : %s' % proc_id | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def num_dp_flop_per_cycle(self) -> int: |     def num_dp_flop_per_cycle_per_core(self) -> int: | ||||||
|         proc_arch = self.architecture |         proc_arch = self.architecture | ||||||
|         simd_id = get_simd_id(proc_arch) |         dp_flops_per_cycle_per_core = -1 | ||||||
|         num_simd_per_core = 1 | 
 | ||||||
|  |             # from https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2 | ||||||
|  |             # Intel Core 2 and Nehalem: | ||||||
|  |             # | ||||||
|  |             #     4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication | ||||||
|  |             #     8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication | ||||||
|  |             # | ||||||
|  | 
 | ||||||
|  |         if proc_arch in ['sandy bridge', 'ivy bridge']: | ||||||
|  | 
 | ||||||
|  |             # [https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-and-others-sse2-avx-avx2-avx] | ||||||
|  |             # Intel Sandy Bridge/Ivy Bridge (AVX1): | ||||||
|  | 
 | ||||||
|  |             #     8 DP FLOPs/cycle: 4-wide AVX addition + 4-wide AVX multiplication | ||||||
|  |             #     16 SP FLOPs/cycle: 8-wide AVX addition + 8-wide AVX multiplication | ||||||
|  |             dp_flops_per_cycle_per_core = 8 | ||||||
|  | 
 | ||||||
|  |         if proc_arch in ['haswell', 'broadwell']: | ||||||
|  |             # https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-and-others-sse2-avx-avx2-avx | ||||||
|  |             # Intel Haswell/Broadwell/Skylake/Kaby Lake/Coffee/... (AVX+FMA3): | ||||||
|  | 
 | ||||||
|  |             #     16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions | ||||||
|  |             #     32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-add) instructions | ||||||
|  |             #     (Using 256-bit vector instructions can reduce max turbo clock speed on some CPUs.) | ||||||
|  |             dp_flops_per_cycle_per_core = 16 | ||||||
|  | 
 | ||||||
|         if proc_arch in ['skylake', 'cascadelake']: |         if proc_arch in ['skylake', 'cascadelake']: | ||||||
|  |             dp_flops_per_cycle_per_core = 16 | ||||||
|             # from https://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors : Xeon Platinum, Gold 61XX, and Gold 5122 have two AVX-512 FMA units per core; Xeon Gold 51XX (except 5122), Silver, and Bronze have a single AVX-512 FMA unit per core |             # from https://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors : Xeon Platinum, Gold 61XX, and Gold 5122 have two AVX-512 FMA units per core; Xeon Gold 51XX (except 5122), Silver, and Bronze have a single AVX-512 FMA unit per core | ||||||
|             if re.match('intel-xeon-gold-5122', self.uid): |             if re.match('intel-xeon-gold-5122', self.uid): | ||||||
|                 num_simd_per_core = 2 |                 dp_flops_per_cycle_per_core = 32 | ||||||
| 
 | 
 | ||||||
|             # https://en.wikichip.org/wiki/intel/xeon_gold/5222 : 'Note that this is the only processor in the Xeon Gold 52xx series with two 512b FMA units.' |             # https://en.wikichip.org/wiki/intel/xeon_gold/5222 : 'Note that this is the only processor in the Xeon Gold 52xx series with two 512b FMA units.' | ||||||
|             if re.match('intel-xeon-gold-5222', self.uid): |             if re.match('intel-xeon-gold-5222', self.uid): | ||||||
|                 num_simd_per_core = 2 |                 dp_flops_per_cycle_per_core = 32 | ||||||
| 
 | 
 | ||||||
|             if re.match('intel-xeon-gold-61[0-9][0-9]', self.uid): |             if re.match('intel-xeon-gold-61[0-9][0-9]', self.uid): | ||||||
|                 num_simd_per_core = 2 |                 dp_flops_per_cycle_per_core = 32 | ||||||
|             if re.match('intel-xeon-gold-62[0-9][0-9]', self.uid): |             if re.match('intel-xeon-gold-62[0-9][0-9]', self.uid): | ||||||
|                 num_simd_per_core = 2 |                 dp_flops_per_cycle_per_core = 32 | ||||||
|             if re.match('intel-xeon-gold-63[0-9][0-9]', self.uid): |             if re.match('intel-xeon-gold-63[0-9][0-9]', self.uid): | ||||||
|                 num_simd_per_core = 2 |                 dp_flops_per_cycle_per_core = 32 | ||||||
|         # from https://www.microway.com/knowledge-center-articles/detailed-specifications-of-the-amd-epyc-rome-cpus/: |         # flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2: | ||||||
|         # - Full support for 256-bit AVX2 instructions with two 256-bit FMA units per CPU core. The previous “Naples” architecture split 256-bit instructions into two separate 128-bit operations |  | ||||||
|         # - Up to 16 double-precision FLOPS per cycle per core |  | ||||||
|         # - Double-precision floating point multiplies complete in 3 cycles (down from 4) |  | ||||||
|         # note : zen2 rome core has 2 256 bits fma units per core, which corresponds to avx2 technology according to https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2: |  | ||||||
|         # Intel Haswell/Broadwell/Skylake/Kaby Lake/Coffee/... (AVX+FMA3): |         # Intel Haswell/Broadwell/Skylake/Kaby Lake/Coffee/... (AVX+FMA3): | ||||||
|         # - 16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions |         # - 16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions | ||||||
|         # - 32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-add) instructions |         # - 32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-add) instructions | ||||||
|  | @ -202,18 +232,41 @@ class Cpu(Item): | ||||||
|             # > AVX-512 instructions (up to 16 double-precision FLOPS per cycle per AVX-512 FMA unit) |             # > AVX-512 instructions (up to 16 double-precision FLOPS per cycle per AVX-512 FMA unit) | ||||||
|             # > Two AVX-512 FMA units per CPU core (available in all Ice Lake-SP CPU SKUs) |             # > Two AVX-512 FMA units per CPU core (available in all Ice Lake-SP CPU SKUs) | ||||||
|             # https://www.intel.com/content/www/us/en/products/sku/215269/intel-xeon-silver-4314-processor-24m-cache-2-40-ghz/specifications.html shows that even xeon silver 4314 has 2 AVX 512 fma units |             # https://www.intel.com/content/www/us/en/products/sku/215269/intel-xeon-silver-4314-processor-24m-cache-2-40-ghz/specifications.html shows that even xeon silver 4314 has 2 AVX 512 fma units | ||||||
|             num_simd_per_core = 2 |             dp_flops_per_cycle_per_core = 32 | ||||||
| 
 | 
 | ||||||
|         if proc_arch in ['sapphire rapids']: |         if proc_arch in ['sapphire rapids']: | ||||||
|             num_simd_per_core = 2 |             dp_flops_per_cycle_per_core = 32 | ||||||
|             # cpus_may2023_v3.pdf |             # cpus_may2023_v3.pdf | ||||||
| 
 | 
 | ||||||
|         if proc_arch == 'rome': |         if proc_arch == 'rome':  # zen2 | ||||||
|             num_simd_per_core = 1 |             # from https://www.microway.com/knowledge-center-articles/detailed-specifications-of-the-amd-epyc-rome-cpus/: | ||||||
|  |             # - Full support for 256-bit AVX2 instructions with two 256-bit FMA units per CPU core. The previous “Naples” architecture split 256-bit instructions into two separate 128-bit operations | ||||||
|  |             # - Up to 16 double-precision FLOPS per cycle per core | ||||||
|  |             # - Double-precision floating point multiplies complete in 3 cycles (down from 4) | ||||||
|  |             # note : zen2 rome core has 2 256 bits fma units per core, which corresponds to avx2 technology according to https://stackoverflow.com/questions/15655835/ | ||||||
|  |             # [https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-and-others-sse2-avx-avx2-avx] | ||||||
|  |             # AMD Zen 2 and later: 2 FMA/MUL units and two ADD units on separate ports | ||||||
|  |             #     24 DP FLOPs/cycle: 4-wide FMA + 4-wide ADD on 256-bit execution units | ||||||
|  |             #     48 SP FLOPs/cycle: 8-wide FMA + 8-wide ADD | ||||||
|  |             #     with only FMAs like for a matmul, 16 DP / 32 SP FLOPs/cycle using 256-bit instructions (or 512-bit on Zen 4 which has single-uop but double-pumped 512-bit instructions.) | ||||||
|  |             # https://www.dell.com/support/kbdoc/fr-fr/000137696/amd-rome-is-it-for-real-architecture-and-initial-hpc-performance | ||||||
|  |             # The Rome micro-architecture can retire 16 DP FLOP/cycle, double that of Naples which was 8 FLOPS/cycle | ||||||
|  | 
 | ||||||
|  |             dp_flops_per_cycle_per_core = 16 | ||||||
|  | 
 | ||||||
|  |         if proc_arch == 'milan':  # zen3 | ||||||
|  |             # [https://www.nas.nasa.gov/hecc/support/kb/amd-milan-processors_688.html] | ||||||
|  |             # > Each Milan core has two 256-bit Fused Multiply-Add (FMA) units and can deliver up to 16 double-precision floating point operations (flops) per cycle. Therefore, the peak double-precision flops per node is: 128 cores x 2.45 GHz x 16 = 5.02 teraflops (TF). | ||||||
|  |             dp_flops_per_cycle_per_core = 16 | ||||||
|  | 
 | ||||||
|  |         if proc_arch in ['genoa', 'bergamo']:  # zen4 | ||||||
|  |             # [/home/graffy/work/concho/cpus_may2023_v3.pdf]] | ||||||
|  |             # AMD has two AVX-2 256 bit units, which can do one coupled AVX-512 FMA instruction, which puts the FLOPS per cycle to 16 | ||||||
|  |             dp_flops_per_cycle_per_core = 16 | ||||||
| 
 | 
 | ||||||
|         dp_flops_per_cycle = num_simd_per_core * simd_id_to_dp_flops_per_cycle(simd_id) |  | ||||||
|         # print(self.uid, dp_flops_per_cycle) |         # print(self.uid, dp_flops_per_cycle) | ||||||
|         return dp_flops_per_cycle |         assert dp_flops_per_cycle_per_core > 0, f'failed to get the number of dp floating operations per cycle per core of {proc_arch}' | ||||||
|  |         return dp_flops_per_cycle_per_core | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def num_ram_channels(self) -> int: |     def num_ram_channels(self) -> int: | ||||||
|  | @ -224,7 +277,10 @@ class Cpu(Item): | ||||||
|             'icelake': 8, |             'icelake': 8, | ||||||
|             'sapphire rapids': 8, |             'sapphire rapids': 8, | ||||||
|             'rome': 8, |             'rome': 8, | ||||||
|             'milan': 8 |             'milan': 8, | ||||||
|  |             'siena': 6, | ||||||
|  |             'genoa': 12, | ||||||
|  |             'bergamo': 12 | ||||||
|         }[self.architecture] |         }[self.architecture] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -248,39 +304,6 @@ def get_proc_arch_transistor_size(proc_id: CpuId) -> TransistorSize: | ||||||
|     }[get_proc_architecture(proc_id)] |     }[get_proc_architecture(proc_id)] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def simd_id_to_dp_flops_per_cycle(simd_id: SimdId) -> int: |  | ||||||
|     """ |  | ||||||
|     :param str simd_id: eg 'avx2' |  | ||||||
| 
 |  | ||||||
|     """ |  | ||||||
|     # from https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2 |  | ||||||
|     # Intel Core 2 and Nehalem: |  | ||||||
|     # |  | ||||||
|     #     4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication |  | ||||||
|     #     8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication |  | ||||||
|     # |  | ||||||
|     # Intel Sandy Bridge/Ivy Bridge: |  | ||||||
|     # |  | ||||||
|     #     8 DP FLOPs/cycle: 4-wide AVX addition + 4-wide AVX multiplication |  | ||||||
|     #     16 SP FLOPs/cycle: 8-wide AVX addition + 8-wide AVX multiplication |  | ||||||
|     # |  | ||||||
|     # Intel Haswell/Broadwell/Skylake/Kaby Lake: |  | ||||||
|     # |  | ||||||
|     #     16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions |  | ||||||
|     #     32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-add) instructions |  | ||||||
| 
 |  | ||||||
|     # https://www.dell.com/support/kbdoc/fr-fr/000137696/amd-rome-is-it-for-real-architecture-and-initial-hpc-performance |  | ||||||
|     # The Rome micro-architecture can retire 16 DP FLOP/cycle, double that of Naples which was 8 FLOPS/cycle |  | ||||||
| 
 |  | ||||||
|     return { |  | ||||||
|         'sse4.1': 4, |  | ||||||
|         'sse4.2': 4, |  | ||||||
|         'avx': 8, |  | ||||||
|         'avx2': 16, |  | ||||||
|         'avx-512': 16, |  | ||||||
|     }[simd_id] |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def get_simd_id(proc_arch: CpuArchitecture) -> SimdId: | def get_simd_id(proc_arch: CpuArchitecture) -> SimdId: | ||||||
|     """ |     """ | ||||||
|         :param str proc_arch: eg 'broadwell' |         :param str proc_arch: eg 'broadwell' | ||||||
|  | @ -306,6 +329,9 @@ def get_simd_id(proc_arch: CpuArchitecture) -> SimdId: | ||||||
|         # - Double-precision floating point multiplies complete in 3 cycles (down from 4) |         # - Double-precision floating point multiplies complete in 3 cycles (down from 4) | ||||||
|         'rome': 'avx2', |         'rome': 'avx2', | ||||||
|         'milan': 'avx2', |         'milan': 'avx2', | ||||||
|  |         'siena': 'avx2', | ||||||
|  |         'genoa': 'avx2', | ||||||
|  |         'bergamo': 'avx2', | ||||||
|     }[proc_arch] |     }[proc_arch] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -481,7 +507,7 @@ class Config(): | ||||||
|         return power_consumption |         return power_consumption | ||||||
| 
 | 
 | ||||||
|     def get_flops(self) -> float: |     def get_flops(self) -> float: | ||||||
|         # print('%d servers * %d cpu %s * %d cores @ %f (%d flops/cycle)' % (self.num_servers, self.num_cpu_per_server, str(self.cpu.uid), self.cpu.num_cores, self.cpu.clock, self.cpu.num_dp_flop_per_cycle)) |         # print('%d servers * %d cpu %s * %d cores @ %f (%d flops/cycle)' % (self.num_servers, self.num_cpu_per_server, str(self.cpu.uid), self.cpu.num_cores, self.cpu.clock, self.cpu.num_dp_flop_per_cycle_per_core)) | ||||||
|         dynamic_frequency_scaling = 1.0  # https://en.wikichip.org/wiki/intel/frequency_behavior |         dynamic_frequency_scaling = 1.0  # https://en.wikichip.org/wiki/intel/frequency_behavior | ||||||
|         # https://www.nas.nasa.gov/hecc/support/kb/cascade-lake-processors_579.html |         # https://www.nas.nasa.gov/hecc/support/kb/cascade-lake-processors_579.html | ||||||
|         # The Intel Cascade Lake processor incorporated into the Aitken cluster is the 20-core Xeon Gold 6248 model. Its base clock speed is 2.5 GHz for non-AVX, 1.9 GHz for AVX2, and 1.6 GHz for AVX-512. |         # The Intel Cascade Lake processor incorporated into the Aitken cluster is the 20-core Xeon Gold 6248 model. Its base clock speed is 2.5 GHz for non-AVX, 1.9 GHz for AVX2, and 1.6 GHz for AVX-512. | ||||||
|  | @ -496,7 +522,7 @@ class Config(): | ||||||
|             elif self.cpu.architecture == 'saphhire rapids': |             elif self.cpu.architecture == 'saphhire rapids': | ||||||
|                 dynamic_frequency_scaling = 1.0  # sapphire rapids seem to get closer to theoretical speed, see /home/graffy/work/concho/cpus_may2023_v3.pdf |                 dynamic_frequency_scaling = 1.0  # sapphire rapids seem to get closer to theoretical speed, see /home/graffy/work/concho/cpus_may2023_v3.pdf | ||||||
|         cpu_clock_when_computing = self.cpu.clock * dynamic_frequency_scaling |         cpu_clock_when_computing = self.cpu.clock * dynamic_frequency_scaling | ||||||
|         flops = self.cpu.num_dp_flop_per_cycle * cpu_clock_when_computing * 1.e9 * self.cpu.num_cores * self.num_cpu_per_server * self.num_servers |         flops = self.cpu.num_dp_flop_per_cycle_per_core * cpu_clock_when_computing * 1.e9 * self.cpu.num_cores * self.num_cpu_per_server * self.num_servers | ||||||
|         return flops |         return flops | ||||||
| 
 | 
 | ||||||
|     def _init_dimm_slots(self): |     def _init_dimm_slots(self): | ||||||
|  |  | ||||||
|  | @ -260,9 +260,16 @@ class HpeV2ConfiguratorParser(IHtmlConfiguratorParser): | ||||||
|         ''' |         ''' | ||||||
|         modules_element = root_element.xpath(self.get_xpath_filter('root_to_modules_element'))[0] |         modules_element = root_element.xpath(self.get_xpath_filter('root_to_modules_element'))[0] | ||||||
|         # print(modules_element) |         # print(modules_element) | ||||||
|         module_label = self.get_module_label(module_id)  # eg ProcessorSection_AdditionalProcessorsChoice |         if module_id == 'additional_cpus': | ||||||
|         print(f'module label: {module_label}') |             module_labels = ['ProcessorSection_AdditionalProcessorsChoice', 'ProcessorSection_ProcessorChoice'] | ||||||
|         module_root = modules_element.xpath(f".//div[@id='{module_label}']")[0] |         else: | ||||||
|  |             module_labels = [self.get_module_label(module_id)] | ||||||
|  |         module_root = None | ||||||
|  |         for module_label in module_labels: | ||||||
|  |             module_roots = modules_element.xpath(f".//div[@id='{module_label}']") | ||||||
|  |             if len(module_roots) > 0: | ||||||
|  |                 module_root = modules_element.xpath(f".//div[@id='{module_label}']")[0] | ||||||
|  |                 break | ||||||
|         return module_root |         return module_root | ||||||
| 
 | 
 | ||||||
|     def _parse_module_html_table(self, html_root: HtmlElement, module_id: str) -> pd.DataFrame: |     def _parse_module_html_table(self, html_root: HtmlElement, module_id: str) -> pd.DataFrame: | ||||||
|  | @ -285,10 +292,15 @@ class HpeV2ConfiguratorParser(IHtmlConfiguratorParser): | ||||||
|             label = row['description'] |             label = row['description'] | ||||||
|             cpu_price = parse_price(row['price']) |             cpu_price = parse_price(row['price']) | ||||||
|             match = re.match(r'^ *Intel Xeon-(?P<cpu_class>Bronze|Silver|Gold|Platinum) (?P<cpu_number>[0-9][0-9][0-9][0-9][HNPQRSLUVY]?[+]?).*', label) |             match = re.match(r'^ *Intel Xeon-(?P<cpu_class>Bronze|Silver|Gold|Platinum) (?P<cpu_number>[0-9][0-9][0-9][0-9][HNPQRSLUVY]?[+]?).*', label) | ||||||
|             assert match, 'unhandled label : %s' % label |             if match: | ||||||
|             # print(match['cpu_class'], match['cpu_number']) |                 # print(match['cpu_class'], match['cpu_number']) | ||||||
|             cpu_class = match['cpu_class'].lower() |                 cpu_class = match['cpu_class'].lower() | ||||||
|             cpu_id = "intel-xeon-%s-%s" % (cpu_class, match['cpu_number'].lower()) |                 cpu_id = "intel-xeon-%s-%s" % (cpu_class, match['cpu_number'].lower()) | ||||||
|  |             else: | ||||||
|  |                 # AMD EPYC 9174F 4.1GHz 16-core 320W Processor for HPE | ||||||
|  |                 match = re.match(r'^ *AMD EPYC *(?P<cpu_number>[0-9][0-9][0-9][0-9][F]?) .*', label) | ||||||
|  |                 assert match, 'unhandled label : %s' % label | ||||||
|  |                 cpu_id = f"amd-epyc-{match['cpu_number'].lower()}" | ||||||
|             cpu = Cpu(cpu_id) |             cpu = Cpu(cpu_id) | ||||||
|             option = Option(cpu, cpu_price) |             option = Option(cpu, cpu_price) | ||||||
|             for selected_item in range(Quantity(row['quantity']).num_selected): |             for selected_item in range(Quantity(row['quantity']).num_selected): | ||||||
|  | @ -328,7 +340,7 @@ class HpeV2ConfiguratorParser(IHtmlConfiguratorParser): | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def _parse_base_config_info(html_root: HtmlElement) -> Tuple[str, Price]: |     def _parse_base_config_info(html_root: HtmlElement) -> Tuple[str, Price]: | ||||||
|         prod_titles_grp_el = html_root.xpath(r".//div[@class='prod-titles-grp']")[0] |         prod_titles_grp_el = html_root.xpath(r".//div[@class='prod-titles-grp']")[0] | ||||||
|         assert prod_titles_grp_el |         assert prod_titles_grp_el is not None | ||||||
| 
 | 
 | ||||||
|         #                         <div class="prod-titles-grp"> |         #                         <div class="prod-titles-grp"> | ||||||
|         #                             <span id="main_title" title="DL380 Gen11 (Cat2 Conf16)" class="product-title pull-left">DL380 Gen11 (Cat2 Conf16)</span> |         #                             <span id="main_title" title="DL380 Gen11 (Cat2 Conf16)" class="product-title pull-left">DL380 Gen11 (Cat2 Conf16)</span> | ||||||
|  | @ -336,8 +348,9 @@ class HpeV2ConfiguratorParser(IHtmlConfiguratorParser): | ||||||
|         #                         </div> |         #                         </div> | ||||||
|         product_subtitle = prod_titles_grp_el.xpath(r".//span[@class='product_subtitle']")[0].text.replace('\n', '').replace('\t', '')  # eg HPE ProLiant DL380 Gen11 8SFF NC Configure-to-order Server |         product_subtitle = prod_titles_grp_el.xpath(r".//span[@class='product_subtitle']")[0].text.replace('\n', '').replace('\t', '')  # eg HPE ProLiant DL380 Gen11 8SFF NC Configure-to-order Server | ||||||
|         # print(product_subtitle) |         # print(product_subtitle) | ||||||
|         match = re.match(r'^HPE ProLiant DL(?P<chassis_number>[3][68][05]) *Gen11 *8SFF *NC *Configure-to-order *Server$', product_subtitle) |         #match = re.match(r'^HPE ProLiant DL(?P<chassis_number>[3][68][05]) *Gen11 *8SFF *NC *Configure-to-order *Server *$', product_subtitle) | ||||||
|         assert match |         match = re.match(r'^HPE ProLiant DL(?P<chassis_number>[3][68][05]) *Gen11 *8SFF.*$', product_subtitle) | ||||||
|  |         assert match, f'unrecognized chassis description: "{product_subtitle}"' | ||||||
|         chassis_number = match['chassis_number'] |         chassis_number = match['chassis_number'] | ||||||
|         # configurator.base_config = self._parse_base_config() |         # configurator.base_config = self._parse_base_config() | ||||||
|         chassis_id = f"hpe-proliant-dl{chassis_number}-gen11" |         chassis_id = f"hpe-proliant-dl{chassis_number}-gen11" | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| from typing import List | from typing import List, Optional | ||||||
| from abc import abstractmethod | from abc import abstractmethod | ||||||
| import numpy | import numpy | ||||||
| # import pylab | # import pylab | ||||||
|  | @ -11,8 +11,9 @@ import hashlib | ||||||
| # from string import ascii_lowercase | # from string import ascii_lowercase | ||||||
| # from concho.config import Configurator | # from concho.config import Configurator | ||||||
| # from concho.config import Config | # from concho.config import Config | ||||||
| from concho.config import Cpu, MemSize, Configurator | from concho.config import Cpu, MemSize, Configurator, Config | ||||||
| # from concho import dell | # from concho import dell | ||||||
|  | from pathlib import Path | ||||||
| 
 | 
 | ||||||
| markerTypes = [',', '+', '.', '^', 'v', '<', '>', 'o', '*', '1', '2', '3', '4', '8', 's', 'p', 'h', 'H', 'x', 'X', 'D', 'd', '|', '_'] | markerTypes = [',', '+', '.', '^', 'v', '<', '>', 'o', '*', '1', '2', '3', '4', '8', 's', 'p', 'h', 'H', 'x', 'X', 'D', 'd', '|', '_'] | ||||||
| # for c in ascii_lowercase: | # for c in ascii_lowercase: | ||||||
|  | @ -121,10 +122,11 @@ class ConfigFlopsPerEuro(ConfigAxisDef): | ||||||
|         return item_total_num_ops / itemTotalCost |         return item_total_num_ops / itemTotalCost | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def plot_configs(configs, xaxis_def, yaxis_def, plot_title): | def plot_configs(configs: List[Config], xaxis_def: ConfigAxisDef, yaxis_def: ConfigAxisDef, plot_title: str, figure_file_path: Optional[Path] = None): | ||||||
|     """ |     """ | ||||||
|     Args: |     Args: | ||||||
|         configs (list(Config)): the tist of configurations to plot |         configs: the list of configurations to plot | ||||||
|  |         figure_file_path: eg './figures/hpe_bpu11.pdf' if None, the figure is displayed on the screen instead of being saved in a file | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     def GHzToMHz(frequency): |     def GHzToMHz(frequency): | ||||||
|  | @ -143,8 +145,11 @@ def plot_configs(configs, xaxis_def, yaxis_def, plot_title): | ||||||
|             'cascadelake': 0.8, |             'cascadelake': 0.8, | ||||||
|             'icelake': 0.9, |             'icelake': 0.9, | ||||||
|             'sapphire rapids': 1.0, |             'sapphire rapids': 1.0, | ||||||
|             'rome': 0.8, |             'rome': 0.2, | ||||||
|             'milan': 1.0, |             'milan': 0.4, | ||||||
|  |             'siena': 1.0, | ||||||
|  |             'genoa': 1.0, | ||||||
|  |             'bergamo': 1.0, | ||||||
|         }[Cpu(proc_id).architecture] |         }[Cpu(proc_id).architecture] | ||||||
|         #         if model == 'r620': |         #         if model == 'r620': | ||||||
|         #             color = 'r' |         #             color = 'r' | ||||||
|  | @ -174,7 +179,8 @@ def plot_configs(configs, xaxis_def, yaxis_def, plot_title): | ||||||
|             'hpe-proliant-dl360-gen10+': 0.55, |             'hpe-proliant-dl360-gen10+': 0.55, | ||||||
|             'hpe-proliant-dl385-gen10': 0.0, |             'hpe-proliant-dl385-gen10': 0.0, | ||||||
|             'hpe-proliant-dl385-gen10+': 0.0, |             'hpe-proliant-dl385-gen10+': 0.0, | ||||||
|             'hpe-proliant-dl380-gen11': 0.1, |             'hpe-proliant-dl365-gen11': 0.0, | ||||||
|  |             'hpe-proliant-dl380-gen11': 0.6, | ||||||
|         }[model] |         }[model] | ||||||
|         value = 0.9 |         value = 0.9 | ||||||
|         return matplotlib.colors.hsv_to_rgb((hue, saturation, value)) |         return matplotlib.colors.hsv_to_rgb((hue, saturation, value)) | ||||||
|  | @ -223,11 +229,13 @@ def plot_configs(configs, xaxis_def, yaxis_def, plot_title): | ||||||
|     plt.grid(visible=True, which='minor', color='b', linestyle='-', linewidth=0.2) |     plt.grid(visible=True, which='minor', color='b', linestyle='-', linewidth=0.2) | ||||||
|     plt.legend(bbox_to_anchor=(1.1, 1.1), ncol=2) |     plt.legend(bbox_to_anchor=(1.1, 1.1), ncol=2) | ||||||
|     plt.draw() |     plt.draw() | ||||||
| 
 |     if figure_file_path: | ||||||
|     plt.show() |         plt.savefig(figure_file_path) | ||||||
|  |     else: | ||||||
|  |         plt.show() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def plot_configurators(configurators: List[Configurator], ram_per_core: MemSize, xaxis_def, yaxis_def, plot_title, config_filter=lambda config: True): | def plot_configurators(configurators: List[Configurator], ram_per_core: MemSize, xaxis_def: ConfigAxisDef, yaxis_def: ConfigAxisDef, plot_title: str, config_filter=lambda config: True, figure_file_path: Optional[Path] = None): | ||||||
|     configs = [] |     configs = [] | ||||||
|     for configurator in configurators: |     for configurator in configurators: | ||||||
|         for cpu in configurator.get_cpu_options(): |         for cpu in configurator.get_cpu_options(): | ||||||
|  | @ -238,4 +246,4 @@ def plot_configurators(configurators: List[Configurator], ram_per_core: MemSize, | ||||||
|             if config_filter(config): |             if config_filter(config): | ||||||
|                 configs.append(config) |                 configs.append(config) | ||||||
| 
 | 
 | ||||||
|     plot_configs(configs, xaxis_def=xaxis_def, yaxis_def=yaxis_def, plot_title=plot_title) |     plot_configs(configs, xaxis_def=xaxis_def, yaxis_def=yaxis_def, plot_title=plot_title, figure_file_path=figure_file_path) | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ from concho.hpe import HpeConfiguratorParser, HpeCpuChoiceConfiguratorParser | ||||||
| from concho.hpev2 import HpeV2ConfiguratorParser | from concho.hpev2 import HpeV2ConfiguratorParser | ||||||
| from concho.procs_chooser import plot_configurators | from concho.procs_chooser import plot_configurators | ||||||
| from concho.procs_chooser import ConfigPrice | from concho.procs_chooser import ConfigPrice | ||||||
| # from concho.procs_chooser import ConfigFlops | from concho.procs_chooser import ConfigFlops | ||||||
| from concho.procs_chooser import ConfigFlopsPerEuro | from concho.procs_chooser import ConfigFlopsPerEuro | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -92,15 +92,16 @@ def test_ur1_presents_2023_configs(): | ||||||
| 
 | 
 | ||||||
| def test_hpe_bpu11_configs(): | def test_hpe_bpu11_configs(): | ||||||
|     configurators = [ |     configurators = [ | ||||||
|         # HtmlConfigurator('20210407 - Cat2 Conf4 PowerEdge R640 - Dell.html', DellConfiguratorParser2021()), |  | ||||||
|         HtmlConfigurator(Path('catalogs/hpev2/20250314-cat2-conf16-hpe-dl380-gen11.html'), HpeV2ConfiguratorParser()), |         HtmlConfigurator(Path('catalogs/hpev2/20250314-cat2-conf16-hpe-dl380-gen11.html'), HpeV2ConfiguratorParser()), | ||||||
|  |         HtmlConfigurator(Path('catalogs/hpev2/20250314-cat2-conf19-hpe-dl365-gen11.html'), HpeV2ConfiguratorParser()), | ||||||
|     ] |     ] | ||||||
| 
 | 
 | ||||||
|     def config_filter(config): |     def config_filter(config): | ||||||
|         return True  # config.get_price() < 40000.0 |         return True  # config.get_price() < 40000.0 | ||||||
| 
 | 
 | ||||||
|     plot_configurators(configurators=configurators, ram_per_core=4.0e9, xaxis_def=ConfigPrice(), yaxis_def=ConfigFlopsPerEuro(), plot_title='physmol/ts credit 2023 configs', config_filter=config_filter) |     plot_configurators(configurators=configurators, ram_per_core=4.0e9, xaxis_def=ConfigPrice(), yaxis_def=ConfigFlopsPerEuro(), plot_title='physmol/dbossion ais configs', config_filter=config_filter, figure_file_path='./hpe-2025-03-14.pdf') | ||||||
| 
 | 
 | ||||||
|  |     # plot_configurators(configurators=configurators, ram_per_core=4.0e9, xaxis_def=ConfigPrice(), yaxis_def=ConfigFlops(), plot_title='physmol/dbossion ais configs', config_filter=config_filter) | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     test_hpe_bpu11_configs() |     test_hpe_bpu11_configs() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue