diff --git a/lib/refrepo/gen/wiki/generators/hardware.rb b/lib/refrepo/gen/wiki/generators/hardware.rb index 02ee191da51f4827abff2c8bf658464ed49a8025..1b032bca59f097c85396b39290025ada050c6252 100644 --- a/lib/refrepo/gen/wiki/generators/hardware.rb +++ b/lib/refrepo/gen/wiki/generators/hardware.rb @@ -32,6 +32,7 @@ class G5KHardwareGenerator < WikiGenerator ssds = 0 storage_space = 0 ram = 0 + pmem = 0 @global_hash['sites'].sort.to_h.each do |site_uid, site_hash| clusters += site_hash['clusters'].length @@ -41,6 +42,7 @@ class G5KHardwareGenerator < WikiGenerator nodes += 1 cores += node_hash['architecture']['nb_cores'] ram += node_hash['main_memory']['ram_size'] + pmem += node_hash['main_memory']['pmem_size'] if node_hash['main_memory']['pmem_size'] if node_hash['gpu_devices'] gpus += node_hash['gpu_devices'].length end @@ -59,7 +61,7 @@ class G5KHardwareGenerator < WikiGenerator * #{nodes} nodes * #{cores} CPU cores * #{gpus} GPUs -* #{G5K.get_size(ram)} RAM +* #{G5K.get_size(ram)} RAM + #{G5K.get_size(pmem)}Â PMEM * #{ssds} SSDs and #{hdds} HDDs on nodes (total: #{G5K.get_size(storage_space, 'metric')}) EOF end @@ -70,6 +72,7 @@ class G5KHardwareGenerator < WikiGenerator 'proc_models' => {}, 'core_models' => {}, 'ram_size' => {}, + 'pmem_size' => {}, 'net_interconnects' => {}, 'net_models' => {}, 'acc_families' => {}, @@ -110,6 +113,14 @@ class G5KHardwareGenerator < WikiGenerator init(data, 'ram_size', key) data['ram_size'][key][site_uid] += 1 + # PMEM size + if node_hash['main_memory']['pmem_size'] + pmem_size = node_hash['main_memory']['pmem_size'] + key = [{ text: G5K.get_size(pmem_size), sort: (pmem_size / 2**30).to_s.rjust(6, '0') + ' GB' }] + init(data, 'pmem_size', key) + data['pmem_size'][key][site_uid] += 1 + end + # HPC Networks interfaces = node_hash['network_adapters'].select{ |v| v['enabled'] and @@ -231,9 +242,13 @@ class G5KHardwareGenerator < WikiGenerator table_columns = ['Microarchitecture', 'Core model'] + sites + ['Cores total'] generated_content += MW.generate_table(table_options, table_columns, get_table_data(data, 'core_models')) - generated_content += "\n= RAM size per node =\n" + generated_content += "\n= Memory =\n" + generated_content += "\n== RAM size per node ==\n" table_columns = ['RAM size'] + sites + ['Nodes total'] generated_content += MW.generate_table(table_options, table_columns, get_table_data(data, 'ram_size')) + generated_content += "\n== PMEM size per node ==\n" + table_columns = ['PMEM size'] + sites + ['Nodes total'] + generated_content += MW.generate_table(table_options, table_columns, get_table_data(data, 'pmem_size')) generated_content += "\n= Networking =\n" generated_content += "\n== Network interconnects ==\n" diff --git a/lib/refrepo/gen/wiki/generators/site_hardware.rb b/lib/refrepo/gen/wiki/generators/site_hardware.rb index 18ee3712d7778b34b20ff2631e39e5d21884acc8..92dfa9d19e05827168e5b3daa3fdb4547c14b42f 100644 --- a/lib/refrepo/gen/wiki/generators/site_hardware.rb +++ b/lib/refrepo/gen/wiki/generators/site_hardware.rb @@ -77,7 +77,7 @@ class SiteHardwareGenerator < WikiGenerator cluster_nodes, cell_data(data, 'num_processor_model'), cell_data(data, 'cores_per_cpu_str'), - cell_data(data, 'ram_size'), + sort_data(data, 'ram_size') + (!data['pmem_size'].nil? ? " + #{cell_data(data, 'pmem_size')}Â PMEM" : ''), 'data-sort-value="' + sort_data(data, 'storage_size') + '"|' + cell_data(data, 'storage'), 'data-sort-value="' + sort_data(data, 'network_throughput') + '"|' + cell_data(data, 'used_networks') ] + ((site_accelerators.zero? && with_sites == false) ? [] : [cell_data(data, 'accelerators')]) @@ -128,7 +128,7 @@ class SiteHardwareGenerator < WikiGenerator 'Model' => h['model'], 'Date of arrival' => h['date'], 'CPU' => h['processor_description'], - 'Memory' => h['ram_size'], + 'Memory' => h['ram_size'] + (!h['pmem_size'].nil? ? " + #{h['pmem_size']}Â PMEM" : ''), 'Storage' => h['storage_description'], 'Network' => h['network_description'], } @@ -205,6 +205,7 @@ def get_hardware(sites) hard['num_processor_model'] = (hard['cpus_per_node'] == 1 ? '' : "#{hard['cpus_per_node']} x ") + hard['processor_model'].gsub(' ', ' ') hard['processor_description'] = "#{hard['processor_model']} (#{hard['microarchitecture']}#{hard['processor_freq'] ? ', ' + hard['processor_freq'] : ''}, #{hard['cpus_per_node_str']}, #{hard['cores_per_cpu_str']})" hard['ram_size'] = G5K.get_size(node_hash['main_memory']['ram_size']) + hard['pmem_size'] = G5K.get_size(node_hash['main_memory']['pmem_size']) unless node_hash['main_memory']['pmem_size'].nil? storage = node_hash['storage_devices'].map { |i| { 'size' => i['size'], 'tech' => i['storage'] } } hard['storage'] = storage.each_with_object(Hash.new(0)) { |data, counts| counts[data] += 1