OpenCL无法找到Intel HD 4000

时间:2017-03-28 10:42:48

标签: c++ opencl gpgpu

我会提前警告你我的书面英语不好,所以请耐心等待,因为我会犯很多错误。 我需要暴露图形卡,以便在有限元分析上使用并行算法进行一些基准测试。我在这个链接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

我尝试在视频组中添加当前用户,我还尝试按照软件包附带的说明安装英特尔®媒体服务器工作室,但由于一些编译错误,我无法构建内核。 我还使用Ubuntu的自动软件更新更新了所有驱动程序,但仍未找到GC。

1 个答案:

答案 0 :(得分:0)

也许您想尝试beignet,这是IvyBridge + iGPU的OpenCL实现。有beignet for Ubuntu 16.10个包。更准确地说,我认为您正在寻找包beignet-devbeignet-opencl-icd。自己测试,因为我目前没有安装Ubuntu。 (但是,beignet本身在我的Intel HD Graphics 520和Antergos / Arch Linux上运行良好)

相关问题