Align trainer arrays to cache line.

This commit is contained in:
Tomasz Sobczyk
2020-10-27 19:37:19 +01:00
committed by nodchip
parent 8fac468259
commit f1e96cab55
5 changed files with 17 additions and 17 deletions
+6 -6
View File
@@ -353,18 +353,18 @@ namespace Eval::NNUE {
LayerType* const target_layer_; LayerType* const target_layer_;
// parameter // parameter
LearnFloatType biases_[kOutputDimensions]; alignas(kCacheLineSize) LearnFloatType biases_[kOutputDimensions];
LearnFloatType weights_[kOutputDimensions * kInputDimensions]; alignas(kCacheLineSize) LearnFloatType weights_[kOutputDimensions * kInputDimensions];
// Buffer used for updating parameters // Buffer used for updating parameters
LearnFloatType biases_diff_[kOutputDimensions]; alignas(kCacheLineSize) LearnFloatType biases_diff_[kOutputDimensions];
LearnFloatType weights_diff_[kOutputDimensions * kInputDimensions]; alignas(kCacheLineSize) LearnFloatType weights_diff_[kOutputDimensions * kInputDimensions];
// Forward propagation buffer // Forward propagation buffer
std::vector<LearnFloatType> output_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> output_;
// buffer for back propagation // buffer for back propagation
std::vector<LearnFloatType> gradients_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> gradients_;
// hyper parameter // hyper parameter
LearnFloatType momentum_; LearnFloatType momentum_;
+2 -2
View File
@@ -149,10 +149,10 @@ namespace Eval::NNUE {
LayerType* const target_layer_; LayerType* const target_layer_;
// Forward propagation buffer // Forward propagation buffer
std::vector<LearnFloatType> output_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> output_;
// buffer for back propagation // buffer for back propagation
std::vector<LearnFloatType> gradients_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> gradients_;
// Health check statistics // Health check statistics
LearnFloatType min_activations_[kOutputDimensions]; LearnFloatType min_activations_[kOutputDimensions];
@@ -421,11 +421,11 @@ namespace Eval::NNUE {
LearnFloatType weights_[kHalfDimensions * kInputDimensions]; LearnFloatType weights_[kHalfDimensions * kInputDimensions];
// Buffer used for updating parameters // Buffer used for updating parameters
LearnFloatType biases_diff_[kHalfDimensions]; alignas(kCacheLineSize) LearnFloatType biases_diff_[kHalfDimensions];
std::vector<LearnFloatType> gradients_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> gradients_;
// Forward propagation buffer // Forward propagation buffer
std::vector<LearnFloatType> output_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> output_;
// Features that appeared in the training data // Features that appeared in the training data
std::bitset<kInputDimensions> observed_features; std::bitset<kInputDimensions> observed_features;
@@ -437,8 +437,8 @@ namespace Eval::NNUE {
// Health check statistics // Health check statistics
LearnFloatType min_pre_activation_; LearnFloatType min_pre_activation_;
LearnFloatType max_pre_activation_; LearnFloatType max_pre_activation_;
LearnFloatType min_activations_[kHalfDimensions]; alignas(kCacheLineSize) LearnFloatType min_activations_[kHalfDimensions];
LearnFloatType max_activations_[kHalfDimensions]; alignas(kCacheLineSize) LearnFloatType max_activations_[kHalfDimensions];
}; };
} // namespace Eval::NNUE } // namespace Eval::NNUE
+3 -3
View File
@@ -163,7 +163,7 @@ namespace Eval::NNUE {
const LearnFloatType* output_; const LearnFloatType* output_;
// buffer for back propagation // buffer for back propagation
std::vector<LearnFloatType> gradients_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> gradients_;
}; };
// Learning: Input layer // Learning: Input layer
@@ -256,10 +256,10 @@ namespace Eval::NNUE {
const std::shared_ptr<SharedInputTrainer> shared_input_trainer_; const std::shared_ptr<SharedInputTrainer> shared_input_trainer_;
// Forward propagation buffer // Forward propagation buffer
std::vector<LearnFloatType> output_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> output_;
// buffer for back propagation // buffer for back propagation
std::vector<LearnFloatType> gradients_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> gradients_;
}; };
} // namespace Eval::NNUE } // namespace Eval::NNUE
+1 -1
View File
@@ -184,7 +184,7 @@ namespace Eval::NNUE {
LayerType* const target_layer_; LayerType* const target_layer_;
// Forward propagation buffer // Forward propagation buffer
std::vector<LearnFloatType> output_; std::vector<LearnFloatType, CacheLineAlignedAllocator<LearnFloatType>> output_;
}; };
} // namespace Eval::NNUE } // namespace Eval::NNUE