From 001227c730f02caaa878e6e36e076de7c0ca9a9a Mon Sep 17 00:00:00 2001 From: Pedro Martinez Mediano Date: Mon, 22 May 2017 15:03:32 +1000 Subject: [PATCH] Added Java support for GPU surrogate calculation. --- .../MutualInfoCalculatorMultiVariateKraskov.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/java/source/infodynamics/measures/continuous/kraskov/MutualInfoCalculatorMultiVariateKraskov.java b/java/source/infodynamics/measures/continuous/kraskov/MutualInfoCalculatorMultiVariateKraskov.java index 65cbe9f..7c2a5ba 100755 --- a/java/source/infodynamics/measures/continuous/kraskov/MutualInfoCalculatorMultiVariateKraskov.java +++ b/java/source/infodynamics/measures/continuous/kraskov/MutualInfoCalculatorMultiVariateKraskov.java @@ -600,8 +600,8 @@ public abstract class MutualInfoCalculatorMultiVariateKraskov * and implement a GPU routine to calculate all values in a single call * to the GPU code. */ - protected double[] gpuComputeFromObservations( - int startTimePoint, int numTimePoints, boolean returnLocals) throws Exception { + protected double[] gpuComputeFromObservations(int startTimePoint, + int numTimePoints, boolean returnLocals, int nb_surrogates) throws Exception { ensureCudaLibraryLoaded(); @@ -619,7 +619,7 @@ public abstract class MutualInfoCalculatorMultiVariateKraskov try { res = MIKraskov(totalObservations, sourceObservations, dimensionsSource, - destObservations, dimensionsDest, k, returnLocals, useMaxNorm, isAlgorithm1, 0); + destObservations, dimensionsDest, k, returnLocals, useMaxNorm, isAlgorithm1, nb_surrogates); } catch (Throwable e) { System.out.println("WARNING. Error in GPU code. Reverting back to CPU."); e.printStackTrace(); @@ -630,6 +630,14 @@ public abstract class MutualInfoCalculatorMultiVariateKraskov } + /** + * FIXME + */ + protected double[] gpuComputeFromObservations(int startTimePoint, + int numTimePoints, boolean returnLocals) throws Exception { + return gpuComputeFromObservations(startTimePoint, numTimePoints, returnLocals, 0); + } + /** * Native method to calculate MI in GPU. */ @@ -723,7 +731,7 @@ public abstract class MutualInfoCalculatorMultiVariateKraskov public EmpiricalMeasurementDistribution computeSignificance(int numPermutationsToCheck) throws Exception { if (useGPU) { - double[] res = gpuComputeFromObservations(0, totalObservations, false); // TODO FIXME + double[] res = gpuComputeFromObservations(0, totalObservations, false, numPermutationsToCheck); return new EmpiricalMeasurementDistribution( MatrixUtils.select(res, 1, res.length - 1), res[0]); } else {