我的笔记本电脑有 - 一个CPU核心i5:Intel(R)Core TM i5-3210M CPU @ 2.50GHz - 一个显卡:Intel(R)HD Graphics 4000 - 一个Nvidia卡(外部卡): GeForce GT 630M如何在JavaCL中结合CPU和GPU?
但是,当我试图使用JavaCL.createBestContext(),它看起来就像使用一个卡英特尔高清显卡。所以我试图结合使用3:CPU和2个GPU:
List<CLDevice> devices = new ArrayList<CLDevice>();
// try to list all platform and devices
for(CLPlatform platform : JavaCL.listPlatforms()) {
//System.out.println(platform.getName());
for (CLDevice device : platform.listAllDevices(true)) {
System.out.println(device.getName().trim());
devices.add(device);
}
}
CLDevice device1 = (CLDevice)devices.get(0);
CLDevice device2 = (CLDevice)devices.get(1);
CLDevice device3 = (CLDevice)devices.get(2);
CLContext context = JavaCL.createContext(null, device1, device2, device3);
但是我在尝试使用3时出现错误。那么如何在JavaCL中编译CPU和GPU?因为我读到OpenCL是标准的,通过使用CPU和GPU来支持并行编程。所以,如果我错过了什么,请让我知道。任何想法或答案将不胜感激。
谢谢, Duy。
感谢您的回答,我明白了您的想法,但您是否有任何示例?因为我在OpenCL中真的很新鲜。 –
@DuyChung我没有一个简单的例子给你。由于您是OpenCL的新手,因此我现在会警告多GPU编程。您需要熟悉Java中的多线程,为并发编程设计的数据类型以及设备之间的负载平衡(如果您希望看到任何加速) – chippies
实际上,我已经尝试过使用相同平台的CPU和GPU,但在不同的平台上,我从来没有尝试过,也不知道如何开始。但无论如何,感谢您的信息。我会尽力找出解决方案。 –