Each year, the SC Conference seeks out new technologies with the potential to disrupt the HPC landscape as we know it. The Disruptive Technologies booths, located in the SC10 exhibit hall, will showcase technologies ranging from storage, programming, cooling and productivity software through presentations, and demonstrations.
So what do these disruptive technologies look like? I caught up with one of the exhibitors, Minesh B. Amin of MBA Sciences to talk about the company’s parallel version of Python and how it fits in bigger picture of disruptive technology.
insideHPC: What is your role at MBA Sciences?
Minesh Amin: As founder and CEO, I started MBA Sciences in 2006 to create products that enable the broadest possible range of users to exploit parallelism in a way that leverages existing serial talent and development tools, without sacrificing the power
and flexibility needed by proficient parallel programmers. Our SPM technology offers fault tolerance and functionality that scales from day one with the complexity of the user’s parallel application and solution requirements.
insideHPC: What is SPM Python?
Minesh Amin: SPM.Python is a scalable parallel version of the serial Python language that can be deployed to create parallel capabilities to solve problems in domains spanning finance, life sciences, electronic design, IT, visualization, and research. Software developers may use SPM.Python to augment new or existing (Python) serial scripts for scalability across parallel hardware.
Alternatively, SPM.Python may be used to better manage the execution of (potentially non-Python) applications in parallel in a fault tolerant manner taking into account hard deadlines, or combine the fault tolerance and resource management capabilities of SPM.Python with existing parallel enabling technologies and applications to gain the best of both worlds.
insideHPC: What problem does SPM Python solve?
Minesh Amin: SPM.Python is a commercial product based on patent-pending SPM technology that enables users to exploit parallelism. Simply put, SPM offers powerful parallel capabilities for managing both coarse and fine grain serial tasks coupled with a unique correct-by-construction methodology. This robust solution lets existing serial talent leverage modern computer systems and exploit parallelism across a broad range of applications and problem domains, without becoming parallel programmers. It minimizes the time and effort to create the initial implementation, without sacrificing the power and flexibility for future needs.
Imagine if you could:
- Validate your environment on the cluster in 40 lines or monitor it in 50 lines.
- Run builds or regressions in parallel, or perform what-if analysis of your parallel project in less than 400 lines. Parallelize an existing Python module with less than 60 additional lines.
- Launch and monitor any stand-alone application in a fault-tolerant manner with 50 lines of code.
- Perform architectural explorations and rapid prototyping of parallel solutions before committing to a parallel enabling technology or implementation.
The SPM core infrastructure is written in C++, but our initial effort is focused on delivering a solid product with Python as the language interface. It’s a powerful, expressing language that is widely used, yet it’s easy to learn and get started with.
insideHPC: Your site refers to an interesting analogy about an automobile’s API, can you tell me about that?
Exploiting parallelism with SPM technology empowers users to write applications using an API that is close to their intent, easy to relate to, and hides the details of how to manage the parallel aspects of the solution, eliminating the need for any proficiency in parallel programming. This is analogous to being able to drive a car without getting bogged down in the details of how the engine (parallel management) works.
Parallel management includes policies by which tasks are scheduled, premature terminations are handled, preemptive support is provided, communication primitives are enabled, and cores are obtained or released. SPM.Python provides parallel primitives that offer fault tolerance, support hard deadlines, formalize the manner by which tasks may be created and define how they are managed, and enable tasks to communicate in a way that avoids the vast majority of deadlocks.
In other words, we take care of the un-differentiated heavy lifting on the parallel side, while providing an API that maps easily to parallel management patterns and the user’s intent. The user would focus on writing the domain-specific serial tasks where they perform the differentiated heavy lifting and create value.
insideHPC: Why did you elect to exhibit in the SC10 Disruptive Technologies zone?
The Disruptive Technologies zone showcases technologies with the potential to change the face of HPC. It’s an honor to be selected as a participant, and in our demonstrations we’ll showcase unique capabilities that enable a broad spectrum of users to more easily produce correct-by-construction, robust scripts that exploit parallelism, and write parallel, fault-tolerant scripts in minutes.
insideHPC: I’m sure that programmers will want to know more. What is your call to action?
When it comes to leveraging modern computer systems, the challenge of our time is not to make existing serial talent proficient in parallel programming. Rather, the challenge is to be able to exploit parallelism in a way that allows us do simple things simply, leverage what we have when possible, yet with the power and flexibility to take us wherever we want to go.
Visit mbasciences.com to learn how you can create a working parallel skeleton application in minutes. Now you can decompose your problem using easy to understand parallel management patterns, and develop your domain-specific, differentiating functionality, while SPM.Python takes care of the heavy lifting on the parallel side, resulting in a scalable, fault tolerant solution. You can download a free trial edition today or visit us at SC10 in New Orleans to experience what is possible with less than a 100 lines of code.