|
@@ -106,8 +106,11 @@ global CODELETS_PARAMS_STRUCT=Dict{String,Any}()
|
|
|
macro codelet(x)
|
|
|
parsed = starpu_parse(x)
|
|
|
name=string(x.args[1].args[1].args[1]);
|
|
|
+ cpu_name = name
|
|
|
+ cuda_name = "CUDA_"*name
|
|
|
dump(name)
|
|
|
- parse_scalar_parameters(parsed, name)
|
|
|
+ parse_scalar_parameters(parsed, cpu_name, cuda_name)
|
|
|
+ c_struct_param_decl = generate_c_struct_param_declaration(name)
|
|
|
cpu_expr = transform_to_cpu_kernel(parsed)
|
|
|
prekernel, kernel = transform_to_cuda_kernel(parsed)
|
|
|
generated_cpu_kernel_file_name=string("genc_",string(x.args[1].args[1].args[1]),".c")
|
|
@@ -119,10 +122,10 @@ macro codelet(x)
|
|
|
kernel_file = open($(esc(generated_cpu_kernel_file_name)), "w")
|
|
|
@debugprint "generating " $(generated_cpu_kernel_file_name)
|
|
|
print(kernel_file, $(esc(cpu_kernel_file_start)))
|
|
|
- print(kernel_file, generate_c_struct_param_declaration($name))
|
|
|
+ print(kernel_file, $c_struct_param_decl)
|
|
|
print(kernel_file, $cpu_expr)
|
|
|
close(kernel_file)
|
|
|
- CPU_CODELETS[$name]=$name
|
|
|
+ CPU_CODELETS[$name]=$cpu_name
|
|
|
end
|
|
|
|
|
|
if ($targets&$STARPU_CUDA!=0)
|
|
@@ -130,9 +133,10 @@ macro codelet(x)
|
|
|
@debugprint "generating " $(generated_cuda_kernel_file_name)
|
|
|
print(kernel_file, $(esc(cuda_kernel_file_start)))
|
|
|
print(kernel_file, "__global__ ", $kernel)
|
|
|
+ print(kernel_file, $c_struct_param_decl) # TODO: extern C ?
|
|
|
print(kernel_file, "\nextern \"C\" ", $prekernel)
|
|
|
close(kernel_file)
|
|
|
- CUDA_CODELETS[$name]="CUDA_"*$name
|
|
|
+ CUDA_CODELETS[$name]=$cuda_name
|
|
|
end
|
|
|
print("end generation")
|
|
|
#starpu_task_library_name="generated_tasks"
|
|
@@ -140,7 +144,7 @@ macro codelet(x)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
-function parse_scalar_parameters(expr :: StarpuExprFunction, name::String)
|
|
|
+function parse_scalar_parameters(expr :: StarpuExprFunction, cpu_name::String, cuda_name::String)
|
|
|
scalar_parameters = []
|
|
|
for i in (1 : length(expr.args))
|
|
|
type = expr.args[i].typ
|
|
@@ -149,7 +153,8 @@ function parse_scalar_parameters(expr :: StarpuExprFunction, name::String)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
- CODELETS_SCALARS[name] = scalar_parameters
|
|
|
+ CODELETS_SCALARS[cpu_name] = scalar_parameters
|
|
|
+ CODELETS_SCALARS[cuda_name] = scalar_parameters
|
|
|
|
|
|
# declare structure carrying scalar parameters
|
|
|
struct_params_name = Symbol("params_", rand_string())
|
|
@@ -165,5 +170,6 @@ function parse_scalar_parameters(expr :: StarpuExprFunction, name::String)
|
|
|
eval(Meta.parse(add_to_dict_str))
|
|
|
|
|
|
# save structure name
|
|
|
- CODELETS_PARAMS_STRUCT[name] = struct_params_name
|
|
|
+ CODELETS_PARAMS_STRUCT[cpu_name] = struct_params_name
|
|
|
+ CODELETS_PARAMS_STRUCT[cuda_name] = struct_params_name
|
|
|
end
|