amh-code
stdexec
| amh-code | stdexec | |
|---|---|---|
| 13 | 10 | |
| 793 | 2,143 | |
| 2.5% | 3.6% | |
| 10.0 | 9.4 | |
| about 3 years ago | 7 days ago | |
| Jupyter Notebook | C++ | |
| - | Apache License 2.0 |
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.
amh-code
- Performance Engineering: Algorithms for Modern Hardware
- Algorithms for Modern Hardware
- Show HN: Less Slow C++
I agree that it may not be the most readable format. So far, the best-structured piece on similar topics I’ve seen is Algorithmica: <https://en.algorithmica.org/hpc>.
I am sure it overlaps in terms of topics, maybe even some examples, but the homepage suggests that the book is about 500 pages long. I generally don’t have a time budget to read that much, and in most cases, I want to play with the code more than read the text, especially when some new IO_uring feature, a metaprogramming tool, or an Assembly instruction comes out.
Another observation is that people don’t like to read into 5000-word essays on each topic. At best, those become training materials for the next LLMs and will affect future code only indirectly…
I’m all ears for alternative formats if you have recommendations, as I generally reimplement such projects every couple of years ;)
- Ask HN: Recommendations for high quality, free CS books online
I recently stumbled on https://en.algorithmica.org/hpc/ which I absolutely loved. It's really well written, comprehensible and concise. It felt like a pleasure to read which I find really rare with CS textbooks and I feel like I've come out of it understanding how computers work a bit better
Does anyone have any similar CS books they'd recommend? Ideally they'd be:
- Ask HN: How can I learn about performance optimization?
I admire Daniel Lemire’s work on SIMD implementations. [Lemire]
[Lemire] https://lemire.me/en/#publications
I learn a lot by reading my compiler’s and profiler’s documentation.
For Rust, the Rust Performance Book by Nicholas Nethercote et al. [Nethercote] seems like a nice place to start after reading the Cargo and rustc books.
[Nethercote] https://nnethercote.github.io/perf-book/
Algorithms for Modern Hardware by Sergey Slotin [Slotin] is a dense and approachable overview.
[Slotin] https://en.algorithmica.org/hpc/
Quantitative understanding of the underlying implementations and computer architecture has been invaluable for me. Computer architecture: a quantitative approach by John L. Hennessy and David A. Patterson [H&P] and Computer organization and design: the hardware/software interface by Patterson and Hennessy [P&H ARM, P&H RISC] are two introductory books I like the best. There are three editions of the second book: the ARM, MIPS and RISC-V editions.
[H&P] https://www.google.com/books/edition/_/cM8mDwAAQBAJ
- Algorithms for Modern Hardware – Algorithmica
- Ask HN: Programming Courses for Experienced Coders?
Hello, recently I've enjoyed Casey Muratori's Performance-Aware Programming course[0]. You could read Algorithms for Modern Hardware[1] to learn similar set of stuff though. Casey's course is aimed at bringing beginners all the way to a nearly-industry-leading understanding of performance issues while the book assumes a bit more knowledge, but I think a lot of people have trouble getting into this stuff using a book if they don't have related experience.
I've also found Hacker's Delight Second Edition[2] to be a useful reference, and I really wish that I would get around to reading What Every Programmer Should Know About Memory[3] in full, because I end up reading a bunch of other things[4] to learn stuff that's surely in there.
[0]: https://www.computerenhance.com/p/welcome-to-the-performance...
[1]: https://en.algorithmica.org/hpc/
[2]: https://github.com/lancetw/ebook-1/blob/80eccb7f59bf102586ba...
[3]: https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
[4]: https://danluu.com/3c-conflict/
stdexec
- Show HN: Less Slow C++
- Show HN: Coros – A Modern C++ Library for Task Parallelism
Have you compared perf with the reference implementation of the P2300 “Senders” proposal? https://github.com/NVIDIA/stdexec
- How to write networking code now that will be easiest to adapt to the upcoming standard?
I searched for more information, and here are some relevant links, in case anybody else is interested: * https://www.reddit.com/r/cpp/comments/zdogz9/new_c_sender_library_enables_portable_asynchrony/ * https://github.com/nvidia/stdexec * https://www.reddit.com/r/cpp/comments/10b76e3/stdexecution_from_the_metal_up_paul_bendixen/ * https://www.reddit.com/r/cpp/comments/st9bjm/p2300_senderreceiver_is_dead_in_the_water_for_c23/
- concurrencpp version 0.1.6 has been released!
- Customization Function Objects - Status?
The last direct news about the status of P2547R1 that I'm aware of was with the Soursop and Ponies in Kona blogpost in November 22. r/cpp looks to not have discussed CPOs directly when the post was linked. Indirectly, this Github issue hints that there is a strong possibility of no language alternative available by C++26.
- Are Boost.coroutine2 coroutines still relevant now we have c++20 coroutines ?
Coroutine task types and other awaitables are well supported by the P2300 std::execution proposal. Take a look at https://github.com/NVIDIA/stdexec Coroutines in general are good at suspension and resumption, but they need a place to run and something to resume them. That's what the sender/receiver framework provides.
- STUDY Buddy - C++ | Accelerated Computing
Looking for a Study Partner (for SERIOUS learning), in the fields of Robotics | Accelerated Computing.I am studying Electrical Engineering (5 out of 7 semesters) and live in Germany. But yeah, College sucks and I mostly use online resources like NVIDIA's DLI, Coursera, edX, Educative and O'Reilly. [I really don't understand how these aren't the new Universities/Colleges. All I know I learned either from there or Youtube, Udemy or Books. College is actually what is slowing me down. It's such a waste of my time and resources. I asked ONE thing from them, and still, that was too much. They didn't do it.Anyway...I am currently going through/finally sorting out some Data Structures and Algorithms stuff (specially Graphs) and my plans/next goals are 1 - Go through C++'s P2300 Proposal and try to understand it along with NVIDIA's stdexec implementation, 2 - Take NVIDIA's CUDA C++ Course, 3 - Get started with Computer Vision [probably using NVIDIA again haha, along with OpenCV)
- New C++ Sender Library Enables Portable Asynchrony
Libunifex inspired P2300, but the design of P2300 has evolved since then and libunifex has not kept pace. stdexec is a faithful and up-to-date implementation of P2300. It also adds GPU support and a small number of schedulers and utilities not in P2300.
- P2300 (Sender/Receiver) is DEAD in the water for C++23 !!!
It is on Github, btw: https://github.com/brycelelbach/wg21_p2300_std_execution
- Asynchronous Stacks and Scopes
I can't really argue that composing algorithms either using function call or pipe syntax is more readable than coroutines. I'll say this: right now P2300 is missing some discussion of how senders can be made trivially awaitable in a coroutine (and awaitables are senders by definition). If coroutines are your preferred syntax, sender/receiver is still a sound basis. Those parts of P2300 are currently under code review. You can find the PRs here.
What are some alternatives?
branchless-binary-search - Binary search implementation that avoids branch instructions
concurrencpp - Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all
sb_lower_bound - Fastest Branchless Binary Search
libunifex - Unified Executors
ThinkingInSimd - An essay comparing performance implications of ignoring AVX acceleration
coros - An easy-to-use and fast library for task-based parallelism, utilizing coroutines.