GalliumCompute

Contents

  1. Current Status
  2. How to Install
    1. R600
      1. Supported Hardware
      2. Instructions
        1. Installation notes
      3. Testing

Current Status

For supporting OpenCL, or hardware level GeneralPurposeGPU computing. We are at the planning stage, and redesigning the interfaces in gallium to support compute, like TGSI. It is expected that we will support AMD (ATI) Evergreen (r800 - HD5xxx), and hopefully Nvidia cards too.

cpu (llvmpipe)

nv50

nvc0

r700

r800

r900

non gallium test code1

N/N

TODO

TODO

DONE

DONE

WIP

gallium hw interface

N/N

MOSTLY

MOSTLY

3D

MOSTLY

TODO

execute binary2 compute shader

TODO

TODO

TODO

N/A

MOSTLY

TODO

handling GPU buffers

TODO

TODO

TODO

TODO

WIP

TODO

execute TGSI compute shader

TODO

TODO

TODO

TODO

N/A

TODO

execute LLVM-IR compute shader

TODO

TODO

TODO

TODO

DONE

TODO

performance profiling

TODO

TODO

TODO

TODO

TODO

TODO

local sync

TODO

TODO

TODO

TODO

TODO

TODO

global sync

TODO

TODO

TODO

N/A

TODO

TODO

local atomics

TODO

TODO

TODO

N/A

TODO

TODO

global atomics

TODO

TODO

TODO

N/A

TODO

TODO

2D image read

TODO

TODO

TODO

TODO

TODO

TODO

3D image read

TODO

TODO

TODO

N/A

TODO

TODO

2D image write

TODO

TODO

TODO

TODO

TODO

TODO

3D image write

TODO

TODO

TODO

N/A

TODO

TODO

accurate4 arithmetics

TODO

TODO

TODO

TODO

TODO

TODO

OpenCL5 1.0

TODO

TODO

TODO

N/A6

WIP

TODO

OpenCL 1.1

TODO

TODO

TODO

N/A

WIP

TODO

OpenGL interoperability

TODO

TODO

TODO

TODO

TODO

TODO

1 Proof of concept test code for testing and experimenting with hardware compute support

2 Hardware specific binary code

4 OpenCL defines some level expected accuracy. Some hardware doesn't support it, so we need software emulation

5 OpenCL front-end is a separate project, we aim to support all features needed by the front-end to implement the standard

6 Only partial OpenCL support is possible, support through vertex shaders.

How to Install

R600

Supported Hardware

Instructions

  1. Download the OpenCL 1.1 header files cl.h and cl_platform.h from here and copy them to $(INCLUDE_PATH)/CL

  2. Install the 3.1 release branch of LLVM and Clang with these patches applied: LLVM Clang

  3. Clone and build libclc from here

  4. Fetch the gallium-compute-r600 branch of mesa here

  5. Configure Mesa with: ./configure --with-dri-drivers="" --with-gallium-drivers=r600 --enable-opencl --with-libclc-path=/path/to/libclc/
  6. Build and install mesa

Installation notes

Testing

OpenCL examples that mostly work with clover and r600g can be found here.