OpenCLNet/UnitTests/MemoryTests.cl

84 lines
2.2 KiB
Common Lisp
Raw Normal View History

2015-11-15 23:13:50 +01:00
/*
* Copyright (c) 2009 Olav Kalgraf(olav.kalgraf@gmail.com)
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable
constant char TestMemory[] = "TestMemory";
kernel void MemoryCopy( global float* pSrc, global float* pDst, size_t length )
{
global float* pEnd;
pEnd = pSrc+length;
while( pSrc<pEnd )
*pDst++ = *pSrc++;
}
kernel void LoopAndDoNothing( int iterations )
{
for( int i=0; i<iterations; i++ )
;
}
struct IOKernelArgs
{
long outLong;
int outInt;
float outSingle;
intptr_t outIntPtr;
};
kernel void ArgIO( int i,
long l,
float s,
intptr_t p,
global struct IOKernelArgs* pA)
{
pA->outInt = i;
pA->outLong = l;
pA->outSingle = s;
pA->outIntPtr = p;
}
kernel void TestReadMemory( global char* pData, size_t length )
{
int sum;
for( size_t i=0; i<length; i++ )
sum += pData[i];
}
kernel void TestWriteMemory( global char* pData, size_t length )
{
for( size_t i=0; i<length; i++ )
pData[i] = 1;
}
kernel void TestReadWriteMemory( global char* pData, size_t length )
{
for( size_t i=0; i<length; i++ )
pData[length-1-i] = pData[i];
}