From 791c81c95cf9a9fc715384082b7478881b7f2727 Mon Sep 17 00:00:00 2001
From: Mark Winter <mwinter@drexel.edu>
Date: Sun, 1 Mar 2020 12:42:14 -0500
Subject: [PATCH] Binaries supporting dynamic enabling of proces mutex

---
 src/MATLAB/+HIP/+Local/CheckConfig.m | 20 ++++++++++++++++++++
 src/MATLAB/+HIP/@Cuda/CheckConfig.m  |  7 +++++++
 src/MATLAB/+HIP/@Cuda/Cuda.m         | 21 +++++++++++----------
 src/MATLAB/+HIP/@Cuda/Mex.mexw64     |  4 ++--
 src/MATLAB/+HIP/CheckConfig.m        | 13 +++++++++++++
 src/Python/HIP.pyd                   |  4 ++--
 src/c/Mex.mexw64                     |  4 ++--
 7 files changed, 57 insertions(+), 16 deletions(-)
 create mode 100644 src/MATLAB/+HIP/+Local/CheckConfig.m
 create mode 100644 src/MATLAB/+HIP/@Cuda/CheckConfig.m
 create mode 100644 src/MATLAB/+HIP/CheckConfig.m

diff --git a/src/MATLAB/+HIP/+Local/CheckConfig.m b/src/MATLAB/+HIP/+Local/CheckConfig.m
new file mode 100644
index 00000000..dd7414de
--- /dev/null
+++ b/src/MATLAB/+HIP/+Local/CheckConfig.m
@@ -0,0 +1,20 @@
+function [hydraConfig] = CheckConfig(,suppressWarning)
+     error('CheckConfig not yet implemented in MATLAB!'); %delete this line when implemented
+     if (~exist('suppressWarning','var') || isempty(suppressWarning) || ~suppressWarning)
+         warning('Falling back to matlab.');
+     end
+     
+     if (~exist('numIterations','var') || isempty(numIterations))
+         numIterations = 1;
+     end
+     
+     arrayOut = arrayIn;
+     for t=1:size(arrayIn,5)
+         for c=1:size(arrayIn,4)
+             for i=1:numIterations
+                 % implement this function here
+                 arrayOut(:,:,:,c,t) = arrayIn(:,:,:,c,t);
+             end
+         end
+     end
+end
diff --git a/src/MATLAB/+HIP/@Cuda/CheckConfig.m b/src/MATLAB/+HIP/@Cuda/CheckConfig.m
new file mode 100644
index 00000000..40d1cc35
--- /dev/null
+++ b/src/MATLAB/+HIP/@Cuda/CheckConfig.m
@@ -0,0 +1,7 @@
+% CheckConfig - Get Hydra library configuration information.
+%    [hydraConfig] = HIP.Cuda.CheckConfig()
+%    Returns hydraConfig structure with configuration information.
+%    
+function [hydraConfig] = CheckConfig()
+    [hydraConfig] = HIP.Cuda.Mex('CheckConfig');
+end
diff --git a/src/MATLAB/+HIP/@Cuda/Cuda.m b/src/MATLAB/+HIP/@Cuda/Cuda.m
index b9b4bf95..46882b66 100644
--- a/src/MATLAB/+HIP/@Cuda/Cuda.m
+++ b/src/MATLAB/+HIP/@Cuda/Cuda.m
@@ -1,28 +1,29 @@
 classdef (Abstract,Sealed) Cuda
 methods (Static)
+    [imageOut] = Closure(imageIn,kernel,numIterations,device)
+    [imageOut] = HighPassFilter(imageIn,sigmas,device)
+    [numCudaDevices,memStats] = DeviceCount()
     Help(command)
+    [hydraConfig] = CheckConfig()
+    [imageOut] = IdentityFilter(imageIn,device)
     [cmdInfo] = Info()
-    [numCudaDevices,memStats] = DeviceCount()
+    [imageOut] = Gaussian(imageIn,sigmas,numIterations,device)
+    [imageOut] = MeanFilter(imageIn,kernel,numIterations,device)
     [deviceStatsArray] = DeviceStats()
     [imageOut] = ElementWiseDifference(image1In,image2In,device)
+    [imageOut] = MultiplySum(imageIn,kernel,numIterations,device)
     [imageOut] = EntropyFilter(imageIn,kernel,device)
-    [imageOut] = HighPassFilter(imageIn,sigmas,device)
-    [imageOut] = Gaussian(imageIn,sigmas,numIterations,device)
-    [imageOut] = Closure(imageIn,kernel,numIterations,device)
+    [imageOut] = StdFilter(imageIn,kernel,numIterations,device)
     [minVal,maxVal] = GetMinMax(imageIn,device)
-    [imageOut] = WienerFilter(imageIn,kernel,noiseVariance,device)
-    [imageOut] = Opener(imageIn,kernel,numIterations,device)
-    [imageOut] = IdentityFilter(imageIn,device)
-    [imageOut] = MultiplySum(imageIn,kernel,numIterations,device)
     [imageOut] = LoG(imageIn,sigmas,device)
-    [imageOut] = StdFilter(imageIn,kernel,numIterations,device)
-    [imageOut] = MeanFilter(imageIn,kernel,numIterations,device)
     [imageOut] = MedianFilter(imageIn,kernel,numIterations,device)
     [imageOut] = MinFilter(imageIn,kernel,numIterations,device)
     [imageOut] = MaxFilter(imageIn,kernel,numIterations,device)
     [imageOut] = NLMeans(imageIn,h,searchWindowRadius,nhoodRadius,device)
+    [imageOut] = Opener(imageIn,kernel,numIterations,device)
     [imageOut] = Sum(imageIn,device)
     [imageOut] = VarFilter(imageIn,kernel,numIterations,device)
+    [imageOut] = WienerFilter(imageIn,kernel,noiseVariance,device)
 end
 methods (Static, Access = private)
     varargout = Mex(command, varargin)
diff --git a/src/MATLAB/+HIP/@Cuda/Mex.mexw64 b/src/MATLAB/+HIP/@Cuda/Mex.mexw64
index b658d2b0..a7c4f668 100644
--- a/src/MATLAB/+HIP/@Cuda/Mex.mexw64
+++ b/src/MATLAB/+HIP/@Cuda/Mex.mexw64
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:75d48bac093946934c4cd46fbbe2aedd703f447d1ec8e08752c118eb23528e07
-size 12387840
+oid sha256:d9bd33ddebb06abf7ac3f2854f09d9074e17a623c5206bb963464d7ac67a29d4
+size 12400128
diff --git a/src/MATLAB/+HIP/CheckConfig.m b/src/MATLAB/+HIP/CheckConfig.m
new file mode 100644
index 00000000..24954fd1
--- /dev/null
+++ b/src/MATLAB/+HIP/CheckConfig.m
@@ -0,0 +1,13 @@
+% CheckConfig - Get Hydra library configuration information.
+%    [hydraConfig] = HIP.CheckConfig()
+%    Returns hydraConfig structure with configuration information.
+%    
+
+function [hydraConfig] = CheckConfig()
+    try
+        [hydraConfig] = HIP.Cuda.CheckConfig();
+    catch errMsg
+        warning(errMsg.message);
+        [hydraConfig] = HIP.Local.CheckConfig();
+    end
+end
diff --git a/src/Python/HIP.pyd b/src/Python/HIP.pyd
index e224a365..9c357786 100644
--- a/src/Python/HIP.pyd
+++ b/src/Python/HIP.pyd
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:e666abc8f1952e321b5a3dd107032f8316ee09c84c7ec488d9963e655df6e7a0
-size 11935232
+oid sha256:abeb26030db8d370d5778f790285e663dddc83500a1eff868e85356ca336018f
+size 12415488
diff --git a/src/c/Mex.mexw64 b/src/c/Mex.mexw64
index b658d2b0..a7c4f668 100644
--- a/src/c/Mex.mexw64
+++ b/src/c/Mex.mexw64
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:75d48bac093946934c4cd46fbbe2aedd703f447d1ec8e08752c118eb23528e07
-size 12387840
+oid sha256:d9bd33ddebb06abf7ac3f2854f09d9074e17a623c5206bb963464d7ac67a29d4
+size 12400128
-- 
GitLab