`
cryolite
  • 浏览: 581413 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hello OpenCL——设备信息查询及编译(1)

阅读更多
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)

进一步参考资料:
  1. OpenCL规范
  2. OpenCL API 1.0 quick reference card
  3. OpenCL Programming Guide
  4. OpenCL Jump Start: 比较了OpenCL和CUDA
  5. OpenCL Programming Guide for Mac OS X
分享到:
评论

相关推荐

    OpenCL平台设备信息查询

    "OpenCL平台设备信息查询"这个代码片段,其主要目标就是获取系统上可用的OpenCL平台及其下的所有设备的相关信息。这包括但不限于: 1. 平台名称:识别运行OpenCL的软件环境,如NVIDIA CUDA、Intel OpenCL SDK等。 2...

    OpenCL语言及编译技术分析

    OpenCL还提供了一系列API来管理平台上的各种计算设备,包括查询设备信息、执行计算任务以及管理设备内存等。开发者可以通过这些API控制设备,实现数据在主机(例如CPU)和计算设备(例如GPU)之间的高效传输。 此外...

    HelloOpenCL

    在本项目"HelloOpenCL"中,我们将学习如何使用OpenCL实现一个简单的功能:将输入的大写字母转换为小写字母,并进行输出。 首先,我们需要理解OpenCL的基本架构。OpenCL由三大部分组成:主机代码、设备端内核代码和...

    opencl_helloworld

    根据提供的文件信息,我们可以深入探讨OpenCL的基本概念与实践应用,特别是通过一个简单的Hello World示例来理解如何在OpenCL环境中编写和运行内核代码。 ### OpenCL简介 OpenCL(Open Computing Language)是一种...

    Opencl设备信息参数

    查询机器上的OpenCL平台和设备的信息、参数,安状opencl 就可以看出来

    OpenCL——AMD平台搭建

    AMD OpenCL 介绍在Windows系统下基于AMD GPU的OpenCL环境的搭建,并且基于矢量加法实例程序。 构建示例 在传统的AMD APP SDK设计中,已经不存在了,不知道为什么。但是AMD给了一种其他的方式, ...

    OpenCL编写的Hello程序,是个最小系统,可以入门

    这个程序包含了OpenCL的基本结构,包括初始化OpenCL环境、创建上下文、设备选择、队列创建、加载kernel源码、编译kernel、分配内存、设置内存、执行kernel以及读取结果。下面我们将详细探讨这些关键步骤。 首先,...

    IOS应用源码——利用OpenCL生成球体顶点 OpenCL_sphere.zip

    这个“IOS应用源码——利用OpenCL生成球体顶点 OpenCL_sphere.zip”压缩包包含了使用OpenCL来生成球体几何顶点的示例代码。下面我们将深入探讨OpenCL以及如何在iOS应用中利用它来生成球体顶点。 OpenCL是Khronos ...

    papaa-opencl-master.zip

    这些例子可能涵盖从简单的设备信息查询到复杂的并行算法实现。 5. **文档**:好的开源项目会有详尽的文档,解释代码结构、设计理念以及如何运行和调试项目。这些文档可能以Markdown、HTML或PDF形式存在,对于初学者...

    OpenCL 历史版本更新信息

    ### OpenCL历史版本更新信息 #### 一、OpenCL 1.0至1.1版本更新概述 在从OpenCL 1.0过渡到1.1的过程中,该平台经历了一系列重要的改进与增强,旨在提高其功能性和兼容性,更好地满足高性能计算需求。以下是主要的...

    opencl demo -1

    3. **上下文创建**:OpenCL上下文(Context)是程序和OpenCL设备之间的桥梁,它保存了与特定设备相关的状态信息。`clCreateContext()`函数用于创建上下文。 4. **命令队列**:命令队列(Command Queue)负责调度和...

    exm_opencl_hello_world_x64_linux.tar.gz_OpencL_column85w_linux_t

    《OpenCL Hello World on Linux for Intel FPGA》 在IT领域,OpenCL(Open Computing Language)是一种开放标准,用于实现跨平台的并行编程,尤其适用于高性能计算和嵌入式系统。OpenCL允许开发者利用CPU、GPU、...

    IOS应用源码——OpenCL_sphere.zip

    1. **OpenCL基础知识**:首先,我们需要了解OpenCL的基本概念,如上下文(Context)、命令队列(Command Queue)、内存对象(Memory Object)、程序(Program)和内核(Kernel)。这些是构建OpenCL程序的基础元素,它们共同...

    openCL模板工程

    1. **OpenCL平台**:平台是OpenCL实现的基础,它由一组设备组成,这些设备可以是同一类型的,也可以是不同类型的。平台提供了对设备的基本访问,并管理OpenCL上下文、命令队列等资源。 2. **OpenCL设备**:设备是...

    OpenCL异构并行编程实战-src,opencl异构并行编程实战 pdf,C,C++

    1. 平台和设备:OpenCL首先需要识别可用的计算平台,例如NVIDIA的CUDA GPU或Intel的CPU。每个平台由一个或多个设备组成,设备是实际执行计算的地方,可能是GPU、CPU或其他加速器。 2. 上下文(Context):上下文是...

    1 OpenCL vecadd.docx

    1. **OpenCL平台和设备选择**:首先,程序会枚举系统上的OpenCL平台,然后在这些平台上查找可用的设备,如GPU或CPU。`clGetPlatformIDs`函数用于获取平台ID,`clGetDeviceIDs`则用于获取设备ID。 2. **创建上下文**...

Global site tag (gtag.js) - Google Analytics