With the completion of the Myriad Phase I SBIR, I thought I’d share some metrics on what was accomplished in six months of effort.
- 15,000 lines of code
- 400+ concurrent processes demonstrated on a single mid-range 2016 computer:
- 1 data “ingestor” to read data;
- 2 “scalers” to consider each input at multiple scales;
- 4 preprocessors;
- 128 “sliding windows” to scan across each input at each scale to extract subsets;
- 256 “damage detectors” that use a machine learning model to scan data subsets for indications of damage; and
- 32 “reporters” that listen to the reports from the damage detectors and compile the results.
- 45 pages of documentation
- 28 minutes of demonstration videos
- 9 sample applications for developers
- 2 desktop applications for end users
NASA’s Phase I SBIR schedule can be challenging to meet, particularly since it usually requires the first demonstration of feasibility no later than the third month of effort. Things went well on this project on that front – by the end of the second month we had enough of the basic framework in place that we could demonstrate how a Myriad-based machine learning model could be taught to recognize indications of cracks, corrosion, and other types of damage in sensor data; and then build a concurrent processing pipeline in Myriad to run multiple instances of the model concurrently to rapidly scan large amounts of data for structural damage. We were even able to add experimental OpenCL support, which will eventually let you use your GPU, Xeon Phi, etc. to accelerate calculations. If Myriad finds a suitable hardware accelerator it picks the “best” (based on number of CUDA cores / stream processors) device for acceleration and if nothing’s found it falls back to conventional CPU calculations, all without changing a single line of code or configuration.
Very heavy emphasis on “experimental support” though – ask me about the denial of service attack I launched on my GPU sometime. Not recommended for production use! 🙂
All in all I think the project went quite well and I hope to be able to continue work on cleaning up the code to make it easier to use and add a few more features and functions.