diff --git a/CHANGELOG.md b/CHANGELOG.md index a83a96f93f421198d40d5cf5bb756536d72f2160..fd0b443aac46547ece403dbd5630b8fbaa684150 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,10 @@ ## 1.2.0 -* Kernels of the same class are now eligible to be run on different devices +* Kernels of the same class are now eligible to be run on different devices. * Added method to set execution mode without any fallback. -* Added opencl device method for name +* Added opencl device method for name. +* Fixed a memory leak. ## 1.1.2 @@ -17,4 +18,4 @@ ## 1.1.0 -* Changed group id and package to com.aparapi \ No newline at end of file +* Changed group id and package to com.aparapi diff --git a/src/main/java/com/aparapi/internal/kernel/KernelManager.java b/src/main/java/com/aparapi/internal/kernel/KernelManager.java index fb1d9aadf1b797fcae41564edd725d73612bbaac..3ae9d30760c0bcd66dd7102bebefa19c149e4826 100644 --- a/src/main/java/com/aparapi/internal/kernel/KernelManager.java +++ b/src/main/java/com/aparapi/internal/kernel/KernelManager.java @@ -15,12 +15,20 @@ */ package com.aparapi.internal.kernel; -import com.aparapi.*; -import com.aparapi.device.*; -import com.aparapi.internal.util.*; - -import java.lang.reflect.*; -import java.util.*; +import java.lang.reflect.Constructor; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; + +import com.aparapi.Config; +import com.aparapi.Kernel; +import com.aparapi.device.Device; +import com.aparapi.device.JavaDevice; +import com.aparapi.device.OpenCLDevice; +import com.aparapi.internal.util.Reflection; /** * Created by Barney on 24/08/2015. @@ -90,7 +98,7 @@ public class KernelManager { builder.append("\n\n"); for (PreferencesWrapper wrapper : preferences.values()) { KernelPreferences preferences = wrapper.getPreferences(); - Class<? extends Kernel> klass = wrapper.getKernel().getClass(); + Class<? extends Kernel> klass = wrapper.getKernelClass(); KernelProfile profile = withProfilingInfo ? profiles.get(klass) : null; builder.append(klass.getName()).append(":\n\tusing ").append(preferences.getPreferredDevice(null).getShortDescription()); List<Device> failedDevices = preferences.getFailedDevices(); @@ -144,7 +152,7 @@ public class KernelManager { KernelPreferences kernelPreferences; if (wrapper == null) { kernelPreferences = new KernelPreferences(this, kernel.getClass()); - preferences.put(kernel.hashCode(), new PreferencesWrapper(kernel, kernelPreferences)); + preferences.put(kernel.hashCode(), new PreferencesWrapper(kernel.getClass(), kernelPreferences)); }else{ kernelPreferences = preferences.get(kernel.hashCode()).getPreferences(); } diff --git a/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java b/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java index f5ee10916e9de4b117240d539c9b20d461172fa7..ba8bb0d4ebd2c73f6890adee7344c1617c844c99 100644 --- a/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java +++ b/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java @@ -18,18 +18,18 @@ package com.aparapi.internal.kernel; import com.aparapi.Kernel; public class PreferencesWrapper { - - private Kernel kernel; + + private Class<? extends Kernel> klass; private KernelPreferences preferences; - - public PreferencesWrapper(Kernel kernel, KernelPreferences preferences) { + + public PreferencesWrapper(Class<? extends Kernel> klass, KernelPreferences preferences) { super(); - this.kernel = kernel; + this.klass = klass; this.preferences = preferences; } - public Kernel getKernel() { - return kernel; + public Class<? extends Kernel> getKernelClass() { + return klass; } public KernelPreferences getPreferences() {