The Code

To meet space constraints, we’ve published a complete standalone version of the program that actually uses delay loops to simulate being in the ODE package itself. This means that all the code listed strictly concerns the code that was written to introduce threading (two different ways) via Threading Building Blocks (see Example 11-62 and Example 11-63). This model program contains none of the ODE but behaves like the ODE at a high level. The timing delays in the listing simulate the effects of the real calls in the ODE such that the speedup results seem consistent with the trials we ran. The web site for this book has instructions on how to download a modified ODE as well, which actually incorporates these changes into the whole ODE.

Example 11-62. ODE: includes and delay placeholders

#include <stdio.h> #include <vector> #include <windows.h> #include "tbb\task_scheduler_init.h" #include "tbb\task.h" #include "tbb\parallel_for.h" #include "tbb\blocked_range.h" #include "tbb\tick_count.h" typedef int object_t; typedef std::vector<object_t*> world_t; typedef std::vector<object_t*> island_t; typedef std::vector<island_t*> islands_vector; const unsigned int N = 20000; // Weight of the computation complexity const int grain_size = 5; // Grainsize for parallel_for: hard to // find a good number if the // environment changes dynamically const int step_time = 1; // Time to spend processing one object // in dInternalStepIslandFast (solver) const int search_time = 1; // Time to spend ...

Get Intel Threading Building Blocks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.