diff --git a/src/main/java/com/aparapi/internal/kernel/KernelProfile.java b/src/main/java/com/aparapi/internal/kernel/KernelProfile.java
index 77d1d669fa5235f1ad15d30eaaa10bfda0c6f2e7..933b3f2bb7d3a79c2c31037674963f1109d76b75 100644
--- a/src/main/java/com/aparapi/internal/kernel/KernelProfile.java
+++ b/src/main/java/com/aparapi/internal/kernel/KernelProfile.java
@@ -75,9 +75,12 @@ public class KernelProfile {
     */
    void onStart(Device device) {
 	  KernelDeviceProfile currentDeviceProfile = deviceProfiles.get(device);
-      if (currentDeviceProfile == null) {
+      if (currentDeviceProfile == null) {    	 
          currentDeviceProfile = new KernelDeviceProfile(this, kernelClass, device);
-         deviceProfiles.put(device, currentDeviceProfile);
+         KernelDeviceProfile existingProfile = deviceProfiles.putIfAbsent(device, currentDeviceProfile);
+         if (existingProfile != null) {
+        	 currentDeviceProfile = existingProfile;
+         }
       }
       
       currentDeviceProfile.onEvent(ProfilingEvent.START);