“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

OpenCL Studio 1.0 beta released

2010年04月7日,星期三

Geist Software Labs has released the first version of OpenCL Studio for beta testing. OpenCL Studio combines OpenCL and OpenGL into a single integrated development environment that allows you to visualize OpenCL computation using powerful 3D rendering techniques. The editor hides much of the complexity of the underlying APIs while still providing flexibility via the Lua scripting language. Integrated source code editors and debugging capabilities for OpenCL, GLSL, and Lua, as well as a toolbox of 2D user interface widgets provide a framework for a wide range of parallel programming solutions.

From: http://gpgpu.org/

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…

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里面实现插值,性能更…