组装的电脑没带独立显卡,用的是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工具栏会有如下菜单

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

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

三、从模板新建项目

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

添加一个新文件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(); \
} // 遍历系统中所有OpenCL平台
cl_uint num_of_platforms = ;
// 得到平台数目
err = clGetPlatformIDs(, , &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, );
CAPSBASIC_CHECK_ERRORS(err); //列出所有平台
cl_uint selected_platform_index = num_of_platforms; cout << "Platform names:\n"; for (cl_uint i = ; i < num_of_platforms; ++i)
{
size_t platform_name_length = ;
err = clGetPlatformInfo(
platforms[i],
CL_PLATFORM_NAME,
,
,
&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, );
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 ;
}

运行结果如下:

四、后续

后续会增加GPU计算相关文章。

OpenCL入门:(一:Intel核心显卡OpenCL环境搭建)的更多相关文章

  1. Unix/Linux环境C编程入门教程(17) Gentoo LinuxCCPP开发环境搭建

    1. Gentoo Linux是一套通用的.快捷的.完全免费的Linux发行,它面向开发人员和网络职业人员.与其他发行不同的是,Gentoo Linux拥有一套先进的包管理系统叫作Portage.在B ...

  2. Unix/Linux环境C编程入门教程(9) unbntu CCPP开发环境搭建

    1.      首先启动VMware,如果没有安装,请查看前面VMware的安装视频 2 启动虚拟机向导,选择自定义 3 单击下一步 4 选择稍后安装操作系统 5 .选择unbntu 64linux ...

  3. Flutter入门教程(二)开发环境搭建

    学习Flutter,首先需要搭建好Flutter的开发环境,下面我将一步步带领大家搭建开发环境并且成功运行flutter项目. Flutter环境配置主要有这几点: 系统配置要求 Java环境 Flu ...

  4. Linux入门第一天——基本概述与环境搭建

     一.Linux简介 1.历史 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操 ...

  5. Java入门到实践系列(2)——Java环境搭建

    一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...

  6. SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)

    SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...

  7. spring入门(五)【springMVC环境搭建】

    springMVC作为spring的一个WEB组件,是一个MVC的思想,减少了WEB开发的难度,现介绍springMVC环境的搭建,具体的原理放在后面介绍.用过框架的朋友都知道要在WEB项目中使用一个 ...

  8. Hadoop入门进阶课程3--Hadoop2.X64位环境搭建

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  9. Unix/Linux环境C编程入门教程(16) LinuxMint CCPP开发环境搭建

    1. Linux Mint由Linux Mint Team团队于2006年开始发行,是一份基于 这个时候linuxmint安装完成,C/C++开发环境也配置完成,希望大家认真实践!

随机推荐

  1. shell脚本进阶 详解及其实例(一)

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  2. spring boot容器加载完后执行特定操作

    有时候我们需要在spring boot容器启动并加载完后,开一些线程或者一些程序来干某些事情.这时候我们需要配置ContextRefreshedEvent事件来实现我们要做的事情 1.Applicat ...

  3. .NET完全手动搭建三层B/S架构

    简介:三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(WebUI).业务逻辑层(BusinessLogicLayer).数据访问层(DataAc ...

  4. Gradle Goodness: Renaming Files while Copying

    With the Gradle copy task we can define renaming rules for the files that are copied. We use the ren ...

  5. GPUImage源码解读之GLProgram

    简述 GLProgram是GPUImage中代表openGL ES 中的program,具有glprogram功能.其实是作者对OpenGL ES program的面向对象封装 初始化 - (id)i ...

  6. Java并发编程(六)原子性与易变性

    原子性 原子是最小单元.不可再分的意思.原子性是指某个操作在获取CPU时间时,要么就给它足够时间,让这个操作执行完,要么就不执行这个操作,执行时不能出现上下文切换(把CPU时间从一个线程分配到另一个线 ...

  7. angular4 防二次重复点击

    监听click事件, 默认三秒钟内的点击事件触发第一次的点击事件,也可以通过throttleTime自定义时间 只触发第一次 /** * <div (throttleClick)="g ...

  8. 使用Mybatis连接到Mysql报错,WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be esta

    在Eclipse中使用springboot整合Mybatis,连接到5.7版本Mysql报错WARN: Establishing SSL connection without server's ide ...

  9. MySQL 基础小技巧

    把MySQL软件制作成系统服务 .把mysqld软件做成系统服务 注意:制作之前先把mysqld关掉 C:\Windows\system32>tasklist |findstr mysqld m ...

  10. Redis学习笔记(二)

    解读Retwis官网例子 Redis需要考虑需要哪些keys以及对应的value使用合适的数据类型进行存储.在retwis例子中,我们需要users,user的粉丝列表, user的关注用户列表等等. ...