必威体育Betway必威体育官网
当前位置:首页 > IT技术

OpenCL入门:Intel核心显卡OpenCL环境搭建)

时间:2019-08-15 05:42:10来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

核心显卡

组装的电脑没带独立显卡,用的是cpu自带的核显,型号是Intel hd graphics 530,关于显卡是否可以使用opencl,可以下载GPU-Z软件查看。

本文在windows 10 64位系统搭建OpenCL开发环境。

一、准备文件

将显卡驱动更新到最新版本,Windows 驱动中自动包含了OpenCL驱动,linux系统需要另外下载OpenCL驱动。

vs2012-vs2017任意版本。

下载Intel SDK for OpenCL APPlications,注意选择Windows平台,然后注册帐号后即可下载。

二、测试环境

下载示例项目,解压后打开CapsBasic目录下的sln文件(高版本自动升级项目)

上一步安装正确的话VS工具栏会有如下菜单

点击[生成]-[生成解决方案],不会有错

误出现。

image

运行结果可能如下(不同机器输出结果不同)

image

三、从模板新建项目

上面是直接下载别人已经配置好的项目,这里测试新建一个项目,打开VS,新建项目如下图:

image

添加一个新文件HelloOpenCL.cpp,在文件中添加如下代码

复制代码

#include <cstdlib>
#include <iOStream>
#include <iomanip>
#include <cstring>
#include <cassert>

#include <CL/cl.h>

/*
 * 修改自官方示例intel_ocl_caps_basic_win,用于测试手工配置项目
*/
int main()
{
    using namespace std;

    const char* required_platform_subname = "Intel";
    
    //函数返回值,CL_SUCCESS表示成功
    cl_int err = CL_SUCCESS;

    // 判断返回值是否正确的宏
#define CAPSBASIC_CHECK_ERRORS(ERR)        \
    if(ERR != CL_SUCCESS)                  \
    {                                      \
    cerr                                   \
    << "OpenCL error with code " << ERR    \
    << " happened in file " << __FILE__    \
    << " at line " << __LINE__             \
    << ". Exiting...\n";                   \
    exit(1);                               \
    }


    // 遍历系统中所有OpenCL平台
    cl_uint num_of_platforms = 0;
    // 得到平台数目
    err = clGetPlatformIDs(0, 0, &num_of_platforms);
    CAPSBASIC_CHECK_ERRORS(err);
    cout << "Number of available platforms: " << num_of_platforms << endl;

    cl_platform_id* platforms = new cl_platform_id[num_of_platforms];
    // 得到所有平台的ID
    err = clGetPlatformIDs(num_of_platforms, platforms, 0);
    CAPSBASIC_CHECK_ERRORS(err);


    //列出所有平台
    cl_uint selected_platform_index = num_of_platforms;

    cout << "Platform names:\n";

    for (cl_uint i = 0; i < num_of_platforms; ++i)
    {
        size_t platform_name_length = 0;
        err = clGetPlatformInfo(
            platforms[i],
            CL_PLATFORM_NAME,
            0,
            0,
            &platform_name_length
        );
        CAPSBASIC_CHECK_ERRORS(err);

        // 调用两次,第一次是得到名称的长度
        char* platform_name = new char[platform_name_length];
        err = clGetPlatformInfo(
            platforms[i],
            CL_PLATFORM_NAME,
            platform_name_length,
            platform_name,
            0
        );
        CAPSBASIC_CHECK_ERRORS(err);

        cout << "    [" << i << "] " << platform_name;

        if (
            strstr(platform_name, required_platform_subname) &&
            selected_platform_index == num_of_platforms // have not selected yet
            )
        {
            cout << " [Selected]";
            selected_platform_index = i;
        }

        cout << endl;
        delete[] platform_name;
    }
    delete[] platforms;
    return 0;
}

复制代码

运行结果如下:

image

相关阅读

LTE入门, 从这本书开始

为LTE的初学者,如何选择第一本LTE书籍至关重要。这里,LTE学习大使向大家推荐《LTE教程:原理与实现》第2版。 为什么《LTE教程:原理

android入门书籍-------第一行代码免费下载

免费下载,记得点个赞吧!!! 链接:https://pan.baidu.com/s/1lAlQB1dCzKk1oR4wkhAdSA 密码:e2gr

nodejs环境搭建

1. nodejs下载与安装: (1)nodejs下载链接:https://nodejs.org/zh-cn/download/ 。安装的过程一路next就可以了,安装后将nodejs设置为

Mycat入门学习理解

一、安装 从官网下载符合自己要求的Mycat版本,安装步骤可以根据官网提供的权威指南来操作,也可以在网上搜索安装教程,教程比较多,这

Linux实战50台服务器规模集群模式之环境搭建准备篇(综

一、搭建集群1、采购服务器、性能测试、不同集群用什么配置。2、采购云服务(云主机、虚拟机)。3、采购带宽、压力测试。4、采购CDN

分享到:

栏目导航

推荐阅读

热门阅读