My View David's view on anything and everything…

27Nov/13Off

Multi-Threaded

The next TerreSculptor build release will be available soon.
I had estimated for the end of November, but it looks like it will be sometime around the first or second week in December.  As usual, I have coded significantly more than what was originally planned for the build release.

This next build release will include the following features and more:

1.  The ability to open and save a TerreSculptor project file.
Please note that the initial file version will be limited in what application areas are saved to the file, such as the current Grid and Viewport settings, etc.
Additional application areas will be constantly added to the project file format over the next months of development, including the upcoming Terrain Stack which is where a lot of the application's future capabilities will be implemented.

2.  The ability to open and save Noisemap Generator settings to file.
Have you just created an awesome Noisemap?  Now you can save the settings to a file and open it again whenever you need.
The ability to add to and manage the dropdown list of Noisemap Presets is coming soon.

3.  A new Hold-and-Swap buffer for all Noisemap Generators.
A click on the Hold toolbar button will grab a copy of the current Noisemap parameter settings into the Hold Buffer.
You can then perform a few tweaks and adjustments to the Noisemap without losing the original settings that are in the Hold Buffer.
Then clicking on the Swap toolbar button will allow you to toggle between the current settings and the settings in the Hold Buffer for visual comparison.

4.  All Noisemap Generators are now fully multi-threaded.
The threading code design is not limited to a specific thread count and fully supports unlimited threads.

The imposed thread-count limitations are:
- The number of supported processors in the installed version of Windows.
- The number of threads supported by the installed physical processor(s).
- The number of lines in the Noisemap resolution (the length dimension).

A computer with a quad core processor and a noisemap that is equal or larger than X×4 resolution can use all four threads.
A computer with a quad core hyper-thread processor and a noisemap that is equal or larger than X×8 resolution can use all eight threads.
A computer with two xeon octal core hyper-thread processors and a noisemap that is equal or larger than X×32 resolution can use all thirty-two threads.

The use of more threads when executing algorithms is typically not a linear gain.  In other words, having twice as many threads does not always result in an execution time that is one-half.  The running threads have to share certain system resources such as access to memory.  So gains are typically slightly less than the total number of threads.

Intel processors with Hyper-threading do not supply the same throughput on a hyper-thread as they do on a core.  Typical performance benefits for hyper-threading are gains of 10% to 20%.  So a quad core hyper-threading processor will typically only see between 4.5× to 5× the performance increase with all 8 threads.

There is no benefit to specifying more threads than there are physical cores plus hyper-threads available.  Typically doing this results in negative performance improvements due to thread context and switching overhead.

I have an AMD Opteron 16-core system on the way and will post threading statistics on it in the very near future.  An Intel Xeon dual 8-core Hyper-thread system will be purchased in the near future for additional threading tests up to 32 threads.  These systems have to be workstations since many servers do not support the installation of a gaming-level PCIe x16 video adapter required to run TerreSculptor.

Multi-threading capabilities are also planned for many of the TerreSculptor Modifiers, Extractors and other Devices.

Here are some Noisemap Generator results using one of my systems:

Intel Core i7-2600K @ 3.4GHz 4-Core Hyper-thread (8 thread) Processor
16GB Mushkin Redline DDR3-1600 CL7 RAM
ASUS Sabertooth P67 Motherboard
Windows 7 Professional 64-bit
Heightmap dimensions of 4096×4096
Gradient Noise Preset: Eroded Rivers

1 thread = 26330 ms (26.33 seconds)

2 threads = 13190 ms (13.19 seconds) (Task Manager 25%)

1.996 times faster (199.62%)
Only 50.09% of the time that was required for a single thread execution.

4 threads = 7780 ms (7.78 seconds) (Task Manager 50%)

3.384 times faster (338.43%)
Only 29.54% of the time that was required for a single thread execution.

8 threads = 4890 ms (4.89 seconds) (Task Manager 100%)

Note that this will be 4 cores plus 4 hyper-threads.
5.384 times faster (538.45%)
Only 18.57% of the time that was required for a single thread execution.

-eof-

Comments (0) Trackbacks (0)

Sorry, the comment form is closed at this time.

Trackbacks are disabled.

Recent Posts

Categories

Links