[Beignet] [PATCH] add test of cl_mem_use_host_ptr into benchmark
Yang, Rong R
rong.r.yang at intel.com
Mon Dec 1 22:34:35 PST 2014
LGTM, thanks.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo, Yejun
> Sent: Friday, November 28, 2014 09:48
> To: beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH] add test of cl_mem_use_host_ptr into
> benchmark
>
> Ping for review, thanks.
>
> -----Original Message-----
> From: Guo, Yejun
> Sent: Friday, November 21, 2014 3:54 PM
> To: beignet at lists.freedesktop.org
> Cc: Guo, Yejun
> Subject: [PATCH] add test of cl_mem_use_host_ptr into benchmark
>
> and also refine the code to move time_subtract into utest_helper.hpp/cpp
>
> Signed-off-by: Guo Yejun <yejun.guo at intel.com>
> ---
> benchmark/CMakeLists.txt | 3 ++-
> benchmark/benchmark_use_host_ptr_buffer.cpp | 38
> +++++++++++++++++++++++++++++
> benchmark/enqueue_copy_buf.cpp | 24 +-----------------
> utests/utest_helper.cpp | 22 +++++++++++++++++
> utests/utest_helper.hpp | 3 +++
> 5 files changed, 66 insertions(+), 24 deletions(-) create mode 100644
> benchmark/benchmark_use_host_ptr_buffer.cpp
>
> diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index
> 0a959c8..ac2d8aa 100644
> --- a/benchmark/CMakeLists.txt
> +++ b/benchmark/CMakeLists.txt
> @@ -11,7 +11,8 @@ set (benchmark_sources
> ../utests/utest_file_map.cpp
> ../utests/utest_helper.cpp
> ../utests/vload_bench.cpp
> - enqueue_copy_buf.cpp)
> + enqueue_copy_buf.cpp
> + benchmark_use_host_ptr_buffer.cpp)
>
>
> SET(CMAKE_CXX_FLAGS "-DBUILD_BENCHMARK ${CMAKE_CXX_FLAGS}")
> diff --git a/benchmark/benchmark_use_host_ptr_buffer.cpp
> b/benchmark/benchmark_use_host_ptr_buffer.cpp
> new file mode 100644
> index 0000000..7ede576
> --- /dev/null
> +++ b/benchmark/benchmark_use_host_ptr_buffer.cpp
> @@ -0,0 +1,38 @@
> +#include "utests/utest_helper.hpp"
> +#include <sys/time.h>
> +
> +int benchmark_use_host_ptr_buffer(void)
> +{
> + struct timeval start,stop;
> +
> + const size_t n = 4096*4096;
> +
> + // Setup kernel and buffers
> + OCL_CREATE_KERNEL("runtime_use_host_ptr_buffer");
> +
> + int ret = posix_memalign(&buf_data[0], 4096, sizeof(uint32_t) * n);
> + OCL_ASSERT(ret == 0);
> +
> + for (uint32_t i = 0; i < n; ++i) ((uint32_t*)buf_data[0])[i] = i;
> + OCL_CREATE_BUFFER(buf[0], CL_MEM_USE_HOST_PTR, n *
> sizeof(uint32_t),
> + buf_data[0]);
> +
> + OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]); globals[0] = n; locals[0]
> + = 256;
> +
> + gettimeofday(&start,0);
> + for (size_t i=0; i<100; i++) {
> + OCL_NDRANGE(1);
> + void* mapptr = (int*)clEnqueueMapBuffer(queue, buf[0], CL_TRUE,
> CL_MAP_READ, 0, n*sizeof(uint32_t), 0, NULL, NULL, NULL);
> + clEnqueueUnmapMemObject(queue, buf[0], mapptr, 0, NULL, NULL); }
> + gettimeofday(&stop,0);
> +
> + clReleaseMemObject(buf[0]);
> + free(buf_data[0]);
> + buf_data[0] = NULL;
> +
> + return time_subtract(&stop, &start, 0); }
> +
> +MAKE_BENCHMARK_FROM_FUNCTION(benchmark_use_host_ptr_buffer);
> diff --git a/benchmark/enqueue_copy_buf.cpp
> b/benchmark/enqueue_copy_buf.cpp index 0d0d4df..f012cf7 100644
> --- a/benchmark/enqueue_copy_buf.cpp
> +++ b/benchmark/enqueue_copy_buf.cpp
> @@ -28,28 +28,6 @@ void test_copy_buf(size_t sz, size_t src_off, size_t
> dst_off, size_t cb)
> src_off, dst_off, cb*sizeof(char), 0, NULL, NULL)); }
>
> -int tim_subtract(struct timeval *y, struct timeval *x, struct timeval *result){
> - if ( x->tv_sec > y->tv_sec )
> - return -1;
> -
> - if ((x->tv_sec == y->tv_sec) && (x->tv_usec > y->tv_usec))
> - return -1;
> -
> - if ( result != NULL){
> - result->tv_sec = ( y->tv_sec - x->tv_sec );
> - result->tv_usec = ( y->tv_usec - x->tv_usec );
> -
> - if (result->tv_usec < 0){
> - result->tv_sec --;
> - result->tv_usec += 1000000;
> - }
> - }
> -
> - int msec = 1000.0*(y->tv_sec - x->tv_sec) + (y->tv_usec - x-
> >tv_usec)/1000.0;
> - return msec;
> -}
> -
> -
> int enqueue_copy_buf(void)
> {
> size_t i;
> @@ -63,7 +41,7 @@ int enqueue_copy_buf(void)
> }
>
> gettimeofday(&stop,0);
> - return tim_subtract(&stop, &start, 0);
> + return time_subtract(&stop, &start, 0);
> }
>
> MAKE_BENCHMARK_FROM_FUNCTION(enqueue_copy_buf);
> diff --git a/utests/utest_helper.cpp b/utests/utest_helper.cpp index
> df0e508..606c1bf 100644
> --- a/utests/utest_helper.cpp
> +++ b/utests/utest_helper.cpp
> @@ -680,3 +680,25 @@ int cl_INT_ULP(int int_number) {
> return 0;
> }
> +
> +int time_subtract(struct timeval *y, struct timeval *x, struct timeval
> +*result) {
> + if ( x->tv_sec > y->tv_sec )
> + return -1;
> +
> + if ((x->tv_sec == y->tv_sec) && (x->tv_usec > y->tv_usec))
> + return -1;
> +
> + if ( result != NULL){
> + result->tv_sec = ( y->tv_sec - x->tv_sec );
> + result->tv_usec = ( y->tv_usec - x->tv_usec );
> +
> + if (result->tv_usec < 0){
> + result->tv_sec --;
> + result->tv_usec += 1000000;
> + }
> + }
> +
> + int msec = 1000.0*(y->tv_sec - x->tv_sec) + (y->tv_usec -
> +x->tv_usec)/1000.0;
> + return msec;
> +}
> \ No newline at end of file
> diff --git a/utests/utest_helper.hpp b/utests/utest_helper.hpp index
> 026eb1c..5d8e835 100644
> --- a/utests/utest_helper.hpp
> +++ b/utests/utest_helper.hpp
> @@ -230,5 +230,8 @@ extern float cl_FLT_ULP(float float_number);
> /* Calculator ULP of each INT value */
> extern int cl_INT_ULP(int int_number);
>
> +/* subtract the time */
> +int time_subtract(struct timeval *y, struct timeval *x, struct timeval
> +*result);
> +
> #endif /* __UTEST_HELPER_HPP__ */
>
> --
> 1.9.1
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list