## Monday, June 13, 2011

### OpenCL programs in Latex (listings package)

When we need to put some snippets of OpenCL in Latex documents usually we use C syntax definition for the listings package. I've added the definitions below to lstlang1.sty file(you can find it in the shared directory of your tex). Put this just after your C++ language definitions and before Objective C.

`` \lst@definelanguage[OpenCL]{C}[ANSI]{C} {morekeywords={__kernel,kernel,__local,local,__global,global,% __constant,constant,__private,private,% char2,char3,char4,char8,char16,% uchar2,uchar3,uchar4,uchar8,uchar16,% short2,short3,short4,short8,short16,% ushort2,ushort3,ushort4,ushort8,ushort16,% int2,int3,int4,int8,int16,% uint2,uint3,uint4,uint8,uint16,% long2,long3,long4,long8,long16,% ulong2,ulong3,ulong4,ulong8,ulong16,% float2,float3,float4,float8,float16,% image2d_t,image3d_t,sampler_t,event_t,% bool2,bool3,bool4,bool8,bool16,% half2,half3,half4,half8,half16,% quad,quad2,quad3,quad4,quad8,quad16,% complex,imaginary},% }% ``

Then, setup your listing environment like this example:

`` \lstset{language=[OpenCL]C,caption={Generated Kernel}, label=case:listing2, basicstyle=\tiny, backgroundcolor=\color{whitegray}, numbers=left, numberstyle=\tiny} ``

Hint: Alternatively, you can put this configuration directly in your tex project. Copy and paste it along your \usepackage{listings} replacing "\lst@definelanguage" by "\lstdefinelanguage".