Hi Tatsuya, Thanks for your interest in the SystemML project. Just so that we are on same page, there are two interpretation of REPL with respect to SystemML: 1. Using SystemML in Spark REPL. - Scala Spark-shell: http://apache.github.io/incubator-systemml/mlcontext-programming-guide.html . This also involves the integration with MLPipeline ( https://github.com/apache/incubator-systemml/blob/master/src/main/java/com/ibm/bi/dml/api/ml/LogisticRegression.java ) APIs. - PySpark shell (using SystemML.py) - Jupyter (using SystemML.py)
2. Having a "DML kernel/interpreter". - A DML kernel for Jupyter (will require a command-line interpreter) - A command-line interpreter where data scientists can type DML commands. Like Matthias, I would recommend that implementing an interpreter for DML might not be a good task to explore SystemML. Still, I will try to give you an overview and please pardon me for hand-waving a bit in below paragraph for sake of simplicity. We do have a "mini-interpreter" in the form of a debugger and it might be a good place to explore before implementing an interpreter. Please note: the debugger works at level of instruction, not at the level of DML statement. Also, the debugger takes as input a DML script and hence SystemML's optimizer has full scope for optimization. However, to allow for tasks such as "step into", we disable certain optimizations and have a special level for the debugger (O5_DEBUG_MODE). For example: algrebraic simplification, interprocedural analysis, branch removal, dynamic recompilations, sum product rewrites, etc are disabled. Browsing through the debugger code should give you a fair idea about the machinery required in SystemML for implementing a full-fledged interpreter (such as runtime instructions, symbol table, instructions-to-DML mapping, piggybacking, etc). Then one must step back and look at the high-level design decisions as well, such as lazy evaluation. To get started with the debugger, please look at http://apache.github.io/incubator-systemml/debugger-guide.html and also in the com.ibm.bi.dml.debug package. Please note the URL might change soon when we change our package names to org.apache.sysml. Reference: https://github.com/apache/incubator-systemml/blob/master/src/main/java/com/ibm/bi/dml/api/MLContext.java https://github.com/apache/incubator-systemml/blob/master/src/main/java/com/ibm/bi/dml/api/python/SystemML.py https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages https://github.com/apache/incubator-systemml/tree/master/src/main/java/com/ibm/bi/dml/debug Thanks, Niketan Pansare IBM Almaden Research Center E-mail: npansar At us.ibm.com http://researcher.watson.ibm.com/researcher/view.php?person=us-npansar From: "Tatsuya Nishiyama" <nishiyama.tats...@lab.ntt.co.jp> To: <dev@systemml.incubator.apache.org> Date: 12/02/2015 01:06 AM Subject: RE: How to contribute SystemML Hi Matthias, Thanks for your reply. > Such a feature would, however, require substantial discussions, especially with regard to optimization scope etc and hence might not be a good starting task. > How about we select some smaller tasks on our existing APIs and once you feel comfortable get started on a larger feature like that? OK, I understand it. I will try to find such smaller tasks, and tackle it. If you already know any started tasks , please tell me. Best regards, - Tatsuya -- From: Matthias Boehm [mailto:mbo...@us.ibm.com] Sent: Wednesday, December 02, 2015 4:47 PM To: dev@systemml.incubator.apache.org Subject: Re: How to contribute SystemML Hi Tatsuya, thanks for your interest, we'd love to help you get started. Although we do have various APIs, including MLContext that allows you to invoke DML scripts from Spark's interactive shell, we don't have an actual REPL interface yet. Niketan built an initial prototype of a related API. @Niketan: Do you want to comment on that? Such a feature would, however, require substantial discussions, especially with regard to optimization scope etc and hence might not be a good starting task. How about we select some smaller tasks on our existing APIs and once you feel comfortable get started on a larger feature like that? Regards, Matthias "Tatsuya Nishiyama" ---12/01/2015 10:50:41 PM---Hi, I'm interested in contributing SystemML. I've checked the documentation, and From: "Tatsuya Nishiyama" <nishiyama.tats...@lab.ntt.co.jp> To: <dev@systemml.incubator.apache.org> Date: 12/01/2015 10:50 PM Subject: How to contribute SystemML ________________________________________ Hi, I'm interested in contributing SystemML. I've checked the documentation, and it looks like SystemML doesn't have REPL for interactive execution. Is it correct? If SystemML doesn't have REPL, I would like to contribute it. BTW, JIRA looks to be unavailable for now: https://issues.apache.org/jira/browse/SYSTEMML How can I start contribution? Thanks, - Tatsuya