Ubuntu下,NVIDIA的驱动和Open CL安装后,就可以开发OpenCL程序了。
Mac OS X 10.6下,直接可用
这两个平台上使用的差别有两个:
- include头文件的位置不同(这个本来可以不是问题的,抱怨一下)
- 编译的不同
在Ubuntu 9.10中,缺省情况下:
- 头文件都放在/usr/include/CL目录下,
- 动态链接库libOpenCL.so放在/usr/lib目录下
写一个C语言的Hello程序opencl_hello.c试试
#include <stdio.h>
#include <stdlib.h>
#ifdef __APPLE__
#include <OpenCL/cl.h>
#elif defined(__linux__)
#include <CL/cl.h>
#endif
int main()
{
cl_uint NumPlatforms;
clGetPlatformIDs (0, NULL, &NumPlatforms);
cl_platform_id PlatformIDs[NumPlatforms];
clGetPlatformIDs(NumPlatforms, PlatformIDs, NULL);
char platformName[64];
size_t nameLen;
cl_int res = clGetPlatformInfo((PlatformIDs[0], CL_PLATFORM_NAME, 64, platformName, &nameLen);
if (res != CL_SUCCESS) {
fprintf(stderr, "Err: %d\n", res);
exit(1);
}
platformName[nameLen] = 0;
char openclVersion[64];
res = clGetPlatformInfo(NULL, CL_PLATFORM_VERSION, 64, openclVersion, &nameLen);
if (res != CL_SUCCESS) {
fprintf(stderr, "Err: %d\n", res);
exit(1);
}
openclVersion[nameLen] = 0;
printf("hello, %s's %s\n", platformName, openclVersion);
return 0;
}
编译:
Linux:
gcc opencl_hello.c -lOpenCL
Mac OS X:
gcc opencl_hello.c -framework OpenCL
执行:
Linux$ ./a.out
hello, NVIDIA's OpenCL 1.0
MacOSX$./a.out
hello, Apple's OpenCL 1.0 (Oct 16 2009 04:12:08)
进一步参考资料:
- OpenCL规范
- OpenCL API 1.0 quick reference card
- OpenCL Programming Guide
- OpenCL Jump Start: 比较了OpenCL和CUDA
- OpenCL Programming Guide for Mac OS X
分享到:
相关推荐
"OpenCL平台设备信息查询"这个代码片段,其主要目标就是获取系统上可用的OpenCL平台及其下的所有设备的相关信息。这包括但不限于: 1. 平台名称:识别运行OpenCL的软件环境,如NVIDIA CUDA、Intel OpenCL SDK等。 2...
OpenCL还提供了一系列API来管理平台上的各种计算设备,包括查询设备信息、执行计算任务以及管理设备内存等。开发者可以通过这些API控制设备,实现数据在主机(例如CPU)和计算设备(例如GPU)之间的高效传输。 此外...
在本项目"HelloOpenCL"中,我们将学习如何使用OpenCL实现一个简单的功能:将输入的大写字母转换为小写字母,并进行输出。 首先,我们需要理解OpenCL的基本架构。OpenCL由三大部分组成:主机代码、设备端内核代码和...
根据提供的文件信息,我们可以深入探讨OpenCL的基本概念与实践应用,特别是通过一个简单的Hello World示例来理解如何在OpenCL环境中编写和运行内核代码。 ### OpenCL简介 OpenCL(Open Computing Language)是一种...
查询机器上的OpenCL平台和设备的信息、参数,安状opencl 就可以看出来
AMD OpenCL 介绍在Windows系统下基于AMD GPU的OpenCL环境的搭建,并且基于矢量加法实例程序。 构建示例 在传统的AMD APP SDK设计中,已经不存在了,不知道为什么。但是AMD给了一种其他的方式, ...
这个程序包含了OpenCL的基本结构,包括初始化OpenCL环境、创建上下文、设备选择、队列创建、加载kernel源码、编译kernel、分配内存、设置内存、执行kernel以及读取结果。下面我们将详细探讨这些关键步骤。 首先,...
这个“IOS应用源码——利用OpenCL生成球体顶点 OpenCL_sphere.zip”压缩包包含了使用OpenCL来生成球体几何顶点的示例代码。下面我们将深入探讨OpenCL以及如何在iOS应用中利用它来生成球体顶点。 OpenCL是Khronos ...
这些例子可能涵盖从简单的设备信息查询到复杂的并行算法实现。 5. **文档**:好的开源项目会有详尽的文档,解释代码结构、设计理念以及如何运行和调试项目。这些文档可能以Markdown、HTML或PDF形式存在,对于初学者...
### OpenCL历史版本更新信息 #### 一、OpenCL 1.0至1.1版本更新概述 在从OpenCL 1.0过渡到1.1的过程中,该平台经历了一系列重要的改进与增强,旨在提高其功能性和兼容性,更好地满足高性能计算需求。以下是主要的...
3. **上下文创建**:OpenCL上下文(Context)是程序和OpenCL设备之间的桥梁,它保存了与特定设备相关的状态信息。`clCreateContext()`函数用于创建上下文。 4. **命令队列**:命令队列(Command Queue)负责调度和...
《OpenCL Hello World on Linux for Intel FPGA》 在IT领域,OpenCL(Open Computing Language)是一种开放标准,用于实现跨平台的并行编程,尤其适用于高性能计算和嵌入式系统。OpenCL允许开发者利用CPU、GPU、...
1. **OpenCL基础知识**:首先,我们需要了解OpenCL的基本概念,如上下文(Context)、命令队列(Command Queue)、内存对象(Memory Object)、程序(Program)和内核(Kernel)。这些是构建OpenCL程序的基础元素,它们共同...
1. **OpenCL平台**:平台是OpenCL实现的基础,它由一组设备组成,这些设备可以是同一类型的,也可以是不同类型的。平台提供了对设备的基本访问,并管理OpenCL上下文、命令队列等资源。 2. **OpenCL设备**:设备是...
1. 平台和设备:OpenCL首先需要识别可用的计算平台,例如NVIDIA的CUDA GPU或Intel的CPU。每个平台由一个或多个设备组成,设备是实际执行计算的地方,可能是GPU、CPU或其他加速器。 2. 上下文(Context):上下文是...
1. **OpenCL平台和设备选择**:首先,程序会枚举系统上的OpenCL平台,然后在这些平台上查找可用的设备,如GPU或CPU。`clGetPlatformIDs`函数用于获取平台ID,`clGetDeviceIDs`则用于获取设备ID。 2. **创建上下文**...