#include "utilities/aslUValue.h"
#include "acl/Kernels/aclKernel.h"
#include "acl/Kernels/aclKernelConfigurationTemplates.h"
#include <acl/acl.h>
#include <acl/aclMath/aclVectorOfElements.h>
#include <acl/aclGenerators.h>
#include <utilities/aslTimer.h>
const unsigned int nLength(1000000);
{
cout <<
"Test of \"Simple kernel\" function..." <<
flush;
auto vec1(acl::generateVEData<float>(
nLength,1u));
{
k << (res+=tempRes*tempRes+
rsqrt(.2*tempRes)+ 1./tempRes);
}
k << (vec1=res);
k.setup();
for(
unsigned int i(0); i<
nCycles; ++i)
k.compute();
std::cout<<
"Unoptimized: "<<timer.
realTime()<<endl;
return true;
}
{
cout <<
"Test of \"Simple kernel\" function..." <<
flush;
auto vec1(acl::generateVEData<float>(
nLength,1u));
vector<acl::VectorOfElements> tempRes(nOperations);
{
}
k << (res+=tempRes[i]*tempRes[i]+
rsqrt(.2*tempRes[i])+ 1./tempRes[i]);
k << (vec1=res);
k.setup();
for(
unsigned int i(0); i<
nCycles; ++i)
k.compute();
std::cout<<
"UnoptimizedPlus: "<<timer.
realTime()<<endl;
return true;
}
{
cout <<
"Test of \"Simple kernel\" function..." <<
flush;
auto vec1(acl::generateVEData<float>(
nLength,1u));
{
k << (res+=tempRes*tempRes+
rsqrt(.2*tempRes)+ 1./tempRes);
}
k << (vec1=res);
k.setup();
for(
unsigned int i(0); i<
nCycles; ++i)
k.compute();
std::cout<<
"Optimized: "<<timer.
realTime()<<endl;
return true;
}
{
return 0;
}