A Pure Java Implementation of Soar Dave Ray

Slides:



Advertisements
Similar presentations
wwwcsif.cs.ucdavis.edu/~jacksoni
Advertisements

Ruby (on Rails) CSE 190M, Spring 2009 Week 3. Web Programming in Ruby Ruby can be used to write dynamic web pages Similar to PHP, chunks of Ruby begins.
JProbe. 1. JProbe Use JProbe Profile –identify method and line level performance bottlenecks Use JProbe Memory Debugger –investigating memory leaks and.
Threads Load new page Page is loading Browser still responds to user (can read pages in other tabs)
Debugging CPSC 315 – Programming Studio Fall 2008.
Principles of Object-Oriented Software Development The language Java.
Computer Science 162 Section 1 CS162 Teaching Staff.
A New Soar Debugger in Java Douglas Pearson ThreePenny Software
A New Soar Debugger In Java Douglas Pearson
Language Issues Misunderstimated? Sublimable? Hopefuller? "I know how hard it is for you to put food on your family.” "I know the human being and fish.
Understanding and Managing WebSphere V5
JAVA v.s. C++ Programming Language Comparison By LI LU SAMMY CHU By LI LU SAMMY CHU.
Chapter 7 Designing Classes. Class Design When we are developing a piece of software, we want to design the software We don’t want to just sit down and.
Groovy WHAT IS IT? HOW DOES IT WORK? IS IT USEFUL?
Java Analysis Studio Tony Johnson Stanford Linear Accelerator Center CHEP 97 - April 1997.
Pittsburgh Java User Group– Dec Java PureFaces: A JSF Framework Extension.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Austin Java Users Group developerWorks article – µActor Library BARRY FEIGENBAUM, PH. D. 02/26/13.
Java Introduction Lecture 1. Java Powerful, object-oriented language Free SDK and many resources at
Sir Tim Berners-Lee (1955-) British computer scientist Inventor of the World Wide Web in 1989 (developed the first HTML protocol and sent the first messages.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
University of Maryland The DPCL Hybrid Project James Waskiewicz.
Crossing The Line: Distributed Computing Across Network and Filesystem Boundaries.
Java Introduction to JNI Prepared by Humaira Siddiqui.
By Noorez Kassam Welcome to JNI. Why use JNI ? 1. You already have significantly large and tricky code written in another language and you would rather.
University of Houston-Clear Lake Proprietary© 1997 Evolution of Programming Languages Basic cycle of improvement –Experience software difficulties –Theory.
Chapter 1: Introducing JAVA. 2 Introduction Why JAVA Applets and Server Side Programming Very rich GUI libraries Portability (machine independence) A.
Open Source Performance Monitoring Tools, Tips and Tricks for Java Matt Secoske Consultant - Bass & Associates
The HipHop Compiler from Facebook By Megha Gupta & Nikhil Kapoor.
In the name of Allah The Proxy Pattern Elham moazzen.
Technical Team WITSML SIG Dubai - November 2008 John Shields / Gary Masters.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
1 Web Based Programming Section 8 James King 12 August 2003.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
PROGRAMMING LANGUAGES FOR WHEN USING QUANT ANALYSIS FOR HIGH FREQUENCY TRADING.
GeoGebra on mobile devices GeoGebraMobile, the JavaScript version of GeoGebra. Gabor Ancsin (this man =>)
Java Analysis Studio - Status CHEP 98 - September 1998 Tony Johnson - SLAC Jonas Gifford + Kevin Garwood - University of Victoria.
SKYPIAX, how to add Skype capabilities to FreeSWITCH (and Asterisk) CHICAGO, USA, September 2009.
Lecture 5: Threads process as a unit of scheduling and a unit of resource allocation processes vs. threads what to program with threads why use threads.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
Introduction Selenium IDE is a Firefox extension that allows you to record, edit, and debug tests for HTML Easy record and playback Intelligent field selection.
1 OS Review Processes and Threads Chi Zhang
Migrating ASP to ASP.NET Matt Gibbs ASP.NET Development Manager.
An Uncoupled Interface to Soar using SML Pearson, Marinier, Stokes Dunham, Voigt.
Implementing Remote Procedure Call Landon Cox February 12, 2016.
Nguyen Thi Thanh Nha HMCL by Roelof Kemp, Nicholas Palmer, Thilo Kielmann, and Henri Bal MOBICASE 2010, LNICST 2012 Cuckoo: A Computation Offloading Framework.
1 Network Access to Charm Programs: CCS Orion Sky Lawlor 2003/10/20.
DecisionSoft Java in the real world DecisionSoft Stephen White 8 th February 2007.
Introduction to Operating Systems Concepts
Development Environment
MASS Java Documentation, Verification, and Testing
Physics validation database
GraalVM Scott Lynn Director of Product Strategy, Oracle Linux
Outline Introduction to the Phalanger System
Async or Parallel? No they aren’t the same thing!
JRuby It's What's For Dinner
Chapter 18 Software Testing Strategies
Introducing Apache Tomcat 6 Mladen Turk Red Hat, Inc.
Playing with Semantic Memory
CSCE 315 – Programming Studio, Fall 2017 Tanzir Ahmed
SoarUnit Bob Marinier 11/29/2018.
CSE 451: Operating Systems Autumn 2003 Lecture 16 RPC
Why Threads Are A Bad Idea (for most purposes)
Introducing Java.
Why Threads Are A Bad Idea (for most purposes)
Interpreting Java Program Runtimes
CSE 451: Operating Systems Winter 2003 Lecture 16 RPC
Why Threads Are A Bad Idea (for most purposes)
Continuous Integration
Lecture Topics: 11/1 Hand back midterms
Presentation transcript:

A Pure Java Implementation of Soar Dave Ray

Agenda What and why? What's (not) there? What's new? Performance Nuggets and Coal Demo Conclusion

What is JSoar? 100% Java implementation of Soar Open Source, BSD licensed Runs on Java SE versions 1.6 and higher Started in Fall of 2008 based on Soar

Why JSoar? It's a fun and educational personal project "It's like someone who doesn't know how to drive building a car." - Anonymous

Why JSoar? Native dependencies are a frequent topic on Soar mailing lists – System.DllNotFoundException: Unable to load DLL 'CSharp_sml_ClientInterface': The specified module could not be found. – Native code library failed to load. java.lang.UnsatisifiedLinkError: libJava_sml_ClientInterface.jnilib – etc

Why JSoar? Debugging the Soar kernel in C is painful Unions, pointer tricks, poor tool support Tests are easier to write and run Simpler crash diagnosis

Why JSoar? Java is a kitchen sink. Easy access to extensive, often built-in, libraries Seamless (no SWIG) integration with a growing list of alternative languages – JRuby, Jython, JavaScript, Scala, Groovy, Clojure, … – And you thought Tcl was dead.NET interoperability with IKVM.NET

What's there? Base Soar kernel (9.0.1) – Extensive, automated, functional tests to ensure compatibility and prevent regressions Chunking Reinforcement learning Java API – Encapsulates kernel while still providing access to Soar internals if needed

What's not there? SML – No remote debugging Rete network save/load Episodic Memory Semantic Memory Several small, recent fixes and changes

What's new? JSoar debugger Improved concurrency – One thread per agent – wait RHS function: no busy waiting for input Give your CPU fan a break "Real" RHS functions – Multiple args, as symbols – Return structures as well as primitives

What's new? Additional RHS functions – java – Call Java code – debug – Open the debugger – wait – Pause the agent's thread until new input arrives – get-url – Read from a URL – to/from-xml – Convert XML (e.g., from a URL) to working memory – All java.lang.Math functions

What (else) is new? source command works on URLs – source SoarBeans – Auto-convert working memory to Java objects QMemory – Dead-simple, thread-safe input generation RSoar – Ruby API (w/ example Twitter interface) – Yet another wrapper for Soar

Performance JSoar fairs pretty well in CPU performance -server option of JVM provides significant speedup Significant startup cost seen in "max" graph See

Performance JVM optimizes at run-time JSoar gets faster the longer it runs

Future Plans Port Episodic and Semantic Memories Finish SML Port (volunteers?) Investigate memory usage issues Build a cool demo with a cluster of agents handling requests behind a JRuby on Rails web app (or something)

Nuggets It works! Performs better than expected Jon Voigt: "Develop and debug in JSoar, backport to CSoar" In use on at least one SoarTech project Symbol reference counts are gone

Coal Large memory footprint Lack of SML support means rewriting interface code Symbol reference counts are gone, but counts remain on other structures

JSoar Debugger Demo

Conclusion Please give it a try! Home: Applet: Blog: Thanks – to SoarTech for supporting this talk – to Bob Marinier for early, painful debugging and performance testing – to Jon Voigt for ongoing bug fixes

OVERFLOW

What's new Quick Memory Simple, thread-safe input generation Programmatic, or command-line > qset block(red).x-location 1 > qset block(red).y-location 0 > qset block(red).color red > qset block(blue).x-location 2 > qset block(blue).y-location 0 > qset block(blue).color blue... > qset block(red).x-location 2 > qset block(red).y-location 1 ^io.input-link ^block ^x-location 2 ^y-location 1 ^color red ^block ^x-location 2 ^y-location 0 ^color blue See org.jsoar.kernel.io.quick

What's new? Convert any working memory to Java beans ^output-link ^move-along-route ^route-name |alpha| ^desired-speed ^altitude 35.0 class MoveAlongRoute { public String routeName; public double altitude; private double speed; public double getDesiredSpeed(){ return speed; } public void setDesiredSpeed(double s){ speed = s; } } See org.jsoar.kernel.io.beans