aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/h48 (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Make the project build with Microsoft's broken C compiler.Sebastiano Tronto2026-04-068-119/+120
| | | | | | | | | | | | | MSVC is not fully C11-compliant, even when compiling with /std:c11. Some changes were needed to make the codebase compatible. Notably, the notation a[static N] and a[n] for function parameters of array type is not supported, so that had to be hidden behind a macro. Atomic types are also an experimental feature, apparently, but at least they work with the correct compiler flag. One thing that MSVC does well, however, is warning on integer conversions on /W4 level. I am not sure if Clang and GCC have something similar, so I took this chance to fix some of these.
* Improve solver name checkSebastiano Tronto2026-03-011-1/+8
|
* Improve Windows build support.Sebastiano Tronto2026-03-013-18/+18
| | | | | | | - Use multithreading (works with a sufficiently recent version of the Microsoft developer tools / C SDK). - Detect CPU architecture and use AVX2 or NEON when appropriate. - Automatically detect python installation path.
* Improve performance of H48 solver with prefetchingSebastiano Tronto2026-01-121-133/+242
| | | | | | | | | With this commit we re-structure how the node expansion in the H48 solution search works to allow prefetching of pruning values, showing performance improvements in the range of 30-45% on x86, depending on table size and solution length. A small bug fix related to appending solutions is included in this commit.
* Minor improvementSebastiano Tronto2025-12-191-2/+7
| | | | | | | | | Add a trivial check to H48 solver. The benchmarks show, surprisingly, a more noticeable improvement for larger solvers (h10, h11). I was expecting it to be more noticeable for smaller solvers. It is likely that this change is irrelevant to performance and all changes in the benchmark results are just random chance.
* Improve pruning value fetching and re-do benchmarksSebastiano Tronto2025-12-172-20/+37
|
* Move some checks around, small improvementSebastiano Tronto2025-12-171-11/+9
|
* Swap bit pairs in pval_minSebastiano Tronto2025-12-161-5/+4
|
* Update commentsSebastiano Tronto2025-12-142-5/+7
|
* Cleanup, update documentation, fix examplesSebastiano Tronto2025-12-145-234/+156
|
* Bye bye h0k4Sebastiano Tronto2025-12-145-310/+27
|
* Intertwined table seems to workSebastiano Tronto2025-12-147-27/+177
|
* Fix duplicate solutions, overflow in maxsols and improve symmetry reduction ↵Sebastiano Tronto2025-11-241-37/+41
| | | | | | | | | | | | for H48. This commit fixes two bugs: - A bug that caused duplicates solutions for symmetric scrambles. - An overflow in the maxsols parameter for the H48 solver, which caused it to find much fewer solutions than existed. Moreover, the H48 solvers has been improved by reducing by symmetry not only from the starting position, but also up to the first 4 moves.
* Made H48 solver safer for 32bit size_tSebastiano Tronto2025-08-111-2/+9
|
* Wrapped pthread use in custom APISebastiano Tronto2025-08-113-56/+65
|
* All coordinates unsignedSebastiano Tronto2025-07-298-74/+74
|
* Cleanup some TODOsSebastiano Tronto2025-07-293-8/+5
|
* Make failed assert exit immediatelySebastiano Tronto2025-07-282-6/+4
|
* Small fixesSebastiano Tronto2025-06-191-2/+2
|
* Trick fixSebastiano Tronto2025-06-181-6/+21
|
* Change min depth for H48 tasks heuristic sortSebastiano Tronto2025-06-181-1/+1
|
* Big speedup for H48 solver (heuristic sort of tasks)Sebastiano Tronto2025-06-181-19/+46
|
* More improvements to web solverSebastiano Tronto2025-05-301-8/+8
|
* Fix small build error with clangSebastiano Tronto2025-05-281-1/+2
|
* Removed VLA notation from function parameters.Sebastiano Tronto2025-05-272-8/+8
| | | | | I found out that this gives undefined behavior when then size is 0. Better not to have it at all, it is confusing for other developers anyway.
* Avoid pausing for logging only if poll_status() is null (h48 solver).Sebastiano Tronto2025-05-261-10/+7
| | | | | | | | | | | | This is a small amendment to c6a77f30f64be73a5e55e06336975f2ecfbb2324, which changed the way we log solutions while the h48 solver is running. With the method recently introduced, the main thread checks for solutions to log every 0.5 seconds, resulting in a possible slowdown of at most 0.5s per solve. The solutions are also logged when all worker threads are completed. With this new method, when the poll_status() callback function is NULL, which likely means nissy is not run interactively, we rely only on the final log on completion of the worker threads. This means less frequent logging, but at no performance cost.
* CleanupSebastiano Tronto2025-05-251-1/+2
|
* Quick fix for bugSebastiano Tronto2025-05-251-9/+8
|
* Do all loggin in main threadSebastiano Tronto2025-05-233-67/+113
| | | | | | | | | | | | | | | | | Before this committ, the solver (via the generic solution-appender routines in src/solve/solutions.h) and the H48 data generator did some logging in the worker threads, without using any locks. This was not nice, but in practice it did not cause any problem, because the log messages were rare. However, this turned out to be a problem when building to WASM, because web workers do not have access to the main JS memory, and therefore they cannot call functions from the main JS. This includes not only the callback functions for logging, but also those for polling the status of the solver (run / pause / stop). This commit fixes this at the cost or being somewhat inelegant: the solutions are not logged as they are found, but only every 500ms.
* Refactored checkdataSebastiano Tronto2025-05-194-92/+237
| | | | | | | | Relevant changes include: - Changed the signature of nissy_checkdata(). - Removed expected_distribution.h from tools; this data is now included in each solver's src/ code. - Removed distribution check for cocsep; may add back later.
* Refactor solver dispatch and checkdataSebastiano Tronto2025-05-186-86/+125
|
* Added build scriptSebastiano Tronto2025-05-071-1/+1
|
* Added stop / pause / resume solve to APISebastiano Tronto2025-04-291-5/+64
|
* NISSSebastiano Tronto2025-04-251-16/+15
|
* Adjusted solvers, fixed bugSebastiano Tronto2025-04-231-7/+8
|
* Update tests for oriented_cube_tSebastiano Tronto2025-04-221-2/+2
|
* Always use unsigned char * for data buffersSebastiano Tronto2025-04-215-73/+76
| | | | | Before this commit I was inconsistently using one of void *, char * and uint8_t *.
* Improved logging, especially for solveSebastiano Tronto2025-04-193-32/+41
|
* Sped up checkdata for H48 tablesSebastiano Tronto2025-04-172-9/+57
|
* Small rework of optimal vs maxsolsSebastiano Tronto2025-04-171-10/+12
| | | | | | | | | | | | | | I wanted to make the "optimal" and "maxsolutions" options mutually exclusive, but in the end I decided there is value in keeping both (e.g. for specifying a limit to the number of solutions when asking for "all" optimal"). Now optimal cannot be negative anymore, for the same reason of maxsolutions. The interface user (shell, UI) will have to take care of handling this in a way that makes sense for the user. Usually this means setting the maximum number of solutions to UINT_MAX (or a similar very high number) when the user wants "all optimal".
* Log solutions as they are foundSebastiano Tronto2025-04-151-3/+3
|
* Some minor changes to the interface.Sebastiano Tronto2025-04-081-1/+1
| | | | | | | | | - Simplified logger to accept only a string, not a variadic list of args like printf(). This can still use some improvement, but now it is easier to use from other languages. - Fixed some misuses of the logger (wrong types etc) - Renamed some constants - Fixed some typos in comments.
* simplified allowedmoves logicSebastiano Tronto2025-04-012-7/+18
|
* More safety with pointers using VLA function parametersSebastiano Tronto2025-03-259-91/+102
|
* Big cleanup for appendsolution()Sebastiano Tronto2025-03-241-163/+74
| | | | | | | | | | With this PR the appendsolution routine is extracted from the h48 solver and the new coordinate solver and made generic. This has many advantages: - less repetition (even if the two versions are different enough that *for now* it was not a big deal) - smaller h48/solve.h file, which is already a big beast - easier to test the appendsolution() routine separately
* Some safety with move arrays, small refactor appendcharSebastiano Tronto2025-03-223-32/+21
|
* Added checkdata for coord EOSebastiano Tronto2025-03-141-0/+1
|
* Working (?) version of coordinate solverSebastiano Tronto2025-03-091-4/+3
|
* More progress on coordinate solverSebastiano Tronto2025-03-071-1/+1
|
* Revert small errorSebastiano Tronto2024-12-182-5/+4
|

Generated with cgit - Back to sebastiano.tronto.net