trentool / TRENTOOL3

Open-Source MATLAB toolbox for transfer entropy estimation
http://trentool.github.io/TRENTOOL3/
GNU General Public License v3.0
59 stars 26 forks source link

What kind of speedup should be observed from using the GPU? #21

Closed currymj closed 7 years ago

currymj commented 7 years ago

I've been running the GPU and CPU examples. I'm trying to make sure the parameters on GPU memory, thread count, etc. are reasonable. What kinds of speedups should be observed from using the GPU method over the CPU method? Or, are they not directly comparable?

pwollstadt commented 7 years ago

Right now both implementations (GPU and CPU) follow different work flows and are thus not directly comparable. The CPU method uses a short cut when doing surrogate statistics which only requires the computation of transfer entropy from a single set of surrogate data (described here), while the GPU method requires the computation of transfer entropy from a suitable number of surrogate data sets (we use 500 as a default, see here for a description).

The advantage of the GPU method is that it allows to pool data over trials or replications of the processes under investigation in order to obtain a sufficient amount of data points for estimation (e.g., in cases of non-stationarity or for short but repeatable processes). The CPU method estimates transfer entropy for individual trials from data points/realisations collected over time.

currymj commented 7 years ago

Thanks for the clarification. So the GPU method is slower but better for certain types of signals, and heavy enough of a computation that it probably wouldn't even be feasible on a CPU.

pwollstadt commented 7 years ago

That's right. The GPU work flow wasn't feasible on a CPU, hence the GPU extension. The GPU work flow as implemented right now is just different from the CPU work flow. In principle we would expect a speedup if we changed the CPU work flow to run in parallel on the GPU.

SooryaG-2612 commented 7 years ago

Do you have any CPU implementation of the ensemble estimation method? Our data sets are not too large (66 samples in time,100 realizations) but we have severe hardware issues with the GPU. Is there any branch prior to the GPU extension which I can use on the CPU for arriving at ensemble TE estimates?

pwollstadt commented 7 years ago

Hi @sooryasadayam, unfortunately we provide no CPU-implementation of the ensemble method. You may want to have a look at our new Python toolbox, IDTxl, which provides the ensemble method for CPU but works differently from TRENTOOL.