1## Commercial games using the TaskScheduler 2 3Skyforge PC 4https://sf.my.com/ 5 6Skyforge PS4 7https://www.playstation.com/en-us/games/skyforge-ps4/ 8 9 10 11## About 12 13**Multithreaded task scheduler experiments.** 14 15**Written under the influence by great GDC talk "Parallelizing the Naughty Dog engine using fibers" by Christian Gyrling** 16 17Compiled and worked on : **Clang 3.4, GCC 4.8.2, MSVC 2010, XCODE 6.4** 18 19 20## Build status 21 22Linux + OS X 23 24 25Windows 26 27 28 29 30## Useful reading (in random order): 31 32Parallelizing the Naughty Dog engine using fibers by Christian Gyrling 33 34http://www.swedishcoding.com/wp-content/uploads/2015/03/parallelizing_the_naughty_dog_engine_using_fibers.pdf 35 36id Tech 5 Challenges 37From Texture Virtualization to Massive Parallelization by J.M.P. van Waveren 38 39http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf 40 41Doom3 BFG Source Code Review: Multi-threading by Fabien Sanglard 42 43http://fabiensanglard.net/doom3_bfg/threading.php 44 45How Ubisoft Develops Games for Multicore - Before and After C++11 by Jeff Preshing 46 47http://www.youtube.com/watch?v=X1T3IQ4N-3g 48 49Killzone Shadow Fall: Threading the Entity Update on PS4 by Jorrit Rouwe 50 51http://www.slideshare.net/jrouwe/killzone-shadow-fall-threading-the-entity-update-on-ps4 52 53Killzone Shadow Fall Demo Postmortem by Michal Valient 54 55http://www.guerrilla-games.com/presentations/Valient_Killzone_Shadow_Fall_Demo_Postmortem.pdf 56 57Infamous Second Son : Engine Postmortem by Adrian Bentley 58 59http://adruab.net/wp-images/GDC14_infamous_second_son_engine_postmortem.pdf 60 61Multithreading the Entire Destiny Engine - GDC 2015 by Barry Genova 62 63http://www.gdcvault.com/play/1022164/Multithreading-the-Entire-Destiny (members only) 64http://chomikuj.pl/dexio21/GDC+2015/GDC+Vault+-+Multithreading+the+Entire+Destiny+Engine,4690817362.mp4%28video%29 65 66 67Intel Threading Building Blocks - Scheduling Algorithm 68 69https://www.threadingbuildingblocks.org/docs/help/reference/task_scheduler/scheduling_algorithm.htm 70 71CILK/CILK++ and Reducers 72 73http://www.slideshare.net/yunmingzhang/yunming-zhang-presentations 74 75Task Scheduling Strategies by Dmitry Vyukov 76 77http://www.1024cores.net/home/scalable-architecture/task-scheduling-strategies 78 79Implementing a Work-Stealing Task Scheduler on the ARM11 MPCore 80 81http://www.rtcgroup.com/arm/2007/presentations/211%20-%20Implementing%20a%20Work-Stealing%20Task%20Scheduler.pdf 82 83Lost Planet graphics course for 3D game fan of Nishikawa Zenji 84 85http://game.watch.impress.co.jp/docs/20070131/3dlp.htm 86 87Dragged Kicking and Screaming: Source Multicore by Tom Leonard 88 89http://www.valvesoftware.com/publications/2007/GDC2007_SourceMulticore.pdf 90 91Games: Playing with Threads by Ben Nicholson 92 93http://www2.epcc.ed.ac.uk/downloads/lectures/BenNicholson/BenNicholson.pdf 94 95Work Stealing by Pablo Halpern 96 97https://github.com/CppCon/CppCon2015/tree/master/Presentations/Work%20Stealing 98 99Enki Task Scheduler by Doug Binks 100 101http://www.enkisoftware.com/devlogpost-20150822-1-Implementing_a_lightweight_task_scheduler.html 102 103http://www.enkisoftware.com/devlogpost-20150905-1-Internals_of_a_lightweight_task_scheduler.html 104 105Molecule Engine blog - Job System 2.0 by Stefan Reinalter 106 107http://blog.molecular-matters.com/2015/08/24/job-system-2-0-lock-free-work-stealing-part-1-basics/ 108 109http://blog.molecular-matters.com/2015/09/08/job-system-2-0-lock-free-work-stealing-part-2-a-specialized-allocator/ 110 111http://blog.molecular-matters.com/2015/09/25/job-system-2-0-lock-free-work-stealing-part-3-going-lock-free/ 112 113Molecule Engine blog - Building a load-balanced task scheduler by Stefan Reinalter 114 115http://blog.molecular-matters.com/2012/04/05/building-a-load-balanced-task-scheduler-part-1-basics/ 116 117http://blog.molecular-matters.com/2012/04/12/building-a-load-balanced-task-scheduler-part-2-task-model-relationships/ 118 119http://blog.molecular-matters.com/2012/04/25/building-a-load-balanced-task-scheduler-part-3-parent-child-relationships/ 120 121http://blog.molecular-matters.com/2012/07/09/building-a-load-balanced-task-scheduler-part-4-false-sharing/ 122 123Do-it-yourself Game Task Scheduling by Jerome Muffat-Meridol 124 125https://software.intel.com/en-us/articles/do-it-yourself-game-task-scheduling 126 127Acquire and Release Semantics by Jeff Preshing 128 129http://preshing.com/20120913/acquire-and-release-semantics/ 130 131Lockless Programming Considerations for Xbox 360 and Microsoft Windows 132 133https://msdn.microsoft.com/en-us/library/windows/desktop/ee418650(v=vs.85).aspx 134 135C/C++11 mappings to processors by Peter Sewell 136 137https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html 138 139Memory Ordering in Modern Microprocessors, Part I by Paul E. McKenney 140 141http://www.linuxjournal.com/node/8211/print 142 143Memory Ordering in Modern Microprocessors, Part II by Paul E. McKenney 144 145http://www.linuxjournal.com/node/8212/print 146 147In Praise of Idleness by Bruce Dawson 148 149https://randomascii.wordpress.com/2012/06/05/in-praise-of-idleness/ 150 151Implementing Scalable Atomic Locks for Multi-Core Intel® EM64T and IA32 Architectures by Michael Chynoweth 152 153https://software.intel.com/en-us/articles/implementing-scalable-atomic-locks-for-multi-core-intel-em64t-and-ia32-architectures/ 154 155Benefitting Power and Performance Sleep Loops by JOSEPH O., Michael Chynoweth, Tom Propst 156 157https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops 158