From b8ada50a825a3dc6d0fee779a34066af62c27ef8 Mon Sep 17 00:00:00 2001 From: Tony Rogvall Date: Sun, 30 Dec 2018 16:12:05 +0100 Subject: [PATCH] initialize arg_info size field, report error from get_kernel_arg_info, found the option -cl-kernel-arg-info and now the arg_info reporting works --- c_src/cl_nif.c | 10 +++++----- src/cl.erl | 11 +++++++++-- test/cl_basic.erl | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/c_src/cl_nif.c b/c_src/cl_nif.c index 6c3144c..5785d71 100644 --- a/c_src/cl_nif.c +++ b/c_src/cl_nif.c @@ -1879,11 +1879,11 @@ ecl_kv_t kv_type_qualifier[] = { }; ecl_info_t arg_info[] = { - { &ATOM(address_qualifier), CL_KERNEL_ARG_ADDRESS_QUALIFIER, false, OCL_ENUM, kv_address_qualifier }, - { &ATOM(access_qualifier), CL_KERNEL_ARG_ACCESS_QUALIFIER, false, OCL_ENUM, kv_access_qualifier }, - { &ATOM(type_name), CL_KERNEL_ARG_TYPE_NAME, false, OCL_STRING, 0 }, - { &ATOM(type_qualifier), CL_KERNEL_ARG_TYPE_QUALIFIER, false, OCL_ENUM, kv_type_qualifier }, - { &ATOM(name), CL_KERNEL_ARG_NAME, false, OCL_STRING, 0 }, + { &ATOM(address_qualifier), CL_KERNEL_ARG_ADDRESS_QUALIFIER, false, OCL_ENUM, kv_address_qualifier, 0 }, + { &ATOM(access_qualifier), CL_KERNEL_ARG_ACCESS_QUALIFIER, false, OCL_ENUM, kv_access_qualifier, 0 }, + { &ATOM(type_name), CL_KERNEL_ARG_TYPE_NAME, false, OCL_STRING, 0, 0 }, + { &ATOM(type_qualifier), CL_KERNEL_ARG_TYPE_QUALIFIER, false, OCL_ENUM, kv_type_qualifier, 0 }, + { &ATOM(name), CL_KERNEL_ARG_NAME, false, OCL_STRING, 0, 0 }, }; #endif diff --git a/src/cl.erl b/src/cl.erl index 66e6ef6..e6ea46d 100644 --- a/src/cl.erl +++ b/src/cl.erl @@ -1844,8 +1844,15 @@ get_kernel_arg_info(Kernel) -> {ok, N} -> {ok, lists:map(fun(I) -> - {ok,Info} = get_kernel_arg_info(Kernel, I), - {I,Info} + try get_kernel_arg_info(Kernel, I) of + {ok,Info} -> + {I,Info}; + {error,Reason} -> + {I,{error,Reason}} + catch + error:Reason -> + {I,{error,Reason}} + end end, lists:seq(0, N-1))}; Error -> Error diff --git a/test/cl_basic.erl b/test/cl_basic.erl index ac50ac4..ae54381 100644 --- a/test/cl_basic.erl +++ b/test/cl_basic.erl @@ -142,7 +142,7 @@ __kernel void program1(int n, int m) { build_info(Program, Device) end, DeviceList), - case cl:build_program(Program, DeviceList, "-Dhello=1 -Dtest") of + case cl:build_program(Program, DeviceList, "-Dhello=1 -Dtest -cl-kernel-arg-info") of ok -> foreach( fun(Device) ->