static const char* prefixScanKernelsCL= \ "/*\n" " 2011 Takahiro Harada\n" "*/\n" "\n" "typedef unsigned int u32;\n" "#define GET_GROUP_IDX get_group_id(0)\n" "#define GET_LOCAL_IDX get_local_id(0)\n" "#define GET_GLOBAL_IDX get_global_id(0)\n" "#define GET_GROUP_SIZE get_local_size(0)\n" "#define GROUP_LDS_BARRIER barrier(CLK_LOCAL_MEM_FENCE)\n" "\n" "// takahiro end\n" "#define WG_SIZE 128\n" "\n" "typedef struct\n" "{\n" " uint m_numElems;\n" " uint m_numBlocks;\n" " uint m_numScanBlocks;\n" " uint m_padding[1];\n" "} ConstBuffer;\n" "\n" "\n" "u32 ScanExclusive(__local u32* data, u32 n, int lIdx, int lSize)\n" "{\n" " u32 blocksum;\n" " int offset = 1;\n" " for(int nActive=n>>1; nActive>0; nActive>>=1, offset<<=1)\n" " {\n" " GROUP_LDS_BARRIER;\n" " for(int iIdx=lIdx; iIdx>= 1;\n" " for(int nActive=1; nActive>=1 )\n" " {\n" " GROUP_LDS_BARRIER;\n" " for( int iIdx = lIdx; iIdx