步骤如下:
1. 获得并选择可用平台
2. 查询GPU设备,并选择可用设备
3. 创建设备环境
4. 创建命令队列
5. 创建程序对象
6. 编译程序
7. 并创建输入输出内核内存对象
8. 创建内核对象
9. 设置内核参数
10. 运行内核
11. 将输出读取到主机内存
12. 输出计算结果
13. 释放资源
// OpenCl-1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <CL/cl.h>
#include <iostream>
#include <fstream>
using namespace std;
cl_int ConvertToString(const char *pFileName, std::string &str);
int _tmain(int argc, _TCHAR* argv[])
{
cl_int iStatus = 0; // 函数返回状态
cl_uint uiNumPlatforms = 0; // 平台个数
cl_platform_id Platform = NULL; // 选择的平台
size_t uiSize = 0; // 平台版本名字字节数
cl_int iErr = 0; // 返回参数
char *pName = NULL; // 平台版本名
cl_uint uiNumDevices = 0; // 设备数量
cl_device_id *pDevices = NULL; // 设备
cl_context Context = NULL; // 设备环境
cl_command_queue CommandQueue = NULL; // 命令队列
const char *pFileName = "HelloWorld_Kernel.cl"; // cl文件名
string strSource = ""; // 用于存储cl文件中的代码
const char *pSource; // 代码字符串指针
size_t uiArrSourceSize[] = {0}; // 代码字符串长度
cl_program Program = NULL; // 程序对象
const char *pInput = "gdkknvnqkc"; // 输入字符串
size_t uiStrlength = strlen(pInput); // 输入字符串长度
char *pOutput = NULL; // 输出字符串
cl_mem memInutBuffer = NULL; // 输入内存对象
cl_mem memOutputBuffer = NULL; // 输出内存对象
cl_kernel Kernel = NULL; // 内核对象
size_t uiGlobal_Work_Size[1] = {0}; // 用于设定内核分布
//-------------------1. 获得并选择可用平台-----------------------------
// 查询可用的平台个数,并返回状态
iStatus = clGetPlatformIDs(0, NULL, &u