4 ms·
It's not clear that rejection sampling would be faster. Assmuning this is a graphics operation running on a GPU. Taking the sqrt is pretty optimized, and havin
by thomasahle 4y ago
It's not clear that rejection sampling would be faster.
Assmuning this is a graphics operation running on a GPU. Taking the sqrt is pretty optimized, and having a branch for every point to be sampled is not fun.
- jeffparsons 4y agoSpot on. A lot of graphics people in the thread point this out. (I am not a graphics person — I occasionally tinker, but mostly just appreciate it from a distance.)
- onedognight 4y agoRejection sampling doesn’t need sin/cos. What costs more, generating a random number and maybe a second or a random number and a sin/cos? This sounds very platform dependent. Note that when generating random points in the 4-ball (i.e. a quaternion)? The ball takes up a much smaller percentage of the space in the hypercube compared to the disk in a square, so rejections sampling can take many iterations.
- OskarS 4y ago> What costs more, generating a random number and maybe a second or a random number and a sin/cos You’re adding a very unpredictable loop branch and a bunch of data dependencies doing that. For GPUs (and maybe even CPUs), the sqrt way is almost certainly faster.
- gpderetta 4y agoIf you have ALUs to spare, you can generate multiple points in parallel, say 4, and it is likely that at least one is inside the disk and you can select it branchlessly. Then you only need to loop in the very very rare case.
- thomasahle 4y agoJust saying it's not clear and one would have to benchmark to find out.