Skip to content

Commit c2c6909

Browse files
committed
[Sonar] fix a first bunch of issues
1 parent a872cb9 commit c2c6909

8 files changed

Lines changed: 40 additions & 34 deletions

include/dtlmod/CompressionReductionMethod.hpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class CompressionReductionMethod : public ReductionMethod {
4848
[[nodiscard]] double get_compression_ratio() const { return compression_ratio_; }
4949
void set_compression_ratio(double ratio) { compression_ratio_ = ratio; }
5050
[[nodiscard]] const std::string& get_compressor_profile() const { return compressor_profile_; }
51-
void set_compressor_profile(const std::string& profile) { compressor_profile_ = profile; }
51+
void set_compressor_profile(std::string_view profile) { compressor_profile_ = profile; }
5252
[[nodiscard]] double get_data_smoothness() const { return data_smoothness_; }
5353
void set_data_smoothness(double smoothness) { data_smoothness_ = smoothness; }
5454
[[nodiscard]] double get_ratio_variability() const { return ratio_variability_; }
@@ -64,9 +64,11 @@ class CompressionReductionMethod : public ReductionMethod {
6464
static double derive_compression_ratio(double accuracy, const std::string& profile, double data_smoothness);
6565

6666
public:
67-
CompressionReductionMethod(const std::string& name) : ReductionMethod(name) {}
68-
void parameterize_for_variable(const Variable& var, const std::map<std::string, std::string>& parameters) override;
69-
void reduce_variable(const Variable& /* var*/) override {}
67+
using ReductionMethod::ReductionMethod;
68+
void parameterize_for_variable(const Variable& var,
69+
const std::map<std::string, std::string, std::less<>>& parameters) override;
70+
void reduce_variable(const Variable& /* var*/) override
71+
{ /* Variable metadata are not modfied when using compression */ }
7072

7173
[[nodiscard]] size_t get_reduced_variable_global_size(const Variable& var) const override;
7274
[[nodiscard]] size_t get_reduced_variable_local_size(const Variable& var) const override;

include/dtlmod/DecimationReductionMethod.hpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ class DecimationReductionMethod : public ReductionMethod {
3737
void set_reduced_local_start_and_count(sg4::ActorPtr actor, const std::vector<size_t>& reduced_local_start,
3838
const std::vector<size_t>& reduced_local_count)
3939
{
40-
reduced_local_start_and_count_.try_emplace(actor, std::make_pair(reduced_local_start, reduced_local_count));
40+
reduced_local_start_and_count_.try_emplace(actor, reduced_local_start, reduced_local_count);
4141
}
4242

4343
[[nodiscard]] const std::vector<size_t>& get_stride() const { return stride_; }
4444
void set_stride(const std::vector<size_t>& stride) { stride_ = stride; }
4545
[[nodiscard]] const std::string& get_interpolation_method() const { return interpolation_method_; }
46-
void set_interpolation_method(const std::string& method) { interpolation_method_ = method; }
46+
void set_interpolation_method(std::string_view method) { interpolation_method_ = method; }
4747
[[nodiscard]] double get_cost_per_element() const { return cost_per_element_; }
4848
void set_cost_per_element(double cost) { cost_per_element_ = cost; }
4949

@@ -59,7 +59,8 @@ class DecimationReductionMethod : public ReductionMethod {
5959
std::map<const Variable*, std::shared_ptr<ParameterizedDecimation>> per_variable_parameterizations_;
6060

6161
protected:
62-
void parameterize_for_variable(const Variable& var, const std::map<std::string, std::string>& parameters) override;
62+
void parameterize_for_variable(const Variable& var,
63+
const std::map<std::string, std::string, std::less<>>& parameters) override;
6364

6465
void reduce_variable(const Variable& var) override;
6566

@@ -90,7 +91,7 @@ class DecimationReductionMethod : public ReductionMethod {
9091
}
9192

9293
public:
93-
DecimationReductionMethod(const std::string& name) : ReductionMethod(name) {}
94+
using ReductionMethod::ReductionMethod;
9495
};
9596
///\endcond
9697
} // namespace dtlmod

include/dtlmod/ReductionMethod.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ class ReductionMethod {
2828
ReductionMethod(const std::string& name) : name_(name) {}
2929
virtual ~ReductionMethod() = default;
3030

31-
virtual void parameterize_for_variable(const Variable& var, const std::map<std::string, std::string>& parameters) = 0;
31+
virtual void parameterize_for_variable(const Variable& var,
32+
const std::map<std::string, std::string, std::less<>>& parameters) = 0;
3233
virtual void reduce_variable(const Variable& var) = 0;
3334
virtual size_t get_reduced_variable_global_size(const Variable& var) const = 0;
3435
virtual size_t get_reduced_variable_local_size(const Variable& var) const = 0;

include/dtlmod/Variable.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ class Variable : public std::enable_shared_from_this<Variable> {
126126
/// @brief Assign a parameterized reduction method to the Variable.
127127
/// @param method a ReductionMethod (already defined).
128128
/// @param paramaters specific parameters in key-value form to apply the reduction method to the Variable.
129-
void set_reduction_operation(std::shared_ptr<ReductionMethod> method, std::map<std::string, std::string> parameters);
129+
void set_reduction_operation(std::shared_ptr<ReductionMethod> method,
130+
std::map<std::string, std::string, std::less<>> parameters);
130131

131132
[[nodiscard]] bool is_reduced() const { return is_reduced_with_ != nullptr; }
132133

src/CompressionReductionMethod.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,26 @@ double CompressionReductionMethod::ParameterizedCompression::get_effective_ratio
2727
size_t CompressionReductionMethod::get_reduced_variable_global_size(const Variable& var) const
2828
{
2929
auto ratio = per_variable_parameterizations_.at(&var)->get_compression_ratio();
30-
return static_cast<size_t>(std::ceil(var.get_global_size() / ratio));
30+
return static_cast<size_t>(std::ceil(static_cast<double>(var.get_global_size()) / ratio));
3131
}
3232

3333
size_t CompressionReductionMethod::get_reduced_variable_local_size(const Variable& var) const
3434
{
3535
auto ratio = per_variable_parameterizations_.at(&var)->get_compression_ratio();
36-
return static_cast<size_t>(std::ceil(var.get_local_size() / ratio));
36+
return static_cast<size_t>(std::ceil(static_cast<double>(var.get_local_size()) / ratio));
3737
}
3838

3939
double CompressionReductionMethod::get_flop_amount_to_reduce_variable(const Variable& var) const
4040
{
4141
auto param = per_variable_parameterizations_.at(&var);
42-
auto num_elements = var.get_local_size() / var.get_element_size();
42+
auto num_elements = static_cast<double>(var.get_local_size() / var.get_element_size());
4343
return param->get_compression_cost_per_element() * num_elements;
4444
}
4545

4646
double CompressionReductionMethod::get_flop_amount_to_decompress_variable(const Variable& var) const
4747
{
4848
auto param = per_variable_parameterizations_.at(&var);
49-
auto num_elements = var.get_local_size() / var.get_element_size();
49+
auto num_elements = static_cast<double>(var.get_local_size() / var.get_element_size());
5050
return param->get_decompression_cost_per_element() * num_elements;
5151
}
5252

@@ -69,8 +69,8 @@ double CompressionReductionMethod::derive_compression_ratio(double accuracy, con
6969
return 1.0;
7070
}
7171

72-
void CompressionReductionMethod::parameterize_for_variable(const Variable& var,
73-
const std::map<std::string, std::string>& parameters)
72+
void CompressionReductionMethod::parameterize_for_variable(
73+
const Variable& var, const std::map<std::string, std::string, std::less<>>& parameters)
7474
{
7575
double new_accuracy = 1e-3;
7676
double new_compression_cost_per_element = 1.0;
@@ -119,7 +119,7 @@ void CompressionReductionMethod::parameterize_for_variable(const Variable& var,
119119
} else if (key == "ratio_variability") {
120120
new_ratio_variability = std::stod(value);
121121
} else {
122-
throw UnknownCompressionOptionException(XBT_THROW_POINT, key.c_str());
122+
throw UnknownCompressionOptionException(XBT_THROW_POINT, key);
123123
}
124124
}
125125

@@ -129,9 +129,8 @@ void CompressionReductionMethod::parameterize_for_variable(const Variable& var,
129129
throw InconsistentCompressionRatioException(
130130
XBT_THROW_POINT, "Compressor profile 'fixed' requires an explicit 'compression_ratio' parameter.");
131131
new_compression_ratio = derive_compression_ratio(new_accuracy, new_compressor_profile, new_data_smoothness);
132-
} else if (ratio_explicitly_set) {
133-
if (new_compression_ratio < 1.0)
134-
throw InconsistentCompressionRatioException(XBT_THROW_POINT, "Compression ratio must be >= 1.0");
132+
} else if (ratio_explicitly_set && new_compression_ratio < 1.0) {
133+
throw InconsistentCompressionRatioException(XBT_THROW_POINT, "Compression ratio must be >= 1.0");
135134
}
136135

137136
XBT_DEBUG("Compression parameterization for Variable %s: profile=%s, accuracy=%.2e, ratio=%.2f, "

src/DecimationReductionMethod.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,21 @@ double DecimationReductionMethod::ParameterizedDecimation::get_flop_amount_to_de
3737
XBT_DEBUG("Compute decimation cost with: cost_per_element = %.2f and interpolation_method = %s", cost_per_element_,
3838
interpolation_method_.c_str());
3939
double amount = cost_per_element_;
40+
auto local_size = static_cast<double>(var_->get_local_size());
4041
if (interpolation_method_.empty()) {
41-
amount *= var_->get_local_size();
42+
amount *= local_size;
4243
} else if (interpolation_method_ == "linear") {
43-
amount = 2 * amount * var_->get_local_size();
44+
amount = 2 * amount * local_size;
4445
} else if (interpolation_method_ == "quadratic") {
45-
amount = 4 * amount * var_->get_local_size();
46+
amount = 4 * amount * local_size;
4647
} else if (interpolation_method_ == "cubic") {
47-
amount = 8 * amount * var_->get_local_size();
48+
amount = 8 * amount * local_size;
4849
} // Sanity check done when parameterizing the reduction method for this variable
4950
return amount;
5051
}
5152

52-
void DecimationReductionMethod::parameterize_for_variable(const Variable& var,
53-
const std::map<std::string, std::string>& parameters)
53+
void DecimationReductionMethod::parameterize_for_variable(
54+
const Variable& var, const std::map<std::string, std::string, std::less<>>& parameters)
5455
{
5556
std::vector<size_t> new_stride;
5657
std::string new_interpolation_method;
@@ -103,7 +104,7 @@ void DecimationReductionMethod::parameterize_for_variable(const Variable& var,
103104
} else if (key == "cost_per_element")
104105
new_cost_per_element = std::stod(value);
105106
else
106-
throw UnknownDecimationOptionException(XBT_THROW_POINT, key.c_str());
107+
throw UnknownDecimationOptionException(XBT_THROW_POINT, key);
107108
}
108109

109110
if (!exists) {
@@ -135,7 +136,8 @@ void DecimationReductionMethod::reduce_variable(const Variable& var)
135136
std::vector<size_t> reduced_shape;
136137
size_t i = 0;
137138
for (auto dim_size : original_shape)
138-
reduced_shape.push_back(std::ceil(dim_size / (stride[i++] * 1.0)));
139+
reduced_shape.push_back(
140+
static_cast<size_t>(std::ceil(static_cast<double>(dim_size) / static_cast<double>(stride[i++]))));
139141
parameterization->set_reduced_shape(reduced_shape);
140142

141143
auto self = sg4::Actor::self();
@@ -145,9 +147,10 @@ void DecimationReductionMethod::reduce_variable(const Variable& var)
145147

146148
for (size_t i = 0; i < original_shape.size(); i++) {
147149
// Sanity checks that shape, start, and count have the same size have already been done
148-
size_t r_start = std::ceil(start[i] / (stride[i] * 1.0));
149-
size_t r_next_start =
150-
std::min(original_shape[i], static_cast<size_t>(std::ceil((start[i] + count[i]) / (stride[i] * 1.0))));
150+
size_t r_start = static_cast<size_t>(std::ceil(static_cast<double>(start[i]) / static_cast<double>(stride[i])));
151+
size_t r_next_start = std::min(
152+
original_shape[i],
153+
static_cast<size_t>(std::ceil(static_cast<double>(start[i] + count[i]) / static_cast<double>(stride[i]))));
151154
XBT_DEBUG("Dim %zu: stride = %zu, Start = %zu, r_start = %zu, Count = %zu, r_count = %zu", i, stride[i], start[i],
152155
r_start, count[i], r_next_start - r_start);
153156
reduced_start.push_back(r_start);

src/Stream.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ void Stream::export_metadata_to_file() const
158158

159159
std::shared_ptr<ReductionMethod> Stream::define_reduction_method(const std::string& name)
160160
{
161-
auto it = reduction_methods_.find(name);
162-
if (it != reduction_methods_.end())
161+
if (auto it = reduction_methods_.find(name); it != reduction_methods_.end())
163162
return it->second;
164163

165164
std::shared_ptr<ReductionMethod> reduction_method;

src/Variable.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void Variable::set_transaction_selection(unsigned int begin, unsigned int count)
6060
}
6161

6262
void Variable::set_reduction_operation(std::shared_ptr<ReductionMethod> method,
63-
std::map<std::string, std::string> parameters)
63+
std::map<std::string, std::string, std::less<>> parameters)
6464
{
6565
auto stream = defined_in_stream_.lock();
6666
xbt_assert(stream, "Variable::set_reduction_operation called after its Stream has been destroyed");

0 commit comments

Comments
 (0)