-
Notifications
You must be signed in to change notification settings - Fork 2
Schedule
-
The framework with CATMIP MCMC algorithm
- CPU (available at master branch)
- GPU with both single/double precision (available at cuda branch)
-
Inverse problems (models)
- Mogi (available at master branch)
- cdm (available at master branch)
- linear/static (available at master/cuda branches)
- kinematic (requires cascading, available at cuda branch)
- static/kinematic inversions with Cp (available at cuda branch)
- ???
-
Prior distributions
- Uniform (available for both CPU/GPU)
- Gaussian (available for both CPU/GPU)
- Truncated Gaussian (available for GPU)
- Laplace and truncated Laplace (to be added)
- Moment magnitude scale (for earthquake, available for GPU)
- ???
-
Job deployment - single host, multiple threads, multiple gpus (tested) - multiple hosts with slurm scheduler (tested) - multiple hosts with pbs scheduler (need some work from pyre) - jupyter notebook (need some work for step-by-step execution) - ???
-
Documentations and tutorials
to be done
-
???
The current master branch can run most cpu models. It also has an option to run forward problems with gpu (by copying the samples to gpu, run forward model on gpu, then copy the results back to cpu). Apart from some bug fixes, some proposals could improve performance
- In Metropolis sampling process, move prior verifications and log prior PDF computations (called for every MC jump) to C code; this has been tested to improve the speed a lot (maybe a python array access issue).
- After prior verification, we only need to compute forward model for valid samples.
To merge the gpu framework to master, we need
- commit (rewrite if necessary) the cuda python wrappers to pyre, including cuda vectors/matrices or array and the cublas, curand libraries.
- commit the cuda framework, which keeps the data in gpu for a given beta step; the COV scheduler and resampling are still done by CPU. The main components are a cuda Metropolis sampler, cuda prior distributions, cuda L2 norm, and forward model computations in cuda.
- to integrate cuda components to their cpu counterparts: according to the processor type, cpu or gpu, different methods are called. Currently, we need to specify components to be cuda components, such as cudaModel, cudaSampler, cudaPrior ... After integration, we have one model with both CPU and gpu methods.
-
Current COV scheduler includes, beta computation, proposal covariance computation and resampling in one component. It should be ideal to separate them apart, into new Proposal and Resampler protocols. By doing so, more algorithms can be easily added. For example, we can add TCMCMC and its variations in; at least for comparisons to CATMIP algorithm.
-
Standardize the input and output. For example, we can define a H5Recorder for all components to access. Each component can decide what they want to record to a single file (for each beta step).
-
features to be added
-
featured requested by users
To accelerate the AlTar development, we'd better set a goal for an each given period, such as what features are expected to be done by that date, and when we expect to have a release.
Proposals:
-
Lijun and Michael work together on merging things to master branch This is preferred as discussions improve things, double-checking insures accuracy. But it may require us to work more closely, e.g., 2 meetings per week, at least 4(8?) hours working together.
-
Lijun maintains a separate branch as a test ground. We can release it to test users. After features are tested/approved by users, we work to merge them to master feature by feature.