- 18 Mar, 2020 1 commit
-
-
Remove the strict static memory allocation scheme in favour of placing objects on the heap at startup. This still keeps the requirements posed for modern, high performance embedded systems, but makes APIs a lot cleaner.
FritzFlorian committed
-
- 23 Feb, 2020 1 commit
-
-
We yield after num_thread failed steals in a row. This parameter can be tuned for better performance, but we stick to a sensible default just to prevent massive spinning.
FritzFlorian committed
-
- 09 Feb, 2020 2 commits
-
-
FritzFlorian committed
-
FritzFlorian committed
-
- 05 Feb, 2020 1 commit
-
-
FritzFlorian committed
-
- 30 Jan, 2020 1 commit
-
-
We still see very sporadic crashes, however the current version is at least a starting point for refactoring and debugging. Next steps have to be to re-enable tooling support (i.e. add code to let sanitizers do their work).
FritzFlorian committed
-
- 29 Jan, 2020 1 commit
-
-
The current version has race conditions and is hard to debug (especially because of the fibers, if a wrong thread executes on a fiber we get segfalts very fast). To combat this mess we now refactor the code bit by bit while also adding tests where it can be done with reasonably effort).
FritzFlorian committed
-
- 27 Jan, 2020 2 commits
-
-
The project is currently really messy and there are sporadic sigsevs. This indicates that we still have a race in our code. Thread Sanitizer does not work with our current implementation, as it needs annotations for fibers. The next step is to clean up the project and maybe add thread sanitizer support to our fiber implementation. This should help finding the remaining bugs.
FritzFlorian committed -
FritzFlorian committed
-
- 26 Jan, 2020 2 commits
-
-
FritzFlorian committed
-
FritzFlorian committed
-
- 23 Jan, 2020 1 commit
-
-
FritzFlorian committed
-
- 05 Dec, 2019 1 commit
-
-
The idea is to exclude as many sources as possible that could lead to issues with contention and cache misses. After some experimentation, we think that hyperthreading is simply not working very well with our kind of workload. In the future we might simply test on other hardware.
FritzFlorian committed
-
- 04 Dec, 2019 1 commit
-
-
FritzFlorian committed
-
- 29 Nov, 2019 3 commits
-
-
This version runs through our initial fft and fib tests. However, it is not tested further in any way. Additionally, we added a locking deque, potentially hurting performance and moving away from our initial goal.
FritzFlorian committed -
The main issue seems to still be the fact that we have a lock free protocol where a steal can be pending. We plan to remove this fact next by introducing a protocol that works on a single atomic update.
FritzFlorian committed -
The start_chain property does not make sense, as chains are purely 'virtual', i.e. they only fully exist when walking through the computation (by patching them on important events). We initially added the property as a helper for better runtime and simpler implementation, but we think without it we will not get as much inconsistency in the runtime state. Performance can be 're-added' later on.
FritzFlorian committed
-
- 27 Nov, 2019 2 commits
-
-
FritzFlorian committed
-
It is still not working, however we now have no more redundant code, making debugging it simpler.
FritzFlorian committed
-
- 07 Nov, 2019 1 commit
-
-
This showcases the expected performance when a task executes a sub-tree without inference from other threads. We target to stay about 6x slower than a normal function call.
FritzFlorian committed
-
- 06 Nov, 2019 1 commit
-
-
This first sketch of the classes captures what we think is needed in terms of general interface and very mich WIP.
FritzFlorian committed
-
- 05 Nov, 2019 1 commit
-
-
We changed how the memory is allocated from passing char* buffers to then store objects into to creating 'fat objects' for all scheduler state. This eases development for us, as we can make changes to data structures without too much effort (e.g. add a second array to manage tasks if required).
FritzFlorian committed
-
- 16 Sep, 2019 1 commit
-
-
This allows us to more easily handle them and makes their interface closer to std::thread.
FritzFlorian committed
-
- 02 Sep, 2019 1 commit
-
-
The scheduler yields if it failed to steal any work due to the task lists being empty. This should improve performance on multiprogrammed systems, as it potentially makes room for other worker threads which still have work to perform.
FritzFlorian committed
-
- 01 Aug, 2019 1 commit
-
-
This allows the stack and deque class to use the same offset, making it work better with each other.
FritzFlorian committed
-
- 18 Jun, 2019 1 commit
-
-
Threads must be joined on scheduler termination and tasks must be pushed onto the stack to allow better memory management.
FritzFlorian committed
-
- 12 Jun, 2019 1 commit
-
-
FritzFlorian committed
-
- 10 Jun, 2019 1 commit
-
-
FritzFlorian committed
-
- 07 Jun, 2019 1 commit
-
-
FritzFlorian committed
-
- 06 Jun, 2019 3 commits
-
-
FritzFlorian committed
-
FritzFlorian committed
-
This was highlighted as an issue in the steal_work routine, as frequent calls to virtual functions are expensive.
FritzFlorian committed
-
- 05 Jun, 2019 1 commit
-
-
FritzFlorian committed
-
- 04 Jun, 2019 2 commits
-
-
Please note that this does currently not execute, but only removed the 'old aspecs'. We are still missing launching the root fork_join task.
FritzFlorian committed -
FritzFlorian committed
-
- 03 Jun, 2019 1 commit
-
-
FritzFlorian committed
-
- 28 May, 2019 1 commit
-
-
FritzFlorian committed
-
- 10 May, 2019 1 commit
-
-
This is required to correctly execute multiple, consecutive wait_for_all calls in one fork_join_sub_task.
FritzFlorian committed
-
- 02 May, 2019 1 commit
-
-
FritzFlorian committed
-
- 30 Apr, 2019 1 commit
-
-
FritzFlorian committed
-