EMEWS Queues - R implementation
EQ-R is a Swift/T (http://swift-lang.org/Swift-T/) extension that allows Swift/T workflows to communicate with a persistent embedded R interpreter on a worker process via blocking queues. Using the mechanism an R model exploration (ME) algorithm can be used to control and define an ensemble of model runs.
BlockingQueue.h
A queue for inter-thread communication.
EQR.h EQR.cpp
The main functionality to enable EQ-R- thread and queue control
interfaces for access from Tcl and Swift.
EQR.i
The SWIG interface file for EQ-R.
settings.template.sh
Contains example compilier settings for compling EQ-R.
settings.mk.in
Filters into settings.mk
at configure time. This can be
include
by other Makefiles to obtain build settings, for
example, to compile task code that will be called from Swift.
- Install Spack
git clone https://github.com/spack/spack.git
- Set up Spack shell support, e.g., for bash
. spack/share/spack/setup-env.sh
- Clone the EMEWS Spack repository
git clone https://github.com/emews/spack_emews
- Change directory into the repository
cd spack_emews
- Add the EMEWS Spack repository to your existing Spack repository or repositories
spack repo add .
- Install EQ/R
spack install eqr
This will install EQ/R along with any dependencies. (Look here for tips for using existing dependencies.) You will then need to point to the install location of EQ/R in your EMEWS workflow launch script. The location can be queried via:
spack location --install-dir eqr
For information on installing Swift/T for EMEWS, look here.
./bootstrap
./configure ...
make install
Run ./bootstrap
. This runs autoconf
and generates ./configure
.
Then, run ./configure
. You can use ./configure --help
. Key
settings are:
--prefix
: EQ.R install location. This defaults to $PWD/.. for compatibility with EMEWS templates (https://github.com/emews/emews-lazybones-templates)--with-tcl
: Point to Tcl installation root (e.g., /usr)--with-r
: Point to R installation root (requires RInside and Rcpp packages)
Then do make install
.
You can do make clean
or make distclean
.
./configure halts with "checking whether the C++ compiler works... no"
To inspect what went went wrong, you will have to look in the generated config.log . Check that your compiler settings in settings.sh are correct, the library locations in particular.