Sunday, May 30, 2010

Release of version 1.0.0 of Tonatiuh

We just released version 1.0.0 of Tonatiuh. This new release presents significant advances over previous ones. From a user point of view, the most important feature of the new release is the parallel computing capabilities.

Tonatiuh release 1.0.0 is able to detect the number of available processors in the computer it is running and adjust the number of parallel running threads it uses to execute the ray tracing loop accordingly.

The introduction of these parallel processing capabilities resulted in dramatic cuts in the time needed to execute the ray tracing loop. As shown in the Table, the number of seconds needed to trace 6 million rays over the geometry of the NREL Solar Furnace and the sun position configuration defined in the file “SolarFurnace_normal.tnh” that can be found in the Downloads section of the Tonatiuh website at Google code decreased from an average of 129 seconds under Windows and 70 seconds under Linux to an average of 26 seconds under Windows (79.9% decrease) and 21 seconds under Linux (69.4% decrease).

From Tonatiuh Blog Figures

Obviously, the reductions are the more significant the greater the number of available processors in the computer. This is proven by the fact that the larger decreases in the ray tracing loop execution time shown in the above table correspond to the computer labeled PC2, which is the only Quad-Core machine of all the computers used in the comparison –the other computer are Dual-Core machines.

Parallelization is not, however, the only relevant feature of Tonatiuh release 1.0.0. The new release uses the latest Qt, Simage, Coin, SoQt and Marble libraries. It uses Qt version 4.6.2, Simage version 1.7.0, Coin version 3.1.3, SoQt version 1.5.0, and Mable version 0.8. In addition, for the Windows version, the MinGW compiler was updated to make it able to use gcc version 4.5.

The code of the new Tonatiuh release underwent important architectural changes with respect to the previous one in order to implement parallelization. Furthermore, it was reviewed to eliminate redundancies, simplify the architecture, and achieve additional performance gains. The SceneModel class was simplified and the InstanceNode and the PhotonMapDefault classes were improved and speed up by selectively replacing the use of QList classes by the use of QVector classes, among other things.