Jacob Hummel edited 3-Visualization.tex  about 8 years ago

Commit id: 6c4328fd6faa3ac7b6372d6aab246de2744d882e

deletions | additions      

       

\code{Gadfly} includes three separate implementations of this algorithm, each of which is best suited to different conditions:  \begin{enumerate}  \item The primary implementation is written in \code{C}, parallelized using OpenMP, and wrapped in python using \code{scipy.weave}. This method must be locally compiled, and will fail if the python interpreter cannot locate a \code{C} compiler, or if the requisite libraries are not installed. However, it its the most powerful implementation, best suited to rendering many particles, and to machines with many processors available.  \item A second implementation makes use of \code{numba} \citep{LamPitrouSeibert2015}  to perform just-in-time (JIT) compilation of pure python code using the LLVM compiler infrastructure \citep{LattnerAdve2004}. The resulting serial routine is highly optimized, providing performance within a factor of two of the parallel method on a 16-core machine. As such, this method is preferable on smaller machines with fewer processors, and for visualizations including fewer particles where the additional overhead associated with the parallel implementation is significant. \item The final implementation is a pure python routine included only for situations where the other methods have unmet dependencies. This implementation is over 500 times slower than the others, and as such is suitable only to visualizing small numbers of particles, or as a last resort.  \end{enumerate}