Intel's New Chimera: Alder Lake

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

AppSignal - Monitoring that respects your time & budget
APM, error tracking, and dashboards for modern web apps. Ten-minute setup, transparent flat pricing, and support from engineers who actually use the product.
www.appsignal.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. Mono

    Mono open source ECMA CLI, C# and .NET implementation.

    It was a bit more complicated than that: the issue was that one of the early big.LITTLE designs (Samsung's Exynos 8890) had different cacheline sizes on the big and little cores.

    glibc's `__clear_cache` would cache the cacheline size on first call, so if the program was started on a big core then migrated onto a little core it would only flush every other cacheline.

    And the mitigation was not to "change its allocation", it was to bypass libgcc and handroll cache clearing: https://github.com/mono/mono/pull/3549

    Source: https://www.mono-project.com/news/2016/09/12/arm64-icache/

    And this issue didn't only affect Mono, it affected pretty much any JIT running on that phone e.g. dolphin (https://github.com/dolphin-emu/dolphin/pull/4204) and ppsspp (https://github.com/hrydgard/ppsspp/pull/8965) had been hitting the same issue and adopted mono's fix, PPSSPP hadn't been able to find the root cause so they'd originally implemented a gnarly hack by adding a bunch of padding (https://github.com/hrydgard/ppsspp/pull/8769).

    But fundamentally this is the 8890 being broken: as the Mono post notes, technically nothing precludes core migration in the middle of clearing the cache, which would also lead to broken behaviour, with no mitigation.

  2. AppSignal

    Monitoring that respects your time & budget. APM, error tracking, and dashboards for modern web apps. Ten-minute setup, transparent flat pricing, and support from engineers who actually use the product.

    AppSignal logo
  3. dolphin

    Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.

    It was a bit more complicated than that: the issue was that one of the early big.LITTLE designs (Samsung's Exynos 8890) had different cacheline sizes on the big and little cores.

    glibc's `__clear_cache` would cache the cacheline size on first call, so if the program was started on a big core then migrated onto a little core it would only flush every other cacheline.

    And the mitigation was not to "change its allocation", it was to bypass libgcc and handroll cache clearing: https://github.com/mono/mono/pull/3549

    Source: https://www.mono-project.com/news/2016/09/12/arm64-icache/

    And this issue didn't only affect Mono, it affected pretty much any JIT running on that phone e.g. dolphin (https://github.com/dolphin-emu/dolphin/pull/4204) and ppsspp (https://github.com/hrydgard/ppsspp/pull/8965) had been hitting the same issue and adopted mono's fix, PPSSPP hadn't been able to find the root cause so they'd originally implemented a gnarly hack by adding a bunch of padding (https://github.com/hrydgard/ppsspp/pull/8769).

    But fundamentally this is the 8890 being broken: as the Mono post notes, technically nothing precludes core migration in the middle of clearing the cache, which would also lead to broken behaviour, with no mitigation.

  4. ppsspp

    A PSP emulator for Android, Windows, Mac, Linux and iOS, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues.

    It was a bit more complicated than that: the issue was that one of the early big.LITTLE designs (Samsung's Exynos 8890) had different cacheline sizes on the big and little cores.

    glibc's `__clear_cache` would cache the cacheline size on first call, so if the program was started on a big core then migrated onto a little core it would only flush every other cacheline.

    And the mitigation was not to "change its allocation", it was to bypass libgcc and handroll cache clearing: https://github.com/mono/mono/pull/3549

    Source: https://www.mono-project.com/news/2016/09/12/arm64-icache/

    And this issue didn't only affect Mono, it affected pretty much any JIT running on that phone e.g. dolphin (https://github.com/dolphin-emu/dolphin/pull/4204) and ppsspp (https://github.com/hrydgard/ppsspp/pull/8965) had been hitting the same issue and adopted mono's fix, PPSSPP hadn't been able to find the root cause so they'd originally implemented a gnarly hack by adding a bunch of padding (https://github.com/hrydgard/ppsspp/pull/8769).

    But fundamentally this is the 8890 being broken: as the Mono post notes, technically nothing precludes core migration in the middle of clearing the cache, which would also lead to broken behaviour, with no mitigation.

  5. rayon

    Rayon: A data parallelism library for Rust

    > On a single machine I can just replace an `.iter()` into a `.par_iter()` in my Rust programs and boom, I parallelized my workload across every core with only a single line change.

    If you’re using Rayon for anything you expect to benefit from a lot of cores, my experiences have been very negative in the past. Rayon is extremely inefficient once you allow it to use more than a handful of cores.[0]

    If your unit of work is absolutely massive, you might not be as affected by Rayon’s scheduler, but it makes me sad that this issue still hasn’t been resolved. My comment on that thread was almost 4 years ago! And the issue itself is almost a year older than that.

    I no longer consider Rayon to be an advantage for Rust. There are plenty of good ways to wire up a parallel work pool, but they do require more than a one line change.

    [0]: https://github.com/rayon-rs/rayon/issues/394

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Unity Game Hacking - Calling FindObjectsOfType in C++

    2 projects | dev.to | 20 Nov 2024
  • How exactly does Unity integrate with IDEs - how does the editor build work?

    1 project | /r/Unity3D | 23 Jul 2023
  • Is there anything inherently wrong with .net applications for self-hosting? (especially in terms of privacy)

    2 projects | /r/selfhosted | 21 Jun 2023
  • Mono: A Simple UI/Web/Desktop/Mobile Framework Written in Nim

    2 projects | news.ycombinator.com | 11 Jun 2023
  • How do I get the target framework assemblies for version 4.6.2 (Or any version) on Linux?

    1 project | /r/dotnet | 11 Jun 2023

Did you know that C++ is
the 7th most popular programming language
based on number of references?