AM5728/AM57XX openCL使用案例一(查询硬件资源)

原创 2016年05月30日 12:22:21

我们知道AM5728/AM57XX系列芯片支持使用openCL来调用DSP,

因此可以通过openCL硬件加速来提升算法效率,降低 CPU使用率.

openCL是一个为异构系统编写程序的框架,该异构系统可以由

CPUGPUDSP甚至FPGA组成,因此openCL开发人员需要对其运行的

硬件平台有非常大的了解,下面程序主要用来查询openCL的硬件资源


程序源码如下

```

int main(void)
{
    char strings[512];
    cl_uint num_platform;
    cl_platform_id platform_id[20];
    cl_uint num_device;
    cl_device_id device_id[20];
    cl_device_type device_type;
    cl_ulong tmp;


    clGetPlatformIDs(0, NULL, &num_platform);
    clGetPlatformIDs(num_platform, platform_id, NULL);


    for (int i = 0; i < num_platform; i ++) {
        
        clGetPlatformInfo(platform_id[i], CL_PLATFORM_NAME, 512, strings, NULL);
        printf("platform name [%s]\n", strings);
        
        clGetPlatformInfo(platform_id[i], CL_PLATFORM_VENDOR, 512, strings, NULL);
        printf("platform vendor [%s]\n", strings);
        
        clGetPlatformInfo(platform_id[i], CL_PLATFORM_VERSION, 512, strings, NULL);
        printf("platform version [%s]\n", strings);
        
        clGetPlatformInfo(platform_id[i], CL_PLATFORM_PROFILE, 512, strings, NULL);
        printf("platform profile [%s]\n", strings);
        
        clGetDeviceIDs(platform_id[i], CL_DEVICE_TYPE_ALL, 20, device_id, &num_device);
        for (int j = 0; j < num_device; j ++) {
            clGetDeviceInfo(device_id[j], CL_DEVICE_TYPE, sizeof(cl_device_type), 
                            &device_type, NULL);
            if (device_type == CL_DEVICE_TYPE_CPU)
                printf("device type [cpu]\n");
            else if (device_type == CL_DEVICE_TYPE_GPU)
                printf("device type [gpu]\n");
            else if (device_type == CL_DEVICE_TYPE_ACCELERATOR)
                printf("device type [accelerator]\n");
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_NAME, 512, strings, NULL);
            printf("device name [%s]\n", strings);
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_GLOBAL_MEM_SIZE,
                            sizeof(cl_ulong), &tmp, NULL);
            printf("device global mem [%lld]MB\n", tmp/1024/1024);
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_GLOBAL_MEM_CACHE_SIZE,
                            sizeof(cl_ulong), &tmp, NULL);
            printf("device global mem cache [%lld]KB\n", tmp/1024);
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_LOCAL_MEM_SIZE,
                            sizeof(cl_ulong), &tmp, NULL);
            printf("device local mem [%lld]KB\n", tmp/1024);
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_MAX_MEM_ALLOC_SIZE,
                            sizeof(cl_ulong), &tmp, NULL);
            printf("device max mem alloc [%lld]MB\n", tmp/1024/1024);
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_MAX_CLOCK_FREQUENCY,
                            sizeof(cl_ulong), &tmp, NULL);
            printf("device max clock frequency [%lld]MHZ\n", tmp);
            
            clGetDeviceInfo(device_id[j], CL_DEVICE_MAX_COMPUTE_UNITS,
                            sizeof(cl_ulong), &tmp, NULL);
            printf("device max compute unit [%lld]\n", tmp);
        }
    }


    return 0;

}

```

将上述程序进行编译,在am5728板卡上运行,结果如下

 


转载,请注明  匠牛社区AM5728开发板


版权声明:本文为博主原创文章,未经博主允许不得转载。

AM5728调试经历

由于本科生毕业设计的要求,研究生导师希望能够尽快的搭建出基于DSP的视觉处理平台,所以选择使用AM5728这样一款高性能的ARM+DSP,笔者是只菜鸟,博文中有些错误还请大家提出,一起探讨。...
  • u014494552
  • u014494552
  • 2017年03月16日 16:30
  • 2073

AM5728调试经历(2)

AM5728调试经历(2) 这次的主要内容是在Linux上安装CCS6.1.3软件,以及一些基本的操作,为后面建立做基本的工程做准备...
  • u014494552
  • u014494552
  • 2017年03月21日 13:57
  • 1370

【ARM-Linux开发】【DSP开发】AM5728介绍

AM5728 Sitara Processors 1.    介绍 1.1 AM572x概述 AM572x是高性能,Sitara器件、以28nm技术集成: ...
  • LG1259156776
  • LG1259156776
  • 2016年11月22日 10:54
  • 2347

AM5728概述(1)

介绍Ti最新推出的Sitara处理器AM572x
  • shanghaiqianlun
  • shanghaiqianlun
  • 2015年12月24日 20:00
  • 3948

AM5728调试经历(2)

AM5728调试经历(2) 这次的主要内容是在Linux上安装CCS6.1.3软件,以及一些基本的操作,为后面建立做基本的工程做准备...
  • u014494552
  • u014494552
  • 2017年03月21日 13:57
  • 1370

AM5728/AM57XX openCL使用案例三(矩阵转置)

下面对10x10矩阵进行转置,调用openCL,10X10矩阵采用二维数组进行存储,在程序设计上,让转置过程分10次转置完成,就是一次转一行,因此OpenCL的工作维数是二维   openCL程序分为...
  • ohyes158
  • ohyes158
  • 2016年06月19日 21:56
  • 921

AM5728调试经历

由于本科生毕业设计的要求,研究生导师希望能够尽快的搭建出基于DSP的视觉处理平台,所以选择使用AM5728这样一款高性能的ARM+DSP,笔者是只菜鸟,博文中有些错误还请大家提出,一起探讨。...
  • u014494552
  • u014494552
  • 2017年03月16日 16:30
  • 2073

AM5728/AM57xx芯片设备树继承关系图

一 设备树简介 arm-linux内核在3.0版本以后,不再使用板级文件添加设备驱动信息了,而是使用设备树进行添加. 这样的好处是,对于相同SOC芯片的不同板卡,只需更换设备树文件.dtb即可实现不同...
  • ohyes158
  • ohyes158
  • 2016年06月29日 15:41
  • 1594

【DSP开发】【Linux开发】基于ARM+DSP进行应用开发

针对当前应用的复杂性,SOC芯片更好能能满足应用和媒体的需求,集成众多接口,用ARM做为应用处理器进行多样化的应用开发和用户界面和接口,利用DSP进行算法加速,特别是媒体的编解码算法加速,既能够保持算...
  • LG1259156776
  • LG1259156776
  • 2016年09月05日 22:34
  • 794

关于AM5728评估板

介绍一下AM5728评估板的一些电路
  • shanghaiqianlun
  • shanghaiqianlun
  • 2016年09月07日 11:57
  • 1452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AM5728/AM57XX openCL使用案例一(查询硬件资源)
举报原因:
原因补充:

(最多只允许输入30个字)