diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb index c2e7fea72ce9a3393c23672e741736d937dfaef4..84d78cbc4c9c8dde52a9d991c24e89b44efa6d92 100644 --- a/lib/refrepo/gen/oar-properties.rb +++ b/lib/refrepo/gen/oar-properties.rb @@ -1232,7 +1232,8 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s cpu_count = first_node['architecture']['nb_procs'] - core_count = first_node['architecture']['nb_cores'] / cpu_count + cpu_core_count = first_node['architecture']['nb_cores'] / cpu_count + cpu_thread_count = first_node['architecture']['nb_threads'] / cpu_count gpu_count = first_node.key?("gpu_devices") ? first_node["gpu_devices"].length : 0 cpu_model = "#{first_node['processor']['model']} #{first_node['processor']['version']}" @@ -1251,17 +1252,17 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s phys_rsc_map = { "cpu" => { :current_ids => [], - :per_server_count => first_node['architecture']['nb_procs'], + :per_server_count => cpu_count, :per_cluster_count => node_count * cpu_count }, "core" => { :current_ids => [], - :per_server_count => first_node['architecture']['nb_cores'] / cpu_count, - :per_cluster_count => node_count * cpu_count * core_count + :per_server_count => cpu_core_count, + :per_cluster_count => node_count * cpu_count * cpu_core_count }, "gpu" => { :current_ids => [], - :per_server_count => first_node.key?("gpu_devices") ? first_node["gpu_devices"].length : 0, + :per_server_count => gpu_count, :per_cluster_count => node_count * gpu_count }, } @@ -1346,13 +1347,13 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s ############################################ # Suite of (2-a): Iterate over CPUs of the server. (rest: cores) ############################################ - (0...phys_rsc_map["cpu"][:per_server_count]).each do |cpu_num| + (0...cpu_count).each do |cpu_num| ############################################ # Suite of (2-a): Iterate over CORES of the CPU ############################################ - (0...phys_rsc_map["core"][:per_server_count]).each do |core_num| + (0...cpu_core_count).each do |core_num| # Compute cpu and core ID oar_resource_id = oar_resource_ids[core_idx] @@ -1387,9 +1388,9 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s # (2-d) Associate a cpuset to each core ############################################ if core_numbering == 'contiguous' - row[:cpuset] = cpu_num * phys_rsc_map["core"][:per_server_count] + core_num + row[:cpuset] = cpu_num * cpu_core_count + core_num elsif core_numbering == 'round-robin' - row[:cpuset] = cpu_num + core_num * phys_rsc_map["cpu"][:per_server_count] + row[:cpuset] = cpu_num + core_num * cpu_count else raise end @@ -1412,13 +1413,13 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s raise "Could not find a GPU on CPU #{cpu_num} for core #{row[:cpuset]}" end else - gpu_idx = core_num / (phys_rsc_map["core"][:per_server_count] / numa_gpus.length) + gpu_idx = core_num / (cpu_core_count / numa_gpus.length) selected_gpu = numa_gpus[gpu_idx] end # id of the selected GPU in the node local_id = node_description["gpu_devices"].values.index(selected_gpu) - row[:gpu] = phys_rsc_map["gpu"][:current_ids][node_index0 * phys_rsc_map["gpu"][:per_server_count] + local_id] + row[:gpu] = phys_rsc_map["gpu"][:current_ids][node_index0 * gpu_count + local_id] row[:gpudevice] = local_id row[:gpudevicepath] = selected_gpu['device'] row[:gpumodel] = selected_gpu['model']