Skip to content

Commit

Permalink
CaKernel.m: Handle parameters in cakernel.ccl file
Browse files Browse the repository at this point in the history
  • Loading branch information
ianhinder committed Jan 31, 2012
1 parent cd80a54 commit 155fa59
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions Tools/CodeGen/CaKernel.m
Expand Up @@ -33,24 +33,31 @@
variableBlock[var_, intent_String] :=
CCLBlock["CCTK_CUDA_KERNEL_VARIABLE", "", {"cached" -> "yes", "intent" -> intent}, {var,"\n"}, ToString[var]]];

DefFn[
parameterBlock[par_] :=
CCLBlock["CCTK_CUDA_KERNEL_PARAMETER", "", {}, {par,"\n"}, ToString[par]]];

DefFn[
variableBlocks[calc_] :=
Module[
{in,out,all,inOnly,outOnly,inOut},
in = InputGridFunctions[calc];
{in,out,all,inOnly,outOnly,inOut,params},

params = GetCalculationParameters[calc];
in = Join[InputGridFunctions[calc]];
out = OutputGridFunctions[calc];
all = Union[in,out];

inOnly = Complement[in, out];
inOnly = Join[Complement[in, out]];
outOnly = Complement[out, in];
inOut = Intersection[in,out];

Riffle[
Map[variableBlock[#, Which[MemberQ[inOnly, #], "in",
MemberQ[outOnly, #], "out",
MemberQ[inOut, #], "inout",
True,ThrowError["Unable to determine use of variable "<>ToString[#]]]] &, all],
"\n"]]];
True,ThrowError["Unable to determine use of variable "<>ToString[#]]]] &, all]~Join~
Map[parameterBlock, params],
"\n"]]];

DefFn[
kernelCCLBlock[calc_] :=
Expand Down

0 comments on commit 155fa59

Please sign in to comment.