+ Le lien de configuration sur lequel vous avez cliqué a expiré. Les options de configuration par défaut s’affichent.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ View orienté vers la gauche Serveur au format rack PowerEdge R760xa
+
+
+
+
+
+
+
+ View Orienté vers l’avant Serveur au format rack PowerEdge R760xa
+
+
+
+
+
+
+
+ View orienté vers la droite Serveur au format rack PowerEdge R760xa
+
+
+
+
+
+
+
+ View arrière Serveur au format rack PowerEdge R760xa
+
+
+
+
+
+
+
+ View Serveur au format rack PowerEdge R760xa
+
+
+
+
+
Lire le code QR
+
+
Voir le produit en réalité augmentée
+
Découvrez le système en réalité augmentée et son intégration dans votre espace.
+
*Actuellement pris en charge sur l’iPhone avec iOS 12+ et Android 8.0+ avec ARCore 1.9
+
+
+
+
+
+
+
+
+
+
+ 1 / 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cat3 Conf 3-2-01 : Poweredge R760xa
+
+
+
+
+
Puissance et évolutivité pour les charges applicatives basées sur processeur graphique
+
Le serveur Dell PowerEdge R760xa est
+un puissant serveur à refroidissement par air conçu pour prendre en
+charge un large éventail de charges applicatives.
+ Aucun déploiement sur site : installation du client requise
+
+
Inclus dans le prix
+
+
+
+
+
+
+
+
+
+
+ Le prix unitaire final de certaines options peut varier en fonction de la quantité.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Cat3 Conf 3-2-01 : Poweredge R760xa
+
+
+
+
+
+
+
+
+
+ Prix Dell
+
+ 4 011,00 €
+
+
+
+
+
+
+
+
+
+
+ Les sélections peuvent entraîner des mises à jour
+supplémentaires à la configuration initiale, ce qui peut avoir un impact
+ sur le prix total. Cliquez sur Montrer les modifications sous le prix
+pour afficher les changements pris en compte.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Expédié sous 2 - 3 Jours ouvrés
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Code de commande rcrc1809648-8556813
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Pilotes, manuels et support
+
+
+
+
+
+
+
Support Dell
+
Pilotes, guides, outils de diagnostic, pièces de rechange. Le support technique Dell est là pour vous aider.
Dell
+ utilise différents types de cookies pour optimiser votre expérience et
+activer certaines fonctionnalités du site Web. Des cookies tiers sont
+également utilisés aux fins suivantes : améliorer votre expérience
+de navigation globale, établir une connexion avec vos réseaux sociaux et
+ diffuser des publicités en fonction de vos intérêts. Cliquez sur les
+catégories ci-dessous pour en savoir plus et ajuster les paramètres. Ils
+ s’appliqueront à l’appareil que vous êtes en train d’utiliser. Vous
+pouvez accéder à cet outil sur d’autres appareils afin de personnaliser
+vos paramètres, et l’utiliser à tout moment depuis n’importe quel
+appareil afin de désactiver certains cookies. Notez toutefois que le
+blocage de certains cookies peut affecter votre expérience de navigation
+ et les services ou fonctionnalités que nous proposons. Pour en savoir
+plus sur notre utilisation des cookies, consultez notre Politique sur
+l’utilisation des cookies.
+ Politique De Cookies
Gérer les préférences de consentement
Essentiel
Toujours actif
Ces
+ cookies sont essentiels pour permettre aux utilisateurs de se déplacer
+sur notre site Web et leur donner accès à des fonctionnalités telles que
+ votre profil et vos achats, vos informations de connexion et d'autres
+zones du site Web. Ces cookies sont nécessaires pour permettre aux
+fonctionnalités de base de ce site de fonctionner, telles que la
+fourniture d'une connexion sécurisée, le chargement d'images ou la
+sélection de vos préférences cookie. Cette catégorie de cookies ne peut
+pas être désactivée.
Marketing
Les
+ cookies marketing sont utilisés pour comprendre le comportement des
+utilisateurs sur nos sites Web. Ces cookies sont également utilisés pour
+ diffuser des publicités plus pertinentes par rapport à vos intérêts.
+Nous pouvons partager ces informations avec des plateformes
+publicitaires pour nous aider à afficher les messages les plus
+pertinents pour vous. Ces cookies peuvent également stocker des
+informations sur le comportement des utilisateurs obtenues grâce à leurs
+ habitudes de navigation, ce qui nous permet de développer un profil
+spécifique et d'afficher des publicités adaptées à votre profil.
Uncategorized
Toujours inactif
Cookies that are not categorized.
Statistique
Les
+ cookies statistiques nous aident à comprendre comment les visiteurs
+interagissent avec notre site Web en collectant et en communiquant des
+informations. Toutes les informations collectées au moyen de ce type de
+cookies sont utilisées pour mesurer l'activité de tout site Web,
+application ou plate-forme, dans le but d'apporter des améliorations en
+fonction de l'analyse des données concernant l'utilisation du service
+par les utilisateurs.
Liste des cookies
label
ConsentLeg.Interest
label
label
label
\ No newline at end of file
diff --git a/concho/config.py b/concho/config.py
index d2bd4e9..9b8eaf2 100644
--- a/concho/config.py
+++ b/concho/config.py
@@ -129,6 +129,12 @@ class Cpu(Item):
return 'coffeelake'
elif re.match('intel-xeon-performance-[0-9][57][0-9][0-9]', proc_id):
return 'granite rapids'
+ elif re.match('intel-xeon-silver-[0-9][5][0-9][0-9]', proc_id):
+ return 'emerald rapids'
+ elif re.match('intel-xeon-gold-[0-9][5][0-9][0-9]', proc_id):
+ return 'emerald rapids'
+ elif re.match('intel-xeon-platinum-[0-9][5][0-9][0-9]', proc_id):
+ return 'emerald rapids'
elif re.match('intel-xeon-bronze-[0-9]4[0-9][0-9]', proc_id):
return 'sapphire rapids'
elif re.match('intel-xeon-silver-[0-9]4[0-9][0-9]', proc_id):
@@ -251,6 +257,9 @@ class Cpu(Item):
dp_flops_per_cycle_per_core = 32
# cpus_may2023_v3.pdf
+ if proc_arch in ['emerald rapids']:
+ dp_flops_per_cycle_per_core = 32 # just a guess
+
if proc_arch in ['granite rapids']:
dp_flops_per_cycle_per_core = 32 # just a guess, I still don't know if there were some changes compared to sapphire rapids
@@ -301,6 +310,7 @@ class Cpu(Item):
'cascadelake': 6,
'icelake': 8,
'sapphire rapids': 8,
+ 'emerald rapids': 8,
'granite rapids': 8,
'rome': 8,
'milan': 8,
@@ -349,6 +359,7 @@ def get_simd_id(proc_arch: CpuArchitecture) -> SimdId:
'cascadelake': 'avx-512',
'icelake': 'avx-512',
'sapphire rapids': 'avx-512',
+ 'emerald rapids': 'avx-512',
'granite rapids': 'avx-512',
'coffeelake': 'avx2',
# from https://www.microway.com/knowledge-center-articles/detailed-specifications-of-the-amd-epyc-rome-cpus/:
diff --git a/concho/dell.py b/concho/dell.py
index 63c8bd2..02dbae9 100644
--- a/concho/dell.py
+++ b/concho/dell.py
@@ -1,4 +1,4 @@
-from typing import List
+from typing import List, Optional
from pathlib import Path
from concho.config import TableBasedConfigurator
from concho.config import Configurator
@@ -417,7 +417,8 @@ class DellConfiguratorParser(IHtmlConfiguratorParser):
assert False, 'failed to find module "%s"' % section_label
@abstractmethod
- def price_str_as_float(self, price_as_str):
+ def price_str_as_float(self, price_as_str) -> Optional[Price]:
+ '''return None is the price is not available for some reason (eg (Plus disponible))'''
assert False
@abstractmethod
@@ -483,7 +484,8 @@ class DellConfiguratorParser(IHtmlConfiguratorParser):
# examples from dell 20/10/2025:
# Processeur Intel® Xeon® 6 Performance 6507P 3,5 GHz, 8C/16T, 24 GT/s, 48 Mo de cache, Turbo (150 W), mémoire DDR5-6400
# Intel® Xeon® 6 Performance 6714P 4,0 GHz, 8C/16T, 24 GT/s, 330 Mo de cache, Turbo (165 W), mémoire DDR5-6400
- match = re.match(r'^(Processeur\s)?Intel[®]?\sXeon[®]?\s+6\s+(?PSilver|Gold|Platinium|Performance)\s+(?P[0-9][0-9][0-9][0-9][PRLYU]?).*', label)
+ # Processeur Intel® Xeon® Platinum 8460Y+ 2 GHz, 40C/80T, 16 GT/s, cache 105 Mo, Turbo, HT (300 W), mémoire DDR5 4 800 MHz
+ match = re.match(r'^(Processeur\s)?Intel[®]?\sXeon[®]?(\s+6)?\s+(?PSilver|Gold|Platinium|Platinum|Performance)\s+(?P[0-9][0-9][0-9][0-9][PRLYU]?[+]?).*', label)
if match:
cpu_class = match['cpu_class'].lower()
if cpu_class == 'platinium':
@@ -513,6 +515,9 @@ class DellConfiguratorParser(IHtmlConfiguratorParser):
if len(label_elements) > 0:
label = clean_string(label_elements[0].text_content().replace('\n', '').strip())
price = self.price_str_as_float(option_root_element.xpath(self.get_xpath_filter('option_to_price'))[0].text_content())
+ if price is None:
+ logging.warning(f'skipping cpu option with unavailable price: "{label}"')
+ continue
option = self._parse_cpu_upgrade(label, price)
# print('_parse_proc_change_options : adding cpu %s (price = %f)' % (cpu_id, price / num_cpus))
proc_options.add_option(option)
@@ -736,6 +741,20 @@ class DellConfiguratorParser(IHtmlConfiguratorParser):
'amd-epyc-9255': 2556.0,
'amd-epyc-9275f': 3943.0,
}
+ elif cpu_uid == 'intel-xeon-silver-4514y':
+ # retail prices [https://en.wikipedia.org/wiki/Emerald_Rapids#List_of_Emerald_Rapids_processors] on 23/10/2025:
+ public_prices_usd = {
+ 'intel-xeon-silver-4514y': 780.0,
+ 'intel-xeon-gold-6526y': 1517.0,
+ 'intel-xeon-gold-5418y': 1483.0, # from https://en.wikipedia.org/wiki/Sapphire_Rapids#List_of_Sapphire_Rapids_processors
+ 'intel-xeon-gold-6542y': 2878.0,
+ }
+ # matinfo 6 upgrade (from 2 x intel-xeon-silver-4514) prices:
+ matinfo6_upgrade_prices_eur = {
+ 'intel-xeon-gold-6526y': 636.0,
+ 'intel-xeon-gold-5418y': 1128.0,
+ 'intel-xeon-gold-6542y': 2550.0,
+ }
else:
assert False, 'estimation of base cpu price from public prices not implemented for %s' % cpu_uid
# let p_x be the public price of cpu x in usd (known)
@@ -824,6 +843,7 @@ class DellConfiguratorParser(IHtmlConfiguratorParser):
base_cpu_price = {
'amd-epyc-7262': 550.0,
'amd-epyc-9115': DellConfiguratorParser._estimate_base_cpu_price_from_public_prices(cpu_uid=base_cpu.uid),
+ 'intel-xeon-silver-4514y': DellConfiguratorParser._estimate_base_cpu_price_from_public_prices(cpu_uid=base_cpu.uid),
'intel-xeon-performance-6505p': DellConfiguratorParser._estimate_base_cpu_price_from_public_prices(cpu_uid=base_cpu.uid),
}[base_cpu.uid]
configurator.modules['processor'].add_option(Option(base_cpu, base_cpu_price))
@@ -883,7 +903,7 @@ class DellConfiguratorParser2020(DellConfiguratorParser):
def additional_cpu_is_automatic(self) -> bool:
return False
- def price_str_as_float(self, price_as_str):
+ def price_str_as_float(self, price_as_str) -> Optional[Price]:
# eg '+ 2,255.00 €'
match = re.match(r'^\s*(?P[-+]?)\s*(?P[0-9.]*)\s*€\s*$', price_as_str.replace(',', ''))
assert match, 'unexpected price string (%s)' % price_as_str
@@ -958,7 +978,7 @@ class DellConfiguratorParser2021(DellConfiguratorParser):
def additional_cpu_is_automatic(self) -> bool:
return False
- def price_str_as_float(self, price_as_str):
+ def price_str_as_float(self, price_as_str) -> Optional[Price]:
# eg '+ 2 255,00 €' # contains a Narrow No-Break Space (NNBSP) https://www.compart.com/en/unicode/U+202F
nnbsp = ' '
match = re.match(r'^\s*(?P[-+]?)\s*(?P[0-9.]*)\s*€\s*$', price_as_str.replace(',', '.').replace(nnbsp, ''))
@@ -1035,7 +1055,8 @@ class DellConfiguratorParser2025(DellConfiguratorParser):
title_span_element = conf_title_element.xpath(".//span")[0]
assert title_span_element is not None
title = title_span_element.text_content().replace('\n', '').strip() # eg 'Cat2 Conf 2-2-07: Dell Poweredge R670'
- match = re.match(r'^Cat[0-9]+ Conf\s+[0-9\-]+: Dell Poweredge (?P[CR][0-9][0-9][0-9][0-9]?).*', title)
+ # Cat3 Conf 3-2-01 : Poweredge R760xa
+ match = re.match(r'^Cat[0-9]+ Conf\s+[0-9\-]+\s*:\s*(Dell )?Poweredge (?P[CR][0-9][0-9][0-9][0-9]?[xa]*).*', title)
assert match, 'unhandled title : %s' % title
# print(match['cpu_class'], match['cpu_number'])
chassis_id = "dell-poweredge-%s" % (match['chassis_type'].lower(), ) # eg "dell-poweredge-r670"
@@ -1069,14 +1090,20 @@ class DellConfiguratorParser2025(DellConfiguratorParser):
# Inclus dans le prix
return True
- def price_str_as_float(self, price_as_str):
+ def price_str_as_float(self, price_as_str) -> Optional[Price]:
# eg '+ 2 255,00 €' # contains a Narrow No-Break Space (NNBSP) https://www.compart.com/en/unicode/U+202F
nnbsp = ' '
match = re.match(r'^\s*(?P[-+]?)\s*(?P[0-9.]*)\s*€\s*$', price_as_str.replace(',', '.').replace(nnbsp, ''))
- assert match, 'unexpected price string (%s)' % price_as_str
- # print(match['sign'], match['numbers'])
- price_as_float = float("%s%s" % (match['sign'], match['numbers']))
- return price_as_float
+ if match:
+ # print(match['sign'], match['numbers'])
+ price_as_float = float("%s%s" % (match['sign'], match['numbers']))
+ return price_as_float
+ else:
+ # handle the case 'Plus disponible' (meaning 'no price available')
+ match = re.match(r'^\s*Plus\s+disponible\s*$', price_as_str)
+ if match:
+ return None
+ assert match, 'unexpected price string (%s)' % price_as_str
def _get_module_selected_items(self, module_root_element: HtmlElement) -> List[HtmlElement]:
logging.debug('getting selected items for module %s' % module_root_element)
@@ -1156,12 +1183,16 @@ class DellConfiguratorParser2025(DellConfiguratorParser):
# print(label, price)
# Ajout d'une barette de 128Go 2667 Mhz LRDIMM
ram_option = None
-
+ # examples:
# Mémoire 16 Go DDR4 à 2933MHz (1x16Go)
# 32 Go RDIMM, 6 400 MT/s, double rangée
+ # 16 Go RDIMM 5600 MT/s, une rangée
# match = re.match(r'^Mémoire (?P[0-9]+) Go DDR[\-]?4 à (?P[0-9]+)MHz \((?P[0-9]+)x(?P[0-9]+)Go\)', item_label.replace('Mémoire de base : ', '').replace('De base ', ''))
# match = re.match(r'^(?P[0-9]+) Go (de mémoire|) RDIMM, (?P[0-9] ?[0-9]+)\s+MT/s, (une|double) rangée', item_label)
- match = re.match(r'^(?P[0-9]+)\s+Go(\s+de mémoire|)\s+RDIMM,\s+(?P[0-9]\s?[0-9]+)\s+MT/s,\s+(une|double)\s+rangée', label)
+ match = re.match(r'^(?P[0-9]+)\s+Go(\s+de mémoire|)\s+RDIMM([,])?\s+(?P[0-9]\s?[0-9]+)\s+MT/s,\s+(une|double)\s+rangée', label)
+ if match is None:
+ # handle 'Mémoire RDIMM 128 Go, 5 600 MT/, 4 doubles rangées, BASE 32 Go'
+ match = re.match(r'^Mémoire RDIMM\s+(?P[0-9]+)\s+Go,\s+(?P[0-9]\s?[0-9]+)\s+MT/(s)?,\s+[0-9]+\s+(une|double)s?\s+rangées?,\s+BASE\s+[0-9]+\s+Go', label)
assert match, 'unhandled label : %s' % label
# DDR5 RDIMM 6400 MT/s
num_mts = match['num_mts']
@@ -1236,15 +1267,17 @@ class DellConfiguratorParser2025(DellConfiguratorParser):
# initialize cpu
item_label = self._get_module_default_item_label('Processeur', html_root)
# Processeur Intel Xeon Silver 4208 2.1GHz,11M Cache,9.60GT/s, 2UPI,No Turbo, HT,8C/16T (85W) - DDR4-2400
+ # Processeur Intel® Xeon® Silver 4514Y 2 GHz, 16C/32T, 16 GT/s, cache 30 Mo, Turbo, HT (150 W), mémoire DDR5 à 4 400 MHz
# match = re.match(r'^Processeur Intel[®]? Xeon[®]? 6 (?PSilver|Gold|Platinium|Performance) (?P[0-9][0-9][0-9][0-9][PRLYU]?).*', item_label)
- match = re.match(r'^Processeur Intel[®]? Xeon[®]?\s+6\s+(?PSilver|Gold|Platinium|Performance)\s+(?P[0-9][0-9][0-9][0-9][PRLYU]?).*', item_label)
+ match = re.match(r'^Processeur\s+Intel[®]?\s+Xeon[®]?\s+(6\s+)?(?PSilver|Gold|Platinium|Performance)\s+(?P[0-9][0-9][0-9][0-9][PRLYU]?).*', item_label)
if match:
cpu_id = "intel-xeon-%s-%s" % (match['cpu_class'].lower(), match['cpu_number'].lower())
if not match:
# Processeur AMD EPYC 9115 2,60 GHz, 16C/32T, 64 Mo de cache (125 W), mémoire DDR5 à 6400 MT/s
match = re.match(r'^Processeur AMD EPYC\s+(?P[0-9][0-9][0-9][0-9]).*', item_label)
- cpu_id = "amd-epyc-%s" % (match['cpu_number'].lower(), )
+ if match:
+ cpu_id = "amd-epyc-%s" % (match['cpu_number'].lower(), )
assert match, 'unhandled label : %s' % item_label
# print(match['cpu_class'], match['cpu_number'])
diff --git a/concho/procs_chooser.py b/concho/procs_chooser.py
index 3f68170..ec5bee4 100644
--- a/concho/procs_chooser.py
+++ b/concho/procs_chooser.py
@@ -146,6 +146,7 @@ def plot_configs(configs: List[Config], xaxis_def: ConfigAxisDef, yaxis_def: Con
'cascadelake': 0.8,
'icelake': 0.9,
'sapphire rapids': 1.0,
+ 'emerald rapids': 1.0,
'granite rapids': 1.0,
'rome': 0.2,
'milan': 0.4,
@@ -170,6 +171,7 @@ def plot_configs(configs: List[Config], xaxis_def: ConfigAxisDef, yaxis_def: Con
'dell-poweredge-r630': 0.6,
'dell-poweredge-r640': 0.6,
'dell-poweredge-r6525': 0.5,
+ 'dell-poweredge-r760xa': 0.55,
'dell-poweredge-r670': 0.6,
'dell-poweredge-r6725': 0.0,
'dell-poweredge-c4310': 0.6,
diff --git a/tests/test_dell_2025.py b/tests/test_dell_2025.py
index 76862e4..6abf974 100644
--- a/tests/test_dell_2025.py
+++ b/tests/test_dell_2025.py
@@ -20,6 +20,7 @@ class Test(unittest.TestCase):
logging.info('Starting test_dell2_configs')
configurators = [
HtmlConfigurator(Path('catalogs/dell/2025-10/20251020 - Cat2 Conf 2-2-07_ Dell Poweredge R670.html'), DellConfiguratorParser2025()),
+ HtmlConfigurator(Path('catalogs/dell/2025-10/20251022 - Cat3 Conf 3-2-01 _ Poweredge R760xa.html'), DellConfiguratorParser2025()),
HtmlConfigurator(Path('catalogs/dell/2025-10/20251022 - Cat2 Conf 2-2-09_ Dell Poweredge R6725.html'), DellConfiguratorParser2025()),
]