我会提前警告你我的书面英语不好,所以请耐心等待,因为我会犯很多错误。
我需要暴露显卡,以便使用有限元分析的并行算法进行一些基准测试。我在此链接https://software.intel.com/en-us/intel-opencl下载了intel SDK。 我使用的是 Ubuntu 16.10,所以我遵循了这篇文章中解释的所有说明https://streamcomputing.eu/blog/2011-06-24/install-opencl-on-debianubuntu-orderly/。
当我运行一个简单的算法来检查所有设备时,它只识别CPU,而无法找到显卡。相同的程序在 Mac 上运行良好(因为 OpenCL 当然在堆栈中)。
// includes...
int main(int argc, const char * argv[])
{
// See what standard OpenCL sees
std::vector<cl::Platform> platforms;
// Get platform
cl::Platform::get(&platforms);
// Temp
std::string s;
// Where the GPU lies
cl::Device gpudevice;
// Found a GPU
bool gpufound = false;
std::cout << "**** OPENCL ****" << std::endl;
// See if we have a GPU
for (auto p : platforms)
{
std::vector<cl::Device> devices;
p.getDevices(CL_DEVICE_TYPE_ALL, &devices);
for (auto d : devices)
{
std::size_t i = 4;
d.getInfo(CL_DEVICE_TYPE, &i);
std::cout << "> Device type " <<
(i & CL_DEVICE_TYPE_CPU ? "CPU" : "") <<
(i & CL_DEVICE_TYPE_GPU ? "GPU" : "") <<
(i & CL_DEVICE_TYPE_ACCELERATOR ? "ACCELERATOR" : "");
if (i & CL_DEVICE_TYPE_GPU)
{
gpudevice = d;
gpufound = true;
}
std::cout << " Version " << s << std::endl;
}
}
if (!gpufound)
{
std::cout << "NO GPU FOUND. ABORTING." << std::endl;
return 1;
}
// Do other things...
输出为:
/home/andrea/Dropbox/fem/SiNDy/clfem/cmake-build-debug/vector_sycl
**** OPENCL ****
> Device type CPU Version
NO GPU FOUND. ABORTING.
Process finished with exit code 1
我尝试将当前用户添加到视频组中,我还尝试按照软件包附带的说明安装 Intel Media Server Studio,但由于一些编译错误,我无法构建内核。
我也用Ubuntu的自动软件更新更新了所有驱动,但还是找不到GC。
也许您想尝试 beignet,这是 IvyBridge+ iGPU 的 OpenCL 实现。有适用于 Ubuntu 16.10 的 beignet 软件包。更准确地说,我认为您正在寻找包
beignet-dev
和beignet-opencl-icd
。自己测试一下,因为我当前没有可用的 Ubuntu 安装。 (但是,beignet 本身在我的 Intel HD Graphics 520 和 Antergos/Arch Linux 上运行得很好)