Hello, thanks everyone for helping me putting this into a reasonable shape.
My short-term plans with futures-sort are currently to check how various construct could be improved (or'ing of touched futures is really just a quick hack for example). Also I'd like to investigate why it didn't work for me when I used the futures example in documentation[1] - that is to perform one half of the computation in current context and then touch future with the other half. Feature-wise I'd like to implement a version that returns a fresh vector. However I want to avoid any unnecessary copying so I want ot use similar approach as with swapping/keeping for cnt=1 or 2. With this ready it should be a faster drop-in replacement for all (fx)vector sorting functions. I am not sure if similar approach is viable for lists. And yes, it needs real tests. However I am not sure what kind of reproducible tests to add there. Especially that the parallelism may not be available on given platform. Maybe creating reasonably small vector of random numbers with static seed and force two "parallel" futures no matter what is available? Also today I published on our company blog[2] (no need to follow this link) some benchmarking results obtained on ThinkPad x280[3] (4 cores, 8 HT) and on a VM running on Intel Xeon with 16 cores / 32 HT with 16 VCPUs assigned to the VM[4]. I measured 10 runs for each N where N was n*2^18 for n in 1 to 255 which covers the range from 0 to 2^24 or roughly 16M. All times are measured using time-apply and the resulting data set was processed with Gnuplot and empirical data were fitted using f(x)=a*n*log2(n). A few interesting remarks - once we reach the HTs (and not just cores), the memory starts to be a real bottleneck. Hence the small difference between depth=2 and depth=3 on i7. Also for depth=3 and depth=4 sometimes Racket just hung and I had to restart the tests. I will try to create a minimal working example where futures can block indefinitely. Does anyone have similar experience for example with pmapf? Cheers, Dominik [1] https://docs.racket-lang.org/guide/parallelism.html#%28part._effective-futures%29 [2] https://trustica.cz/en/2019/10/10/parallel-merge-sort-leveraging-futures-in-racket/ [3] https://trustica.cz/wp-content/uploads/2019/10/futures-sort-telperion.png [4] https://trustica.cz/wp-content/uploads/2019/10/futures-sort-builder.png -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/f9bdae48-d027-9ed4-0cc3-e97f230a7b21%40trustica.cz.