From b0ef560af6e2bf86c3b7ee97243eaaf688527597 Mon Sep 17 00:00:00 2001 From: Samir Noir <samir.noir@inria.fr> Date: Fri, 7 Jan 2022 10:23:04 +0100 Subject: [PATCH] [gen/puppet] add new generator for Oar::Sub::Simplifier aliases --- Rakefile | 2 +- .../gen/puppet/oarsub-simplifier-aliases.rb | 47 +++++++++++++++++++ lib/refrepo/gpu_ref.rb | 23 +++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 lib/refrepo/gen/puppet/oarsub-simplifier-aliases.rb diff --git a/Rakefile b/Rakefile index e3a35379879..6b5d609f568 100644 --- a/Rakefile +++ b/Rakefile @@ -201,7 +201,7 @@ namespace :gen do namespace :puppet do - all_puppet_tasks = [:bindg5k, :conmang5k, :dhcpg5k, :kadeployg5k, :lanpowerg5k, :kavlang5k, :kwollectg5k, :network_monitoring, :'refapi-subset', :'oxidizedg5k'] + all_puppet_tasks = [:bindg5k, :conmang5k, :dhcpg5k, :kadeployg5k, :lanpowerg5k, :kavlang5k, :kwollectg5k, :network_monitoring, :'refapi-subset', :oxidizedg5k, :'sub-simplifier-aliases'] all_puppet_tasks.each { |t| generated_desc = (t == :'refapi-subset') ? 'description' : 'configuration' diff --git a/lib/refrepo/gen/puppet/oarsub-simplifier-aliases.rb b/lib/refrepo/gen/puppet/oarsub-simplifier-aliases.rb new file mode 100644 index 00000000000..54759e7f2cd --- /dev/null +++ b/lib/refrepo/gen/puppet/oarsub-simplifier-aliases.rb @@ -0,0 +1,47 @@ +# coding: utf-8 + +require 'refrepo/data_loader' +require 'refrepo/gpu_ref' + +def get_sub_simplifier_default_aliases(options) + if not options[:conf_dir] + options[:conf_dir] = "#{options[:output_dir]}/platforms/production/generators/sub-simplifier" + end + + raise("Error: file #{options[:conf_dir]}/aliases.yaml does not exist. The given configuration path is incorrect") unless Pathname("#{options[:conf_dir]}/aliases.yaml").exist? + + default_aliases = YAML.load(File.read("#{options[:conf_dir]}/aliases.yaml")) + default_aliases.merge!(GPURef.get_all_aliases.transform_values { |value| "gpu_model='#{value}'" }) + mem_multipliers = [24, 32] + mem_multipliers.each do |i| + while i <= 1024 do + default_aliases["#{i}GB"] = "memnode>=#{i*1024}" + i *= 2 + end + end + + default_aliases +end + +def generate_puppet_oarsub_simplifier_aliases(options) + default_aliases = get_sub_simplifier_default_aliases(options) + + options[:sites].each do |site| + output_file = "#{options[:output_dir]}/platforms/production/modules/generated/files/grid5000/oar-sub-simplifier/#{site}-aliases.yaml" + gen_aliases_yaml(site, output_file, default_aliases) + end +end + +def gen_aliases_yaml(site, output_path, default_aliases) + aliases = {} + aliases.merge!(default_aliases) + + site_data_hierarchy = load_data_hierarchy + site_data_hierarchy['sites'][site]['clusters'].each_key do |cluster| + aliases[cluster] = "cluster='#{cluster}'" + aliases["#{cluster}-%d"] = "host='#{cluster}-%d.#{site}.grid5000.fr'" + end + + output_file = File.new(output_path, 'w') + output_file.write(YAML.dump(aliases)) +end diff --git a/lib/refrepo/gpu_ref.rb b/lib/refrepo/gpu_ref.rb index 46a24e45512..ec15d8bca16 100644 --- a/lib/refrepo/gpu_ref.rb +++ b/lib/refrepo/gpu_ref.rb @@ -6,70 +6,84 @@ class GPURef 'cores' => 4352, 'compute_capability' => '7.5', 'short_name' => 'RTX 2080 Ti', + 'alias' => 'rtx2080ti', }, 'GeForce GTX 1080 Ti' => { 'cores' => 3584, 'compute_capability' => '6.1', 'short_name' => 'GTX 1080 Ti', + 'alias' => 'gtx1080ti', }, 'Tesla P100-PCIE-16GB' => { 'cores' => 3584, 'compute_capability' => '6.0', 'short_name' => 'Tesla P100', + 'alias' => 'p100-pcie-16', }, 'Tesla P100-SXM2-16GB' => { 'cores' => 3584, 'compute_capability' => '6.0', 'short_name' => 'Tesla P100', + 'alias' => 'p100-sxm2-16', }, 'Tesla V100-PCIE-32GB' => { 'cores' => 5120, 'compute_capability' => '7.0', 'short_name' => 'Tesla V100', + 'alias' => 'v100-pcie-32', }, 'Tesla V100-SXM2-32GB' => { 'cores' => 5120, 'compute_capability' => '7.0', 'short_name' => 'Tesla V100', + 'alias' => 'v100-sxm2-32', }, 'Tesla M2075' => { 'cores' => 448, 'compute_capability' => '2.0', 'short_name' => 'Tesla M2075', + 'alias' => 'm2075', }, 'GeForce GTX 980' => { 'cores' => 2048, 'compute_capability' => '5.2', 'short_name' => 'GTX 980', + 'alias' => 'gtx980', }, 'Tesla K40m' => { 'cores' => 2880, 'compute_capability' => '3.5', 'short_name' => 'Tesla K40M', + 'alias' => 'k40m', }, 'Tesla T4' => { 'cores' => 2560, 'compute_capability' => '7.5', 'short_name' => 'Tesla T4', + 'alias' => 't4', }, 'A100-PCIE-40GB' => { 'cores' => 6912, 'compute_capability' => '8.0', 'short_name' => 'A100', + 'alias' => 'a100-pcie-40', }, 'A40' => { 'cores' => 10752, 'compute_capability' => '8.6', 'short_name' => 'A40', + 'alias' => 'a40', }, 'Quadro RTX 6000' => { 'cores' => 4608, 'compute_capability' => '7.5', 'short_name' => 'Quadro RTX 6000', + 'alias' => 'rtx6000', }, 'Radeon Instinct MI50 32GB' => { 'cores' => 5120, 'short_name' => 'MI50', + 'alias' => 'mi50-32', }, } @@ -97,4 +111,13 @@ class GPURef end end + def self.get_all_aliases + aliases = {} + @@gpus.each do |model, data| + raise "Fix me: alias is missing for #{model}" unless data['alias'] + aliases[data['alias']] = model + end + + aliases + end end -- GitLab