Add try/catch around kernel executions

This commit is contained in:
Tom Deakin 2015-07-28 13:18:02 +01:00
parent 807af7d679
commit 3c248195ea

View File

@ -262,45 +262,73 @@ int main(int argc, char *argv[])
{ {
std::vector<double> times; std::vector<double> times;
t1 = std::chrono::high_resolution_clock::now(); t1 = std::chrono::high_resolution_clock::now();
try
{
copy( copy(
cl::EnqueueArgs( cl::EnqueueArgs(
queue, queue,
cl::NDRange(ARRAY_SIZE)), cl::NDRange(ARRAY_SIZE)),
d_a, d_c); d_a, d_c);
queue.finish(); queue.finish();
}
catch (cl::Error &e)
{
die("Executing copy", e);
}
t2 = std::chrono::high_resolution_clock::now(); t2 = std::chrono::high_resolution_clock::now();
times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count()); times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count());
t1 = std::chrono::high_resolution_clock::now(); t1 = std::chrono::high_resolution_clock::now();
try
{
mul( mul(
cl::EnqueueArgs( cl::EnqueueArgs(
queue, queue,
cl::NDRange(ARRAY_SIZE)), cl::NDRange(ARRAY_SIZE)),
d_b, d_c); d_b, d_c);
queue.finish(); queue.finish();
}
catch (cl::Error &e)
{
die("Executing mul", e);
}
t2 = std::chrono::high_resolution_clock::now(); t2 = std::chrono::high_resolution_clock::now();
times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count()); times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count());
t1 = std::chrono::high_resolution_clock::now(); t1 = std::chrono::high_resolution_clock::now();
try
{
add( add(
cl::EnqueueArgs( cl::EnqueueArgs(
queue, queue,
cl::NDRange(ARRAY_SIZE)), cl::NDRange(ARRAY_SIZE)),
d_a, d_b, d_c); d_a, d_b, d_c);
queue.finish(); queue.finish();
}
catch (cl::Error &e)
{
die("Executing add", e);
}
t2 = std::chrono::high_resolution_clock::now(); t2 = std::chrono::high_resolution_clock::now();
times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count()); times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count());
t1 = std::chrono::high_resolution_clock::now(); t1 = std::chrono::high_resolution_clock::now();
try
{
triad( triad(
cl::EnqueueArgs( cl::EnqueueArgs(
queue, queue,
cl::NDRange(ARRAY_SIZE)), cl::NDRange(ARRAY_SIZE)),
d_a, d_b, d_c); d_a, d_b, d_c);
queue.finish(); queue.finish();
}
catch (cl::Error &e)
{
die("Executing triad", e);
}
t2 = std::chrono::high_resolution_clock::now(); t2 = std::chrono::high_resolution_clock::now();
times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count()); times.push_back(std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count());