【OpenCL开发入门】01 - 搭建Visual Studio 2022+OpenCL开发环境
本系列文章汇总:
一、安装 Visual Studio 2022
下载安装 Visual Studio 2022社区免费版:《Visual Studio 2022 版本 17.0 下载》
先只安装这两个组件吧,其他有需要的后续再加。
接下来就是漫长的等待,家里网速还行,也不用太久:
二、搭建Intel OpenCL环境搭建
下载工具:《Intel® oneAPI IoT Toolkit v.2022》,
注意下载前如果没有Intel 账号,要先注册后才可以 下载,下载后安装:
安装完成后,有如下三个路径,各自配置就行:
cl.h
头文件目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\lib\oclfpga\host\include\CL
opencl.lib
目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\lib\oclfpga\host\windows64\lib
cl.h
头文件目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\lib
opencl.lib
目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\include\sycl\CL
cl.h
头文件目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\lib\x86
opencl.lib
目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\include\sycl\CL
三、编写最简单的OpenCL程序
-
建立一个空白项目
-
配置项目文件保存路径
-
添加一个
cpp
源文件
-
进入项目属性,开始配置opencl头文件目录和依赖库目录
添加opencl
的头文件目录和库的目录:
cl.h
头文件目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\lib\oclfpga\host\include
opencl.lib
库目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.0\windows\lib\oclfpga\host\windows64\lib
lib
库名为:OpenCL.lib
-
配置
cl.h
头文件目录
-
配置
opencl.lib
库目录
-
配置lib库名
-
编写测试程序
包含opencl
的头文件和库后,我们先来调用opencl
的api
查询下当前设备所有的platform info
信息,代码如下:
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cassert>
#include <CL/cl.h>
using namespace std;
// 检查返回值错误
#define CHECK_ERRORS(ERR) \
if(ERR != CL_SUCCESS){ \
cerr << "OpenCL error code" << ERR \
<< "file: " << __FILE__ \
<< "line: " << __LINE__ \
<< ".\nExiting..." << endl; \
exit(1); \
}
int main(int argc, const char** argv)
{
cl_int err = CL_SUCCESS;
// 1. 获取当前设备所有支持OpenCL的平台的数量
cl_uint num_of_platforms = 0;
err = clGetPlatformIDs(0, 0, &num_of_platforms);
CHECK_ERRORS(err);
// 2. 获取当前设备所有支持OpenCL的平台的信息
cl_platform_id* platforms = new cl_platform_id[num_of_platforms];
err = clGetPlatformIDs(num_of_platforms, platforms, 0);
CHECK_ERRORS(err);
cout << "平台信息:\n";
// 3. 打印平台信息
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);
CHECK_ERRORS(err);
// 获取平台字符串
char* platform_name = new char[platform_name_length];
err = clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, platform_name_length, platform_name, 0);
CHECK_ERRORS(err);
cout << " [" << i << "] " << platform_name << endl;
}
return 0;
}
- 编译测试下,如果能编译运行成功,显示如下信息,恭喜你,说明OpenCL 环境搭建成功了。