Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
PhilipTrettner
searching Neon…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
7 ms
·
1.
▲
by
PhilipTrettner
5mo ago
that's a bit what the "repeated" scenario (roughly middle of the post) measures. It's not in work order but it is the same order every time, so caches work. And there you see that the working set size matters. Note that
2.
▲
by
PhilipTrettner
5mo ago
It definitely worked on myself :) Do have a look, I've tried to roughly keep it small and readable. It's ~250 LOC effectively. Also, this is CPU only. I'm not super sure what a good GPU version of my benchmark would be, thou
3.
▲
by
PhilipTrettner
5mo ago
I looked into this because part of our pipeline is forced to be chunked. Most advice I've seen boils down to "more contiguity = better", but without numbers, or at least not generalizable ones. My concrete tasks will already
4.
▲
How much linear memory access is enough?
(solidean.com)
80 points
by
PhilipTrettner
5mo ago
|
13 comments
5.
▲
by
PhilipTrettner
7mo ago
It's actually not a typo. Our "real" internal code starts with integer bounds on the inputs (say 2^26) and then computes for each subexpression how many bits are actually needed to exactly represent that. That can even lead t
6.
▲
by
PhilipTrettner
7mo ago
See https://godbolt.org/z/bYb7a38dG It's basically: long* and long long* (the pointer types) are not compatible, and uint64_t is the "wrong" typedef on linux, or at least inconsistent with the way the in
7.
▲
by
PhilipTrettner
7mo ago
We use them for exact predicates in our mesh booleans library. To really handle every degenerate case we even have to go quite a bit higher than 128bit in 3D.
8.
▲
by
PhilipTrettner
7mo ago
Sorry I'm a bit late to the party. long and long long are convertible, that's not the issue. They are distinct types though, so long* and long long* are NOT implicitly convertible. And uint64_t is not consistently the correct type