Commit d8fc59f1 authored by Joseph Noir's avatar Joseph Noir

added unit test for constant memory argument

parent 2be0b352
......@@ -21,6 +21,8 @@ using fvec = vector<float>;
constexpr size_t matrix_size = 4;
constexpr size_t array_size = 32;
constexpr int magic_number = 23;
// since we do currently not support local memory arguments
// this size is fixed in the reduce kernel code
constexpr size_t reduce_buffer_size = 512 * 8;
......@@ -33,6 +35,7 @@ constexpr const char* kernel_name = "matrix_square";
constexpr const char* kernel_name_result_size = "result_size";
constexpr const char* kernel_name_compiler_flag = "compiler_flag";
constexpr const char* kernel_name_reduce = "reduce";
constexpr const char* kernel_name_const = "const_mod";
constexpr const char* compiler_flag = "-D OPENCL_CPPA_TEST_FLAG";
......@@ -68,7 +71,8 @@ constexpr const char* kernel_source_compiler_flag = R"__(
}
)__";
// http://developer.amd.com/resources/documentation-articles/articles-whitepapers/opencl-optimization-case-study-simple-reductions/
// http://developer.amd.com/resources/documentation-articles/articles-whitepapers/
// opencl-optimization-case-study-simple-reductions
constexpr const char* kernel_source_reduce = R"__(
__kernel void reduce(__global int* buffer,
__global int* result) {
......@@ -101,6 +105,14 @@ constexpr const char* kernel_source_reduce = R"__(
}
)__";
constexpr const char* kernel_source_const = R"__(
__kernel void const_mod(__constant int* input,
__global int* output) {
size_t idx = get_global_id(0);
output[idx] = input[0];
}
)__";
}
template<size_t Size>
......@@ -279,6 +291,21 @@ int main() {
}
);
// constant memory arguments
ivec arr7{magic_number};
auto worker7 = spawn_cl<ivec(ivec&)>(kernel_source_const,
kernel_name_const,
{magic_number});
send(worker7, move(arr7));
ivec expected5(magic_number);
fill(begin(expected5), end(expected5), magic_number);
receive(
on_arg_match >> [&] (const ivec& result) {
CPPA_CHECK(equal(begin(expected5), end(expected5), begin(result)));
}
);
cppa::await_all_others_done();
cppa::shutdown();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment