Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature SAMO-IS - Improve the optimization #40

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

marenz2569
Copy link
Collaborator

This PR lays the foundation for SAMO-IS support. A paper for the algorithm can be found here: Multiple surrogate assisted multiobjective optimization using improved pre-selection

Preliminary results:

  • fundamentally the same setup as in FS2.0 paper
  • maximum of 400 evaluations, while in the paper ~800 were used. (approx. only 2-3h runtime per optimization (half))
  • parameters for optimization: --optimize=SAMO-IS -t 10 --preheat=240 --optimization-metric=metricq,perf-ipc --metric-path=libmetric-metricq.so --individuals=40 --generations=20 --nsga2-m=0.35 --max-evaluations=400
  • results are a bit worse of for 1500 MHz, but I haven't tweaked any parameters so far
  • results for 2200MHz and 2500Mhz are way better

Open TODOs:

  • Code cleanup
  • Documentation
  • Fix CMake scripts
  • Fix derivation.nix
  • Add dependencies to README (SOT, armadillo)
  • fix CI
  • check if armadillo can be compiled statically

@rschoene
Copy link
Member

rschoene commented Apr 4, 2022

This seems impressing, however, I have some additional TODOs:

  • Since one software (SOT) has not been updated in 6 years, I wouldn't like to depend on that.
  • Since the other software (armadillo) is very powerful and we use only a small fraction, I'd like to see this gone as well
  • With multiple optimization algorithms, the specific arguments of the optimization algorithms (nsga2-cr, nsga2-m, max-evaluations) should be read by a function of that algorithm and (e.g., Algorithm::readCLIArguments(const int argc, const char **argv)) . Also, they should prefix the algorithm in lower case, i.e. samo-is-max-evaluations would be it.
  • Samo seems to use nsga2 variables, which will be confusing to users.
  • NSGA changes shouldn't be made here (except for a generalization of interfaces) as discussed in the previous point.


cmakeFlags = [
"-DFIRESTARTER_BUILD_HWLOC=OFF"
"-DCMAKE_C_COMPILER_WORKS=1"
"-DCMAKE_CXX_COMPILER_WORKS=1"
"-DFIRESTARTER_LINK_STATIC=OFF"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why disabling static?

@@ -116,6 +117,7 @@ class Firestarter {
const unsigned _individuals;
const std::string _optimizeOutfile;
const unsigned _generations;
const unsigned _maxEvaluations;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it necessary here? can it be held in Optimizer/Algorithm/SAMO_IS.hpp only?

@@ -85,7 +89,7 @@ void Population::append(Individual const &ind, std::vector<double> const &fit) {
for (auto const &v : fit) {
ss << v << " ";
}
firestarter::log::trace() << ss.str();
// firestarter::log::trace() << ss.str();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not relevant to this feature (as well as following changes)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants