SlideShare a Scribd company logo
Neptune
A Domain Specific Language for Deploying HPC
       Software on Cloud Platforms


Chris Bunch Navraj Chohan Chandra Krintz
             Khawaja Shams

 SoCal Spring 2011 @ Harvey Mudd College
               April 16, 2011
Cloud Computing

• Three tiers of abstraction:
• Infrastructure: Scalable hardware
• Platform: Scalable APIs
• Software: Scalable application
HPC in the Cloud
• Hard to automatically configure and deploy
  libraries
  • Especially for the average user
• Hard to get high performance on opaque
  cloud
• Wide range of APIs for similar services
  (e.g., compute, storage)
Introducing Neptune

• A Domain Specific Language that facilitates
  HPC configuration and deployment
• Serves High Throughput Computing (HTC)
  as well as Many Task Computing (MTC)
• Part language component, part runtime
  component
Design
• Language - Consists of metaprogramming
  extensions to Ruby
• Runtime - Operates at cloud platform layer
 • Can control VMs as well as applications
• Can act standalone or as a library to
  existing Ruby programs
Syntax

neptune :type => “service-type”,
   :option1 => “setting-1”,
   :option2 => “setting-2”
Semantics
• Options are unique per job
 • Not all jobs are equal
• Uses Ruby’s dynamic typing so option and
  setting types can be dynamic
• Extensible - add your own job types /
  options / settings
Semantics

• Neptune jobs return a hashmap
 • :result is either :success or :failure
 • Additional parameters are job-specific
• Customizable per job
Design

• Need something more than XML
 • Need to control the execution
• Allows for integration with Rails
• Code is reusable across job types
 • e.g., job input / output / ACLs
To Run a Job:

• Minimum set of requirements for jobs:
 • Acquire resources
 • Run job
 • Get output
• Leverage AppScale cloud platform
AppScale

• Open source implementation of the
  Google App Engine APIs
• Can deploy to Amazon EC2 or Eucalyptus
• Standard three tier deployment model:
• Load balancer app server database
AppScale Tools
• Modified the command line tools
• Added support for placement strategies
 • e.g., hot spares for HPC computation
• Added hybrid cloud support
 • Can run in Amazon EC2 and Eucalyptus
    simultaneously
AppController
• A special daemon on all systems that
  configures necessary services
• Now acts as part of Neptune’s runtime
  component
• Can receive Neptune jobs
• Acquires nodes from infrastructure,
  configures, and deploys as needed
Virtual Machine Reuse
• Machines are charged by the hour - so
  keep them for an hour in case users need
  them later
• Scheduling policies - hill climbing algorithm
  used based on execution time or total cost
• Relies on user to specify how many nodes
  the code can run over
Message Passing
      Interface (MPI)
• Many implementations exist - we use the
  most commonly used version (C/C++)
• Data is shared via NFS
• User specifies how many nodes are
  needed, and processors are to be used, and
  where their code is located
X10
• IBM’s effort at simplifying parallel
  computing
• Java-like syntax, no pointers needed
• Can use Java backend or MPI backend via
  C++
• Thus, same parameters as MPI jobs
• Popularized by Google in 2004
• Neptune supports both ‘flavors’:
 • Regular: Write Java Mapper and Reducer,
    specify a single JAR for execution and
    main class
 • Streaming: Write code in any language,
    specify location of Map and Reduce files
Stochastic Simulation
      Algorithms
• Computational scientists do large numbers
  of Monte Carlo simulations
• Embarassingly parallel
• Two types of simulations (DFSP and
  dwSSA) supported by Neptune
• User specifies how many nodes and how
  many simulations to run
An Example
path = “/racelab/dfsp-run-#{rand}”
neptune :type => “dfsp”,
    :output => path,
    :simulations => 1_000_000


result = neptune :type => “output”,
    :output => path
puts “DFSP result is #{result[:stdout]}”
Storage Backends

• Can store to any database AppScale uses

• Can also store to Amazon S3
 • Or anything that uses the same APIs
 • e.g., Eucalyptus Walrus, Google Storage
Not Just for HPC
• Can be used to scale AppScale itself
• Specify which component to add and how
  many
• Can specify resources across clouds
• e.g., ten database nodes, five in each of two
  clouds
Limitations

• Not amenable to codes that require hard-
  coded IP addresses or other identifiers
• Not amenable for codes that require
  closed source software to run
 • Is ok if the software is only needed for
    compilation or linking
Evaluation
• Physical hardware:
 • Intel Xeon, 8 cores, 16GB of memory
• Virtual machines:
 • 1 virtual core, 1GB of memory
• MapReduce Java WordCount: 2.5GB input
  file containing Shakespeare 500 times
Java WordCount
VM Reuse
Wrapping it Up
• Thanks to the AppScale team, especially co-
  lead Navraj Chohan and advisor Chandra
  Krintz
• Currently Neptune is at version 0.0.8, with
  added support for UPC and Erlang
• gem install neptune
• Visit us at http://neptune-lang.org

More Related Content

What's hot

What's hot (20)

Tech Talk on Autoscaling in Apache Stratos
Tech Talk on Autoscaling in Apache StratosTech Talk on Autoscaling in Apache Stratos
Tech Talk on Autoscaling in Apache Stratos
 
Heterogeneous Workflows With Spark At Netflix
Heterogeneous Workflows With Spark At NetflixHeterogeneous Workflows With Spark At Netflix
Heterogeneous Workflows With Spark At Netflix
 
StreamSQL Feature Store (Apache Pulsar Summit)
StreamSQL Feature Store (Apache Pulsar Summit)StreamSQL Feature Store (Apache Pulsar Summit)
StreamSQL Feature Store (Apache Pulsar Summit)
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with Kubernetes
 
Serverless data processing with Data Pipeline
Serverless data processing with Data PipelineServerless data processing with Data Pipeline
Serverless data processing with Data Pipeline
 
DevOpsCon Cloud Workshop
DevOpsCon Cloud Workshop DevOpsCon Cloud Workshop
DevOpsCon Cloud Workshop
 
DataConf.TW2018: Develop Kafka Streams Application on Your Laptop
DataConf.TW2018: Develop Kafka Streams Application on Your LaptopDataConf.TW2018: Develop Kafka Streams Application on Your Laptop
DataConf.TW2018: Develop Kafka Streams Application on Your Laptop
 
Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...
Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...
Kafka for Microservices – You absolutely need Avro Schemas! | Gerardo Gutierr...
 
Sas 2015 event_driven
Sas 2015 event_drivenSas 2015 event_driven
Sas 2015 event_driven
 
AWS ECS workshop
AWS ECS workshopAWS ECS workshop
AWS ECS workshop
 
Docker in the Cloud
Docker in the CloudDocker in the Cloud
Docker in the Cloud
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
 
Cloudsolutionday 2016: Getting Started with Severless Architecture
Cloudsolutionday 2016: Getting Started with Severless ArchitectureCloudsolutionday 2016: Getting Started with Severless Architecture
Cloudsolutionday 2016: Getting Started with Severless Architecture
 
Flink Forward SF 2017: Bill Liu & Haohui Mai - AthenaX : Uber’s streaming pro...
Flink Forward SF 2017: Bill Liu & Haohui Mai - AthenaX : Uber’s streaming pro...Flink Forward SF 2017: Bill Liu & Haohui Mai - AthenaX : Uber’s streaming pro...
Flink Forward SF 2017: Bill Liu & Haohui Mai - AthenaX : Uber’s streaming pro...
 
AWS ELB Tips & Best Practices
AWS ELB Tips & Best PracticesAWS ELB Tips & Best Practices
AWS ELB Tips & Best Practices
 
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForzaFullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
 
Journey towards serverless infrastructure
Journey towards serverless infrastructureJourney towards serverless infrastructure
Journey towards serverless infrastructure
 
Introducing Kubernetes
Introducing Kubernetes Introducing Kubernetes
Introducing Kubernetes
 
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
 
eCAP Developer Walkthru
eCAP Developer WalkthrueCAP Developer Walkthru
eCAP Developer Walkthru
 

Similar to Neptune @ SoCal

haXe - One codebase to rule'em all
haXe - One codebase to rule'em allhaXe - One codebase to rule'em all
haXe - One codebase to rule'em all
Tom Crombez
 
What's New in AWS Serverless and Containers
What's New in AWS Serverless and ContainersWhat's New in AWS Serverless and Containers
What's New in AWS Serverless and Containers
Amazon Web Services
 
Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?
Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?
Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?
Flink Forward
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
Igor Anishchenko
 

Similar to Neptune @ SoCal (20)

Distributed Tensorflow with Kubernetes - data2day - Jakob Karalus
Distributed Tensorflow with Kubernetes - data2day - Jakob KaralusDistributed Tensorflow with Kubernetes - data2day - Jakob Karalus
Distributed Tensorflow with Kubernetes - data2day - Jakob Karalus
 
Implement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVMImplement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVM
 
haXe - One codebase to rule'em all
haXe - One codebase to rule'em allhaXe - One codebase to rule'em all
haXe - One codebase to rule'em all
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Portable Streaming Pipelines with Apache Beam
Portable Streaming Pipelines with Apache BeamPortable Streaming Pipelines with Apache Beam
Portable Streaming Pipelines with Apache Beam
 
What's New in AWS Serverless and Containers
What's New in AWS Serverless and ContainersWhat's New in AWS Serverless and Containers
What's New in AWS Serverless and Containers
 
Impala Architecture presentation
Impala Architecture presentationImpala Architecture presentation
Impala Architecture presentation
 
Hpc lunch and learn
Hpc lunch and learnHpc lunch and learn
Hpc lunch and learn
 
Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?
Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?
Vyacheslav Zholudev – Flink, a Convenient Abstraction Layer for Yarn?
 
What is Serverless Computing?
What is Serverless Computing?What is Serverless Computing?
What is Serverless Computing?
 
Coding For Cores - C# Way
Coding For Cores - C# WayCoding For Cores - C# Way
Coding For Cores - C# Way
 
Apache Spark Core
Apache Spark CoreApache Spark Core
Apache Spark Core
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
HPC in the Cloud
HPC in the CloudHPC in the Cloud
HPC in the Cloud
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Using MXNet to Train and Deploy your Deep Learning Model
Using MXNet to Train and Deploy your Deep Learning ModelUsing MXNet to Train and Deploy your Deep Learning Model
Using MXNet to Train and Deploy your Deep Learning Model
 
Building HPC Clusters as Code in the (Almost) Infinite Cloud | AWS Public Sec...
Building HPC Clusters as Code in the (Almost) Infinite Cloud | AWS Public Sec...Building HPC Clusters as Code in the (Almost) Infinite Cloud | AWS Public Sec...
Building HPC Clusters as Code in the (Almost) Infinite Cloud | AWS Public Sec...
 
Putting Compilers to Work
Putting Compilers to WorkPutting Compilers to Work
Putting Compilers to Work
 
BigDataSpain 2016: Stream Processing Applications with Apache Apex
BigDataSpain 2016: Stream Processing Applications with Apache ApexBigDataSpain 2016: Stream Processing Applications with Apache Apex
BigDataSpain 2016: Stream Processing Applications with Apache Apex
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 

Neptune @ SoCal

  • 1. Neptune A Domain Specific Language for Deploying HPC Software on Cloud Platforms Chris Bunch Navraj Chohan Chandra Krintz Khawaja Shams SoCal Spring 2011 @ Harvey Mudd College April 16, 2011
  • 2. Cloud Computing • Three tiers of abstraction: • Infrastructure: Scalable hardware • Platform: Scalable APIs • Software: Scalable application
  • 3. HPC in the Cloud • Hard to automatically configure and deploy libraries • Especially for the average user • Hard to get high performance on opaque cloud • Wide range of APIs for similar services (e.g., compute, storage)
  • 4. Introducing Neptune • A Domain Specific Language that facilitates HPC configuration and deployment • Serves High Throughput Computing (HTC) as well as Many Task Computing (MTC) • Part language component, part runtime component
  • 5. Design • Language - Consists of metaprogramming extensions to Ruby • Runtime - Operates at cloud platform layer • Can control VMs as well as applications • Can act standalone or as a library to existing Ruby programs
  • 6. Syntax neptune :type => “service-type”, :option1 => “setting-1”, :option2 => “setting-2”
  • 7. Semantics • Options are unique per job • Not all jobs are equal • Uses Ruby’s dynamic typing so option and setting types can be dynamic • Extensible - add your own job types / options / settings
  • 8. Semantics • Neptune jobs return a hashmap • :result is either :success or :failure • Additional parameters are job-specific • Customizable per job
  • 9. Design • Need something more than XML • Need to control the execution • Allows for integration with Rails • Code is reusable across job types • e.g., job input / output / ACLs
  • 10. To Run a Job: • Minimum set of requirements for jobs: • Acquire resources • Run job • Get output • Leverage AppScale cloud platform
  • 11. AppScale • Open source implementation of the Google App Engine APIs • Can deploy to Amazon EC2 or Eucalyptus • Standard three tier deployment model: • Load balancer app server database
  • 12. AppScale Tools • Modified the command line tools • Added support for placement strategies • e.g., hot spares for HPC computation • Added hybrid cloud support • Can run in Amazon EC2 and Eucalyptus simultaneously
  • 13. AppController • A special daemon on all systems that configures necessary services • Now acts as part of Neptune’s runtime component • Can receive Neptune jobs • Acquires nodes from infrastructure, configures, and deploys as needed
  • 14. Virtual Machine Reuse • Machines are charged by the hour - so keep them for an hour in case users need them later • Scheduling policies - hill climbing algorithm used based on execution time or total cost • Relies on user to specify how many nodes the code can run over
  • 15. Message Passing Interface (MPI) • Many implementations exist - we use the most commonly used version (C/C++) • Data is shared via NFS • User specifies how many nodes are needed, and processors are to be used, and where their code is located
  • 16. X10 • IBM’s effort at simplifying parallel computing • Java-like syntax, no pointers needed • Can use Java backend or MPI backend via C++ • Thus, same parameters as MPI jobs
  • 17. • Popularized by Google in 2004 • Neptune supports both ‘flavors’: • Regular: Write Java Mapper and Reducer, specify a single JAR for execution and main class • Streaming: Write code in any language, specify location of Map and Reduce files
  • 18. Stochastic Simulation Algorithms • Computational scientists do large numbers of Monte Carlo simulations • Embarassingly parallel • Two types of simulations (DFSP and dwSSA) supported by Neptune • User specifies how many nodes and how many simulations to run
  • 19. An Example path = “/racelab/dfsp-run-#{rand}” neptune :type => “dfsp”, :output => path, :simulations => 1_000_000 result = neptune :type => “output”, :output => path puts “DFSP result is #{result[:stdout]}”
  • 20. Storage Backends • Can store to any database AppScale uses • Can also store to Amazon S3 • Or anything that uses the same APIs • e.g., Eucalyptus Walrus, Google Storage
  • 21. Not Just for HPC • Can be used to scale AppScale itself • Specify which component to add and how many • Can specify resources across clouds • e.g., ten database nodes, five in each of two clouds
  • 22. Limitations • Not amenable to codes that require hard- coded IP addresses or other identifiers • Not amenable for codes that require closed source software to run • Is ok if the software is only needed for compilation or linking
  • 23. Evaluation • Physical hardware: • Intel Xeon, 8 cores, 16GB of memory • Virtual machines: • 1 virtual core, 1GB of memory • MapReduce Java WordCount: 2.5GB input file containing Shakespeare 500 times
  • 26. Wrapping it Up • Thanks to the AppScale team, especially co- lead Navraj Chohan and advisor Chandra Krintz • Currently Neptune is at version 0.0.8, with added support for UPC and Erlang • gem install neptune • Visit us at http://neptune-lang.org