-
Notifications
You must be signed in to change notification settings - Fork 123
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
New CPU-based Optimizer #1040
Merged
Merged
New CPU-based Optimizer #1040
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
m4rs-mt
force-pushed
the
cpu_optimizer
branch
7 times, most recently
from
August 11, 2023 12:39
e36ff1a
to
6fdfd42
Compare
m4rs-mt
force-pushed
the
cpu_optimizer
branch
4 times, most recently
from
August 22, 2023 07:35
675e1b0
to
e5741b3
Compare
m4rs-mt
force-pushed
the
cpu_optimizer
branch
3 times, most recently
from
August 29, 2023 10:47
40b8935
to
280711a
Compare
m4rs-mt
force-pushed
the
cpu_optimizer
branch
3 times, most recently
from
September 5, 2023 10:28
3e6ae59
to
cc1d04d
Compare
Reopening this PR to include the proposed feature in the algorithms library. |
m4rs-mt
force-pushed
the
cpu_optimizer
branch
from
January 15, 2024 10:15
cc1d04d
to
d092508
Compare
m4rs-mt
force-pushed
the
cpu_optimizer
branch
2 times, most recently
from
February 1, 2024 08:51
2974e30
to
93edb98
Compare
m4rs-mt
force-pushed
the
cpu_optimizer
branch
from
February 15, 2024 17:13
93edb98
to
bd975ae
Compare
…entations to adjust particle positions during optimization.
…the SGO algorithm.
…ctorized) execution.
… (SIMD) execution.
…aluation of objective functions on particles.
…ustomized and domain-specific objective functions.
…itions in parallel.
…article positions in the SOG of the SGO algorithm in parallel.
…icle positions according to SGO in parallel.
…tion details from users.
…unctions from Wikipedia.
m4rs-mt
force-pushed
the
cpu_optimizer
branch
from
February 23, 2024 16:53
bd975ae
to
02ec9f7
Compare
MoFtZ
approved these changes
Mar 1, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a new meta optimizer to the Algorithms library which is designed for CPUs. It implements an optimization-performance and runtime-performance optimized version of the SGO algorithm:
Squid Game Optimizer (SGO): a novel metaheuristic algorithm [doi: 10.1038/s41598-023-32465-z].
The primary use case of this optimizer is to solve sophisticated optimization problems without the need to transform the input problem description into any intermediate state. Due to its efficiency it can be directly used in any .Net program to get excellent approximations of optimization results in near real time.
The implemented version does not implement the vanilla SGO algorithm from the paper. Instead, it uses modified update functions and specially tweaked position update logic using multiple buffers and tuned SGO-winner lists. These modifications of the original algorithm make this implementation significantly better in terms of optimization quality and runtime performance. Moreover, this version is fully parallelized and has the ability to use SIMD vector instructions to improve runtime performance.
This PR also adds a set of new optimizer test cases to ensure the convergence of the implemented approach.
Sample use case creating a scalar version of the optimizer while operating on floats to represent position vectors and evaluation results.