Former employee and current collaborator with Shodor. I have worked with XSEDE to host multiple discussions on Computational Science on campus.
Mentor Has Been in XSEDE Community
4-5 years
Project Title
Creation of an Updated GalaxSee Interface
Summary
GalaxSee is a program designed to teach issues in high performance computing surrounding the gravitational N-Body problem, and has been built in the past to run on Macs, PCs, Web Servers, in Java applets, on HPC clusters, and on the LittleFe parallel computing environment. We would like to update the current PC/Mac interface to run on the most recent OS versions, adding in the feature set parallelism that can be enabled for both multi-core through OpenMP and many-core if a suitable GPGPU is present. Additionally, we would like to add a steered mode to communicate with GalaxSee-HPC running on a remote XSEDE cluster, and update GalaxSee-HPC to make use of OpenMP and GPGPU based parallelism.
Job Description
The Application for this project is the gravitational N-Body problem, focused on a few key scenarios. First, planetary and asteroid orbits, with preset systems based on our own solar system and multiple suspected planetary systems, and random asteroids to probe gravitational stability in planetary systems. An additional random system mode with collisions in which bodies can be accreted from smaller objects and momentum can be conserved will also be included. Second, stellar clusters will be included, with a focus on the evolution of clusters and the evidence supporting the virial theorem. Third, gravitational structure will be included, with pre-sets to study the rotation and flattening of a large gravitationally bound system with initial angular momentum. Fourth, collisions of galaxies, with presets to understand the role of collision in galactic structure. Finally, large scale structure, using a Universe-In-A-Box model. The Algorithms used will allow for study of different numerical integrators typical in N-Body calculations including symplectic integrators, Runge-Kutta integrators, and predictor-corrector integrators. A direct calculation of forces will be allowed as one option, a tree-based approximation to the far field will be included, and a Particle-Particle Particle-Mesh far field implementation with a Fourier transform based solution of Poisson's equation for gravity will be used for the Universe-In-A-Box to allow for periodic boundary conditions. The Architecture for initial development will be Unity Game Engine running on Windows 10 based PCs and MacOS X based Macs. The interface will be designed in C# in Unity, and the numerical code will be in a separate C++ based dynamic link library, and calculations will be run in a separate thread from the interface. Preliminary work has been done on the interface as part of a project studying the visualization of asteroid orbits, and the numerical work described above all currently exists in GalaxSee HPC. The student duties will be to develop an interface in Unity to connect to GalaxSee HPC running as a dynamic link library. This will involve programming the UI level to implement the options from previous versions of GalaxSee for Mac, Windows, and Java. A prototype Unity model that implements C# threading for separating computation and interface as well as dynamic library loading to perform computation in optimized C/C++ will be adapted. GalaxSee HPC, written in C/C++, which currently implements parallelism using MPI, will be extended to also provide options for OpenMP and GPU based parallelism. Time permitting, a sockets based extension to allow for connecting to an instance of GalaxSee HPC on a remote server will also be developed. The primary student skill will be Unity Game Engine design and C# programming, with secondary skills in C/C++, OpenMP and CUDA, and sockets.
During Summer 2018, the student focused on validation testing of the numerical algorithms in the updated software. During Fall 2019, the student has added file reading and menu interfaces to the revised version.
Spring 2019 will focus on field testing of the user interface and improvements to the menu system, as well as integration with and update of existing curriculum documents. Additionally, OpenMP based parallelism will be implemented.
Computational Resources
GalaxSee HPC will be adapted first for use on a local workstation to implement OpenMP and CUDA based parallel calculation of direct gravitational forces, as well as descent of the tree-based structure in Barnes-Hut mode, which is currently implemented using MPI. This will then be tested on XSEDE resources to determine optimum scaling for problem sizes appropriate for classroom instruction. As the sockets-based connection is developed, it will be tested and implemented for use with XSEDE resources.
Contribution to Community
Position Type
Apprentice
Training Plan
The student was part of a research-based course in Spring of 2017 (STME 2903 Research Experience) that provided introductory training in Unity Game Engine programming, during which the student performed tutorials on creation and control of objects using C# scripts. The student was involved specifically in the development of programmable shaders to create volumetric renderings in Unity. Lesson plans surrounding GalaxSee HPC have already been developed for the BWSIP (see http://www.shodor.org/petascale/materials/UPModules/NBodyScaling/), which will be used as the basis for training on the fundamentals of N-Body physics as well as the algorithms needed in solving them. The student's training will start with the familiarization of compiling and running GalaxSee HPC, and documentation of the GalaxSee HPC API. The student will compile GalaxSee HPC to a shared library, and write simple driver programs to call GalaxSee HPC functions in order to understand how the library is used. Example programs that implement shared libraries within a prototype interface will be provided to the student for study.
Since the beginning of the internship summer 18, the student has shown an increasing self-reliance and ability to direct his own work on the project as well as to acquire needed skills through existing resources and what he has learned in his coursework.
Student Prerequisites/Conditions/Qualifications
This is a renewal application for an existing internship position started in May 2018.