文章关键字 ‘OpenCL’

AMD OpenCL 2.1 SDK发布

2010年05月3日,星期一

AMD发布了2.1版的OpenCL SDK,下载链接,增加了:

  • Support for openSUSE 11.2 and Red Hat Enterprise Linux 5.4.
  • Support for OpenCL / OpenGL interoperability.
  • Support for OpenCL byte addressable stores.
  • Support for OpenCL™ images.
  • Extension: Support for double-precision floating point basic arithmetic in OpenCL C kernels.
  • Extension: Support for AMD media operations in OpenCL.
  • Extension: Support for device fission in OpenCL.
  • Extension: Support for device attribute queries in OpenCL
  • Preview Feature: Support for binary OpenCL kernels.
  • Additional OpenCL samples: HistogramAtomics, MatrixMulDouble, MatrixMulImage, SimpleGL, SimpleImage, SobelFilterImage, URNGNoiseGL.
  • Stream KernelAnalyzer 1.5 installer now bundled with the ATI Stream SDK v2.1.

比较关注与OpenGL的互操作以及Image类型

第二个新闻:Hpctech推出了一个opencl性能测试工具:http://www.hpctech.com/down/opencl/index_cn.html

AMD/ATI 发布Stream SDK 2.0正式版

2009年12月23日,星期三

详细报道:
Link1
Link 2
官方下载
大致看了以下,依旧没有提供对image的支持,不过好歹增加了对dx和opengl的互操作。
根据之前测试版的经验,对性能提升不太报希望(ps 之前测试性能竟然和brook+实现在一个级别,比较汗的说)。

基于CT重建的性能测试稍候提供。

OpenCL Benchmark

2009年12月5日,星期六

AMD和Sisoft联合在Sisoft的Sandra 2010里面添加了opencl benchmark。支持的硬件有:

  • ATI GPUs: Radeon HD 5800, 5700 series
  • AMD CPUs: Athlon Neo, Six (6)/Eight (8)/Twelve (12)-Core Opteron 4100, 6100 server
  • Intel CPUs: Core i5/i7 desktop/mobile, Xeon Nehalem-EX server
  • nVidia GPUs: GT215, GT216, GT218 series
  • VIA CPUs: Nano 3000 series
  • Hardware monitoring: Analog Devices (ADT), SMSC, Winbond/Nuovoton

大致是对带宽的测试和计算性能的测试,结果:
GPU结果
CPU结果
比较诡异的是,amd的显卡是5870 ,NVidia的显卡竟然选用的是9500,这个…有点太…

OpenCL系列(四)-Memory

2009年11月28日,星期六

Memory分类和访问(Memory Layout and Access)

opencl将存储模型分为三种:Private Memory,Local Memory,Constant Memory和Global Memory。其中Private Memory只可以被work-item使用,也就是单个work-item私有的;Local Memory可以被同一个work-group内的work-item所使用;Global Memory可以被所有的work-item访问和修改;而Constant Memory是Global Memory的一种,区别在于它是不能被更改的。示意图如下[1]:
opencl_memory_layout

大致了解了opencl中存储类型后,就会发现opencl的memory model和cuda的极为类似,ok,这里就简单的列出opencl中集中memory类型在Nvidia的GPU、AMD的GPU和CPU中实际对应的数据类型:

Opencl Nvidia CUDA ATI GPU AMD CPU
Global Memory Global Memory global buffer (g[] in CAL/IL) 系统内存(RAM)
Local Memory Shared Memory Local Data Share CPU L1缓存
Private Memory Register scratch memory (x[] in CAL/IL) 系统内存RAM

update@2009.11.30
Opencl中还有一种存储类型:Image,也就是cuda中的纹理内存,包含2D和3D image。与CUDA中纹理一样提供不同的插值(采样)方式,同时也提供一定cache(硬件支持的),个人感觉,这是一个GPU的遗留产物,在CPU和DSP等的Opencl实现极有可能不提供对其的支持。所以要注意在使用时,最好先查询一下是否支持。

如何使用(How to use these memory)
to be continued…

IBM停止CELL开发

2009年11月22日,星期日

坑,又少了一个。原文
update:好像是说停止了相关sdk的开发,转向了opencl,这点和前几天从amd那边得到的消息一致。

OpenCL系列讲座(三) Step By Step

2009年11月8日,星期日

  我们已经写好的Kernel函数一般保存在一个字符串内,例如在第二节中的kernel:输入两个一维数组,用另外一个一维数组输出两个一维数组求和的结果,如下:

char* chKernelSource = "__kernel sum 
(__global const float* a, __global const float* b,  
__global float* answer)
{
   int xid = get_global_id(0);
    answer[xid] = a[xid] + b[xid];
}";

概述中所言,下面我们一步一步来写Host代码Main函数部分;
  (全文…)

OpenCL系列讲座(二) 基本概念

2009年11月7日,星期六

1、计算设备(Compute Device). 是指系统中支持OpenCL的各类处理器,可以是CPU, GPU,甚至是DSP。一个系统中可以有多个Device连接到主机(Host)上。另外,每个device中会包含多个计算单元(Compute Unit),例如多核的CPU或者GPU中的多处理器(Multi-Processor). 而每个计算单元中还可以包含多个处理单位(PE, Processing Element). CPU中每个计算单元只含有一个PE, 而GPU中则含有多个。我们可以通过clGetDeviceIDs()这个函数来检查系统中是否有支持OpenCL的设备,并且配合clGetDeviceInfo()函数来了解该设备中如设备类型、计算单元个数等信息。

image

2、执行(Execution)
最终在Device上执行的代码成为内核(Kernel),这类代码是C语言的扩展,像下面这样子:

__kernel sum(__global const float* a, __global const float* b,
    __global float* answer)
{
   int xid = get_global_id(0);
    answer[xid] = a[xid] + b[xid];
}

(全文…)

OpenCL系列讲座(一) 概览

2009年11月4日,星期三

OpenCL(Open Computing Language)是由Apple发起,由Khronos负责起草的用于跨平台并行计算的工业标准。基于该标准,我们可以使用任何系统中支持该标准的计算资源。由于该标准支持不同的编程语言、不同的硬件设备并且高效,因此可能成为软件、中间件乃至使用高性能计算设备厂商的有效解决方案。
(全文…)

AMD 发布OpenCL GPU实现

2009年10月18日,星期日

近日AMD也发布了其GPU的opencl实现,第一时间去测试了一般,很遗憾,在NV的实现可以运行的代码没有成功的运行起来,初步分析原因是可能amd的实现还未支持texture,导致kernel加载失败。不过设备查询的初始化代码正确的,稍微有点安慰。

SDK下载地址:SDK

update:确实是没有支持image(texture),这样只来需要在kernel里面实现插值,性能更…