Not skepticism but I’d love to see ways for defining scheduled work. The ones I’ve seen haven’t felt that great so far. BTW, in rendering, the concept of render graphs / frame graphs is really similar to dod but for graphics/gpu. It’s uncannily similar, very weird.
-
-
Vastauksena käyttäjille @Atrix256 ja @vengefularia
You should check out my couple of blog posts on Mana Engine, a thread-safe game engine that is DoD and scheduled similarly to a frame graph. https://medium.com/@tloch14/mana-engine-achieving-thread-safety-1143dd3deae5 … I haven't kept up with the posts, so information is kinda light. HMU if you want to know more.
6 vastausta 6 uudelleentwiittausta 29 tykkäystä -
When i hear about multithreading stuff the questions i have are: Do you have a dynamic model (spawning tasks at runtime?). Do you use a fork-join model? Do you do task stealing? Do you do partitioning? Do you have task dependencies? If yes what do you do about deadlocks?
6 vastausta 0 uudelleentwiittausta 0 tykkäystä -
Partitioning: I am not sure what this refers to.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
With respect to threading, do you rely on the OS's thread scheduler (1 task per thread) or do you partition the task space into sub-groups that you assign to each thread? If you have lots of tasks, relying on OS's scheduler might not be the best idea:https://en.wikipedia.org/wiki/Partition_problem …
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
There is 1 thread per core (or fewer threads than cores, configurable via .ini). All tasks are put into a queue and picked up by workers. There is no main thread, per se. main thread gets stuff going then just becomes a worker.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
If enabled, each worker has an affinity set to a core #. So the third worker will always run on the third core. You can set groups of tasks to only run on certain cores (ie, async tasks never run on “frame reserved” cores.)
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
Thank you for the explanation. The model looks to me like Cilk's model ( https://en.wikipedia.org/wiki/Cilk ) which i liked a lot, but ultimately failed. IMHO, in the end all that matters is if the part of the model that depends on certain programmer abilities, can be satisfied or not.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
The underlying task system does have many similarities to Cilk. The Mana Engine itself is more about defining data dependencies and guaranteeing safe access to data.
3 vastausta 0 uudelleentwiittausta 0 tykkäystä -
The problem with manually defined data dependencies is that it is very easy for people to fall in either under- or over- definition of dependencies. If a dependency is omitted (which BTW can easily happen even in the over-definition case) then safety cannot be guaranteed.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä
The engine will not compile if you attempt to access a data type that you have not pre-declared access to. Safety is guaranteed.
Lataaminen näyttää kestävän hetken.
Twitter saattaa olla ruuhkautunut tai ongelma on muuten hetkellinen. Yritä uudelleen tai käy Twitterin tilasivulla saadaksesi lisätietoja.