基于双核的JAVACL

基于双核的JAVACL,java,opencl,Java,Opencl,我在双核系统上使用JavaCL。我发现有两个平台,一个是AMD,一个是Intel,每个平台都有一个设备 should it not return one platform and two devices ? 不,该设备是您的CPU,即使您有多个插槽,它也会显示为一个设备 您编写的代码可以在尽可能多的可用内核上运行(无需知道有多少内核) 有些GPU有数千个内核,将它们作为一个设备一起使用要容易得多 should it not return one platform and two devices

我在双核系统上使用JavaCL。我发现有两个平台,一个是AMD,一个是Intel,每个平台都有一个设备

should it not return one platform and two devices ?

不,该设备是您的CPU,即使您有多个插槽,它也会显示为一个设备

您编写的代码可以在尽可能多的可用内核上运行(无需知道有多少内核)

有些GPU有数千个内核,将它们作为一个设备一起使用要容易得多

should it not return one platform and two devices ?

e、 g.有3072个核心,您不仅不想告诉每个核心要做什么,而且不容易做到。GPU是为每一个内核设计的,可以做同样的事情。

AMD和Intel都为他们的一些CPU和GPU提供OpenCL实现。就AMD而言,他们的OpenCL实现也支持Intel CPU。因此,在安装AMD加速并行处理(APP)SDK后,您的程序将至少识别一个带有一个设备的AMD平台,即计算机中的CPU。安装“英特尔OpenCL SDK”后,您将在计算机上运行第二个OpenCL实现,用于检测CPU。因此,查询可用平台将返回两个平台,每个平台都有一个设备。这两个设备是同一件事-你的计算机的CPU。区别在于OpenCL实现用于访问该CPU的内容,即Intel版本或AMD版本


关于内核数量,OpenCL将CPU视为单个设备,但它允许您查询设备(即CPU)上有多少计算单元(即物理内核)。

AMD是您的图形卡,“Intel”是您的CPU。如果它不返回两个设备用于我的CPU(双核系统),谢谢您的回复。但是为什么JavaCL返回给我两个平台。我的理解是,我有没有GPU的双核系统,JAVACL会给我一个有两个设备的平台。如果你有一个无头计算机(没有显示器),你可能仍然有一个GPU在板上。如果您有显示器、VGA、DVI或HDMI端口,即使是在chipset.CLPlatform platforms[]=JavaCL.listPlatforms()中,您也必须有GPU;对于(CLPlatform platform:platforms){CLDevice devices[]=platform.listGPUDevices(true);System.out.println(“找到的GPU设备:-“+devices.length”);}我使用此代码,但未找到任何设备。这意味着在我的系统中未找到GPU设备GPU是一个图形处理器单元。没有它,你就不能显示任何东西。事实上,你可以阅读这封邮件,告诉我你有一封,即使图书馆找不到。