From b6ba6cb10514026aa9749891b9b7fd0b0c402400 Mon Sep 17 00:00:00 2001
From: Gary Frost <frost.gary@gmail.com>
Date: Tue, 22 Jan 2013 19:20:46 +0000
Subject: [PATCH] Thus utility should help determine OpenCL information
 reported by Aparapi.

---
 .../src/com/amd/aparapi/sample/info/Main.java | 74 +++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/samples/info/src/com/amd/aparapi/sample/info/Main.java b/samples/info/src/com/amd/aparapi/sample/info/Main.java
index f6d465a6..7a55e29f 100644
--- a/samples/info/src/com/amd/aparapi/sample/info/Main.java
+++ b/samples/info/src/com/amd/aparapi/sample/info/Main.java
@@ -38,9 +38,83 @@ under those regulations, please refer to the U.S. Bureau of Industry and Securit
 
 package com.amd.aparapi.sample.info;
 
+import java.util.List;
+
+import com.amd.aparapi.Device;
+import com.amd.aparapi.OpenCLDevice;
+import com.amd.aparapi.OpenCLPlatform;
+
 public class Main{
    public static void main(String[] _args) {
       System.out.println("com.amd.aparapi.sample.info.Main");
+      List<OpenCLPlatform> platforms = OpenCLPlatform.getPlatforms();
+      System.out.println("Machine contains " + platforms.size() + " OpenCL platforms");
+      int platformc = 0;
+      for (OpenCLPlatform platform : platforms) {
+         System.out.println("Platform " + platformc + "{");
+         System.out.println("   Name    : \"" + platform.getName() + "\"");
+         System.out.println("   Vendor  : \"" + platform.getVendor() + "\"");
+         System.out.println("   Version : \"" + platform.getVersion() + "\"");
+         List<OpenCLDevice> devices = platform.getDevices();
+         System.out.println("   Platform contains " + devices.size() + " OpenCL devices");
+         int devicec = 0;
+         for (OpenCLDevice device : devices) {
+            System.out.println("   Device " + devicec + "{");
+            System.out.println("       Type                  : " + device.getType());
+            System.out.println("       GlobalMemSize         : " + device.getGlobalMemSize());
+            System.out.println("       LocalMemSize          : " + device.getLocalMemSize());
+            System.out.println("       MaxComputeUnits       : " + device.getMaxComputeUnits());
+            System.out.println("       MaxWorkGroupSizes     : " + device.getMaxWorkGroupSize());
+            System.out.println("       MaxWorkItemDimensions : " + device.getMaxWorkItemDimensions());
+            System.out.println("   }");
+            devicec++;
+         }
+         System.out.println("}");
+         platformc++;
+      }
+
+      Device bestDevice = OpenCLDevice.best();
+      if (bestDevice == null) {
+         System.out.println("OpenCLDevice.best() returned null!");
+      } else {
+         System.out.println("OpenCLDevice.best() returned { ");
+         System.out.println("   Type                  : " + bestDevice.getType());
+         System.out.println("   GlobalMemSize         : " + ((OpenCLDevice) bestDevice).getGlobalMemSize());
+         System.out.println("   LocalMemSize          : " + ((OpenCLDevice) bestDevice).getLocalMemSize());
+         System.out.println("   MaxComputeUnits       : " + ((OpenCLDevice) bestDevice).getMaxComputeUnits());
+         System.out.println("   MaxWorkGroupSizes     : " + ((OpenCLDevice) bestDevice).getMaxWorkGroupSize());
+         System.out.println("   MaxWorkItemDimensions : " + ((OpenCLDevice) bestDevice).getMaxWorkItemDimensions());
+         System.out.println("}");
+      }
+
+      Device firstCPU = OpenCLDevice.firstCPU();
+      if (firstCPU == null) {
+         System.out.println("OpenCLDevice.firstCPU() returned null!");
+      } else {
+         System.out.println("OpenCLDevice.firstCPU() returned { ");
+         System.out.println("   Type                  : " + firstCPU.getType());
+         System.out.println("   GlobalMemSize         : " + ((OpenCLDevice) firstCPU).getGlobalMemSize());
+         System.out.println("   LocalMemSize          : " + ((OpenCLDevice) firstCPU).getLocalMemSize());
+         System.out.println("   MaxComputeUnits       : " + ((OpenCLDevice) firstCPU).getMaxComputeUnits());
+         System.out.println("   MaxWorkGroupSizes     : " + ((OpenCLDevice) firstCPU).getMaxWorkGroupSize());
+         System.out.println("   MaxWorkItemDimensions : " + ((OpenCLDevice) firstCPU).getMaxWorkItemDimensions());
+         System.out.println("}");
+      }
+
+      Device firstGPU = OpenCLDevice.firstGPU();
+      if (firstGPU == null) {
+         System.out.println("OpenCLDevice.firstGPU() returned null!");
+      } else {
+         System.out.println("OpenCLDevice.firstGPU() returned { ");
+         System.out.println("   Type                  : " + firstGPU.getType());
+         System.out.println("   GlobalMemSize         : " + ((OpenCLDevice) firstGPU).getGlobalMemSize());
+         System.out.println("   LocalMemSize          : " + ((OpenCLDevice) firstGPU).getLocalMemSize());
+         System.out.println("   MaxComputeUnits       : " + ((OpenCLDevice) firstGPU).getMaxComputeUnits());
+         System.out.println("   MaxWorkGroupSizes     : " + ((OpenCLDevice) firstGPU).getMaxWorkGroupSize());
+         System.out.println("   MaxWorkItemDimensions : " + ((OpenCLDevice) firstGPU).getMaxWorkItemDimensions());
+         System.out.println("}");
+      }
+
    }
 
 }
-- 
GitLab