prima
inox2d
prima | inox2d | |
---|---|---|
13 | 9 | |
275 | 178 | |
4.0% | 2.8% | |
9.9 | 8.9 | |
6 days ago | 14 days ago | |
Fortran | Rust | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
prima
-
Prima has got a Python interface
The developer of PRIMA here.
If you use method "cobyla" from scipy.optimize.minimize, then PRIMA already performs far better (in terms of the number of function evaluations). See the comparison at https://github.com/libprima/prima#improvements .
The bugs are indeed only a secondary reason: they can only be triggered under special situations. They may not affect your usage at all (when it does affect you, the consequence is catastrophophic).
-
Nagfor supports half-precision floating-point numbers
1. nagfor Release 7.1(Hanzomon) Build 7149 released on March 5, 2024, fixed all the bugs spotted, but introduced an ICE when compiling PRIMA ( http://www.libprima.net ). The ICE has nothing to do with half-precision real, because it occurs when PRIMA is configured to use single or double precision. It can be reproduced by
```
git clone https://github.com/libprima/prima.git && cd prima && git checkout ec42cb0 && cd fortran/examples/lincoa && make ntest
```
2. nagfor 7.2 released on 6 March, 2024 included neither the ICE nor the fixes for the bugs.
- PRIMA: Solving general nonlinear optimization problems without derivatives
-
What are you rewriting in rust?
My goal is to rewrite this library for derivative-free optimization: https://github.com/libprima/prima
-
SciPy: Interested in adopting PRIMA, but little appetite for more Fortran code
A native port is indeed planned. However, since we are talking about a project of about 10K lines of code, such a port will not be delivered very soon.
In fact, native implementations of PRIMA in Python, MATLAB, C++, Julia, and R will all be done in the future. See https://github.com/libprima/prima#other-languages . But it takes time. PRIMA has been a one-man project since it started three yearss ago. Community help is greatly needed.
Thanks.
-
Optimization Without Using Derivatives: the PRIMA Package, its Fortran Implementation, and Its Inclusion in SciPy - Announcements
GitHub repo of the project: https://github.com/libprima/prima
-
Optimization Without Derivatives: Prima Fortran Version and Inclusion in SciPy
It sounds like this was a difficult task. The motivation to fulfill Prof. Powell's request and help the community of derivative-free optimization users must have been strong. Congratulations on your achievement!
From the GitHub README:
> In the past years, while working on PRIMA, I have spotted a dozen of bugs in reputable Fortran compilers and two bugs in MATLAB. Each of them represents days of bitter debugging, which finally led to the conclusion that it was not a problem in my code but a flaw in the Fortran compilers or in MATLAB. From a very unusual angle, this reflects how intensive the coding has been.
> The bitterness behind this "fun" fact is exactly why I work on PRIMA: I hope that all the frustrations that I have experienced will not happen to any user of Powell's methods anymore. I hope I am the last one in the world to decode a maze of 244 GOTOs in 7939 lines of Fortran 77 code — I have been doing this for three years and I do not want anyone else to do it again.
https://github.com/libprima/prima#a-fun-fact
- Optimization Without Using Derivatives
inox2d
-
What are you rewriting in rust?
I'm writing Inox2D, which is kind of a rewrite of Inochi2D in Rust. The aim is to reach more use-cases such as web with WASM and even potentially embedded development, but at the very least an implementation in a low-level non-garbage-collected language.
-
What's everyone working on this week (27/2023)?
Inox2D, an experimental native Rust implementation of Inochi2D.
-
What type of projects do you use Rust for?
inox2d - official experimental reimplementation of Inochi2D, an open-source alternative of Live2D for animating 2D puppets in various contexts such as games or vtubing. inox2d isn't really meant to be a replacement over the current implementation, but more of a complementary one that extends it's use-cases, for example embedded devices and web integration with WASM.
-
OpenGL crates: gl vs glow vs glium
Hey, I'm working on inox2d which uses glow.
-
Splitting a big struct impl into multiple files?
For example, I wouldn't want to separate this into multiple files, would make it harder to see where all the deserialization logic is.
-
More on OOP: Polymorphism this time
For example, I'm working on Inox2D, a reimplementation of Inochi2D in Rust.
-
"My Reaction to Dr. Stroustrup’s Recent Memory Safety Comments"
I absolutely get that. It was actually very clear in a project of mine. I work on inox2d which is a native implementation of Inochi2D in Rust (Inochi2D being a FOSS puppet animation system, like Live2D which is used by vtubers and light novel engines notably).
-
Is coding in Rust as bad as in C++? A practical comparison
For example, on my Inox2D project, I was using serde to deserialize some JSON payload. But that came with some hacks I had to do, like have a temporary struct that gets converted to the final one because it wasn't possible to serialize it by itself, and add extra-dependencies to make the system extensible while also supporting external structures I used like Arena from the indextree crate.
-
Help getting started with open source
You can find it at https://github.com/Inochi2D/inox2d. If you know stuff about OpenGL and low-level rendering in general I'd really appreciate some help as I myself am very new to this stuff.
What are some alternatives?
solid-docs - Cumulative documentation for SolidJS and related packages.
inochi2d - Inochi2D reference implementation aimed at rendering 2D puppets that can be animated in real-time (using eg. facial capture).
stdlib - Fortran Standard Library
halloy - IRC application written in Rust
pybobyqa - Python-based Derivative-Free Optimization with Bound Constraints
signrs
Optimization-Codes-by-ChatGPT - numerical optimization subroutines in Fortran generated by ChatGPT-4
tensorken - A fun, hackable, GPU-accelerated, neural network library in Rust, written by an idiot
OfficerBreaker - OOXML password remover
dotfiles
gmusicbrowser - jukebox for large collections of music
navajo - A cryptographic toolkit for Rust