@conference {ross2008SINBADsit,
	title = {Seismic inversion through operator overloading},
	booktitle = {SINBAD 2008},
	year = {2008},
	abstract = {Geophysical processing is dominated by many different out of core memory software environments (OOCE). Such environments include Madagascar and SU and are designed to handle data that can not be operated on in memory. Each base operation is created as a main program that reads data from disk and writes the result to disk. The main programs can also be chained together on stdin/out pipes using a shell only writing data to disk at the end. To be efficient, the algorithm using an OOCE must chain together the longest pipe to avoid disk I/O, as a result it is very difficult to use iterative techniques. The algorithms are written in shell scripts can be difficult to read and understand. SLIMpy is a software library that contains definitions of coordinate free vectors and linear operators. It allows the user to design and run algorithms with any out of core package, in a Matlab style interface while maintaining optimal efficiency and speed. SLIMpy looks at each main program of each OOCE as a Matrix vector operation or vector reduction/transformation operation. It uses operator overloading to generate an abstract syntax tree (AST) which can be optimized in many ways before executing its commands. The AST also provides a pathway for embarrassingly parallel applications by splitting the tree over different nodes and processors. SLIMpy provides an interface to these OOCE that allows for optimal construction of commands and allows for iterative techniques. It smoothes the transition from other languages such as Matlab and allows the algorithm designer to write readable and reusable code. SLIMpy also adds to OOCE by allowing for easy parallelization.},
	keywords = {Presentation, SINBAD, SLIM},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SINBAD/2008/ross2008SINBADsit/ross2008SINBADsit.pdf},
	author = {Sean Ross-Ross}
}
@manual {rossross08MNsai,
	title = {SLIMPy: a python interface for unix-pipe based coordinate-free scientific computing},
	year = {2008},
	month = {07},
	abstract = {SLIMpy is a Python interface that exposes the functionality of seismic data processing packages, such as MADAGASCAR, through oper ator overloading. SLIMpy provides a concrete coordinate-free implementation of classes for out-of-core linear (implicit matrix-vector), and element-wise operations, including calculation of norms and other basic vector operations. The library is intended to provide the user with an abstract sc ripting language to program iterative algorithms from numerical linear algebra. These algorithms require repeated evaluation of operators that were initially designed to be run as part of batch-oriented processing flows. The current implementation supports a plugin for Madagascar{\textquoteright}s out-of-core UNIX pipe-based applications and is extenable to pipe-based collections of programs such as Seismic Unix, SEPLib, and FreeUSP. To optimize perform ance, SLIMpy uses an Abstract Syntax Tree that parses the algorithm and optimizes the pipes.},
	url = {https://slim.gatech.edu/Software/SLIM/SLIMpy/},
	author = {Sean Ross-Ross and Henryk Modzelewski and Felix J. Herrmann}
}
@manual {rossross07MNsda,
	title = {SLIMpy development and programming interface for seismic processing},
	year = {2007},
	abstract = {Inverse problems in (exploration) seismology are known for their large to very large scale. For instance, certain sparsity-promoting inversion techniques involve vectors that easily exceed unknowns while seismic imaging involves the construction and application of matrix-free discretized operators where single matrix-vector evaluations may require hours, days or even weeks on large compute clusters. For these reasons, software development in this field has remained the domain of highly technical codes programmed in low-level languages with little eye for easy development, code reuse and integration with (nonlinear) programs that solve inverse problems.Following ideas from the Symes{\textquoteright} Rice Vector Library and Bartlett{\textquoteright}s C++ object-oriented interface, Thyra, and Reduction/Transformation operators (both part of the Trilinos software package), we developed a software-development environment based on overloading. This environment provides a pathway from in-core prototype development to out-of-core and MPI {\textquoteright}production{\textquoteright} code with a high level of code reuse. This code reuse is accomplished by integrating the out-of-core and MPI functionality into the dynamic object-oriented programming language Python. This integration is implemented through operator overloading and allows for the development of a coordinate-free solver framework that (i) promotes code reuse; (ii) analyses the statements in an abstract syntax tree and (iii) generates executable statements. In the current implementation, we developed an interface to generate executable statements for the out-of-core unix-pipe based (seismic) processing package RSF-Madagascar (rsf.sf.net). The modular design allows for interfaces to other seismic processing packages and to in-core Python packages such as numpy. So far, the implementation overloads linear operators and element-wise reduction/transformation operators. We are planning extensions towards nonlinear operators and integration with existing (parallel) solver frameworks such as Trilinos.},
	keywords = {SLIM, software},
	url = {https://slim.gatech.edu/Software/SLIM/SLIMpy/},
	author = {Sean Ross-Ross and Henryk Modzelewski and Cody R. Brown and Felix J. Herrmann}
}
