Programming and Usability of Neuromorphic Computing
Neuromorphic computing is an emerging field in which we take inspiration from biological neural systems to build new types of computer architectures. The field is gaining popularity as one promising complement for traditional architectures in the computing landscape of the future. One key motivation for developing custom neuromorphic hardware is to achieve intelligent analysis with lower power and/or faster computation time, but there is also the possibility that these new architectures will be able to address current tasks in new, more efficient ways or that they may provide different insights on solving existing problems.
In order to begin to understand the capabilities of neuromorphic systems, we must first develop algorithms to program or train them to perform tasks and develop supporting software to interact with and understand the performance of neuromorphic devices. The tasks for this project include:
- Algorithm Development:
- Develop a training method based on evolutionary optimization that is applicable to a variety of neuromorphic hardware implementations.
- Create scalable implementations of the evolutionary optimization training method for use on HPC systems in order to train and study these systems on a large-scale.
- Supporting Software Development:
- Develop software simulators of at least two neuromorphic hardware implementations to study the properties of the neuromorphic architecture and allow for broader access to researchers who are unable to access existing devices.
- Develop visualization tools for understanding and interpreting the behavior of both neuromorphic implementations and the associated training process.
- Develop an application development environment for using a general neuromorphic system that will allow a novice user to utilize a variety of neuromorphic implementations.