Commit Graph

225 Commits

Author SHA1 Message Date
Pedro Martinez Mediano 446ac4ae59 Merge branch 'master' into gpu 2017-11-21 14:58:15 +00:00
jlizier 0e27dbcbc2 Fixed default value of dynamic exclusion window in Kernel MI calculator to be 0. Technically it is zero (because dynCorrExcl boolean is set to false, but gets reported as 100 because the integer value of dynCorrExclTime was not set to 0 itself) 2017-09-02 20:18:36 +10:00
Pedro Martinez Mediano ed71502bc2 Remove old cudaLibraryLoad code and unnecessary dependencies. 2017-08-31 16:22:12 +01:00
jlizier b2e3ae1ca0 Added missing getProperty() method to Conditional TE calculator Kraskov 2017-08-23 00:19:09 +10:00
jlizier 0e40ec2401 Initialising conditional TE calculator to have one conditional dimension by default instead of none. Also fixing the way the conditional parameters are printed via getProperty() when they are null. 2017-08-23 00:18:41 +10:00
jlizier 4db008ce33 For Conditional MI calculators (sontinuous), adding setObservations and addObservations method signatures which take univariate arrays (only work if initialised dimensionalities are univariate) into the interface, and the common base class. This is in preparation for the CMI AutoAnalyser 2017-08-22 21:26:44 +10:00
jlizier 4d6fc1a572 Updated Kozachenko-Leonenko multivariate Entropy calculator to implement EntropyCalculator interface, in preparation for Entropy AutoAnalyser 2017-08-21 14:56:20 +10:00
jlizier 086bee5945 Making continuous MultiInfoCalculator classes implement the InfoMeasureCalculatorContinuous interface. For the interfaces, this means removing methods where duplicated. For implementing classes, this means adding the missing methods. 2017-08-18 23:42:43 +10:00
jlizier 057f17e338 Making continuous PredictiveInfoCalculator classes implement the InfoMeasureCalculatorContinuous interface. For the interfaces, this means removing methods where duplicated. And fixed the common implementing class to have the missing getProperty method. 2017-08-18 23:11:37 +10:00
jlizier 65c7cd99cc Making continuous EntropyCalculator and EntropyCalculatorMultiVariate classes implement the InfoMeasureCalculatorContinuous interface. For the interfaces, this means removing methods where duplicated. Also added NUM_DIMENSIONS property to EntropyCalculatorMultiVariate interface, so that these calculators can have an initialise() method which takes no parameters. Fixed all implementing classes to have any methods that they were missing. 2017-08-18 20:18:29 +10:00
jlizier d6bd16546b Added new interface InfoMeasureCalculatorContinuous to capture common methods for continuous calculators. Also adapted most continuous calculators to implement this, which involved in many cases removing duplicate definitions of these methods in the interfaces for these measures. For ConditionalMI calculator, this meant we needed to add an implementation of the zero-argument initialise() call also. Still need to do MultiInfo, PredictiveInfo and Entropy in future, as they're missing a few methods. 2017-08-18 16:54:55 +10:00
jlizier 3e64fd28bd Altering various continuous calculators to implement the EmpiricalNullDistributionComputer interface (where they're already implementing computeSignificance() etc.). Also altered the EmpiricalNullDistributionComputer methods to throw Exceptions, since the continuous calculators generally do this (and doesn't harm the discrete ones). Also involved implementing the methods in ConditionalMIMultiVariateCommon by selecting to permute the first variable by default. 2017-08-18 15:31:27 +10:00
jlizier d77a9f274e Added interface ChannelCalculator for MutualInfoCalculatorMultiVariate; this should have always been there but not all calculators implemented the univariate methods. It previously only implemented ChannelCalculatorMultiVariate. Added those methods into MutualInfoMultiVariateCommon, which provides the base implementation for all required calculators, so all are now taken care of. This means MI and TE can both be fully used in one interface with the set/addObservations methods. 2017-08-18 13:54:10 +10:00
jlizier ea40f48bbc Adding new methods computePValueForGivenEstimate() and computeEstimateForGivenPValue to AnalyticMeasurementDistribution and implementing in ChiSquareMeasurementDistribution. Involves importing (and refactoring) a significantly larger chunk of commons.maths3 classes (and updating existing ones to latest 3.6.1 version for consistency). Also addresses issue #23 in changing the actual value of the ChiSquareMeasurementDistribution to be that of the information theoretic measurement rather than 2*N times it (which was the value that is actually chi squared distributed), which also necessitates changes to the Discrete and Gaussian calculators computeSignificance() methods. 2017-06-14 11:09:01 +10:00
jlizier a2b9939892 Merge branch 'master' of github.com:jlizier/jidt
to combine local changes with Pedro's GPU pull
2017-06-13 12:08:54 +10:00
jlizier 77f4c1afd5 Added partialNeighbourCountFromObservations() method for Leo's analytic work on neighbour counts 2017-06-13 12:04:41 +10:00
Pedro Martinez Mediano d0b35b3db8 Added NativeUtils for native lib loading and included libKraskov.so in jar. 2017-06-01 20:34:23 +10:00
Pedro Martinez Mediano 834a3ec2c2 Relocated GPU code and modified build and load paths accordingly. 2017-06-01 17:22:42 +10:00
Pedro Martinez Mediano 2a203faa23 Added support for Theiler exclusion window in JNI code. 2017-05-31 04:19:49 +10:00
Pedro Martinez Mediano bc44e4c2fb Main workflow now operates using only device functions.
This saves time and energy by keeping all data in te GPU, rather than
transfering it back and forth all the time.
2017-05-31 02:38:44 +10:00
Pedro Martinez Mediano 85dd28d13b Separated digamma and reduction into host and device functions. 2017-05-31 02:36:45 +10:00
Pedro Martinez Mediano 7a89dd7908 Modified handling of normFunction and replaced signallength with signalLength. 2017-05-31 02:35:11 +10:00
Pedro Martinez Mediano 6c25ea93ef Added functions to allocate and free all the GPU memory at once. 2017-05-31 02:31:37 +10:00
Pedro Martinez Mediano 721c96c040 Added prototypes of device functions to gpuKnnLibrary header. 2017-05-30 23:00:17 +10:00
Pedro Martinez Mediano c9d6a8a3bc Now Makefile finds compute capabilities of all GPUs in the system. 2017-05-30 17:39:06 +10:00
Pedro Martinez Mediano 6645653ab3 Added unit tests for GPU digamma calculation and block reduction. 2017-05-30 01:37:43 +10:00
Pedro Martinez Mediano 75a03341b9 Separated digamma and reduction into host and device functions, now doing block reduction in device. 2017-05-30 01:36:56 +10:00
Pedro Martinez Mediano f4ef357a84 Multiple improvements to increase portability of GPU build system.
- Checks CUDA and nvcc are available, otherwise exit nicely.
- Automatically looks for JNI header files.
- Automatically checks GPU-specific compute capability flags.
2017-05-30 01:24:43 +10:00
Pedro Martinez Mediano 180e5cbf45 Minor rearrangements in digamma functions. 2017-05-29 09:20:29 +10:00
Pedro Martinez Mediano 727a76fe94 Renamed cudaSumDigammas function. 2017-05-29 09:18:00 +10:00
Pedro Martinez Mediano 7eb91957ce Remove old comments. 2017-05-29 09:11:08 +10:00
Pedro Martinez Mediano 4b374de8c1 Added function to calculate and sum digammas fully on GPU to the main workflow. 2017-05-29 09:10:33 +10:00
Pedro Martinez Mediano 34c9ebd6ad Added CUB library of low-level CUDA primitives. 2017-05-28 02:40:56 +10:00
Pedro Martinez Mediano a5e3d18e6a Separated RS function in host and device sections. 2017-05-28 02:07:55 +10:00
Pedro Martinez Mediano fb01036127 Separated kNN function in host and device sections. 2017-05-28 01:55:55 +10:00
Pedro Martinez Mediano 0845420fdf Rearranged function order in gpuKnnBF_kernel. 2017-05-28 01:53:30 +10:00
Pedro Martinez Mediano 502289d666 Replaced manual absolute value calculation with CUDA Math API fabsf. 2017-05-27 04:23:03 +10:00
Pedro Martinez Mediano 0d296c854c Fix minor warnings. 2017-05-27 04:20:45 +10:00
Pedro Martinez Mediano d94a373ca8 Added warning flags to Makefile. 2017-05-27 04:20:11 +10:00
Pedro Martinez Mediano 1beb7a47fc "extern C" qualifiers now surround all gpuKnnLibrary as a whole, instead of in every function. 2017-05-26 04:58:18 +10:00
Pedro Martinez Mediano 36d821979d Renamed gpuKnnLibrary.cu to .c. Now .cu extension is reserved for files with kernels. 2017-05-26 04:55:13 +10:00
Pedro Martinez Mediano 56771c94b4 Minor change to timing tags in perftest. 2017-05-26 04:54:05 +10:00
Pedro Martinez Mediano 91b1235380 Added statistical unbiasedness tests for C permutation function. 2017-05-25 15:16:20 +10:00
Pedro Martinez Mediano d8779ee9f5 Added randperm to gpuMILibrary header so that it can be seen by other files. 2017-05-25 15:16:00 +10:00
Pedro Martinez Mediano 6af0e22030 Merge branch 'master' into gpu 2017-05-25 02:44:59 +10:00
Pedro Martinez Mediano a642c0a8c8 Fix prints in digamma timers. 2017-05-25 02:29:07 +10:00
Pedro Martinez Mediano 79859e0832 Add warm-up period to benchmarking script. 2017-05-25 02:15:21 +10:00
Pedro Martinez Mediano c8ceec9f71 Added more timers and unified format a bit. 2017-05-25 01:41:53 +10:00
Pedro Martinez Mediano cce345b0ed Removed comments and prints from perftest.cpp 2017-05-25 01:09:34 +10:00
Pedro Martinez Mediano 3fb9632439 Improved ctimer to align printf outputs. 2017-05-25 01:06:04 +10:00