33import lambdacloud .core .CloudFunc ;
44import lambdacloud .test .CompileUtils ;
55import symjava .symbolic .Expr ;
6+ import symjava .symbolic .Matrix ;
67import symjava .symbolic .Symbol ;
78import symjava .symbolic .Symbols ;
9+ import symjava .symbolic .TypeInfo ;
10+ import symjava .symbolic .Expr .TYPE ;
11+ import symjava .symbolic .Vector ;
812import symjava .symbolic .utils .JIT ;
913import symjava .symbolic .utils .Utils ;
1014
@@ -22,7 +26,7 @@ protected static void compile(Node root) {
2226 //no return
2327 //root.func = CompileUtils.compile(null, root.expr, Utils.extractSymbols(root.expr).toArray(new Expr[0]));
2428 root .args = Utils .extractSymbols (root .expr );
25- root .func = JIT .compile (root .expr );
29+ // root.func = JIT.compile(root.expr);
2630 root .cfunc = new CloudFunc (root .args .toArray (new Expr [0 ]), root .expr );
2731 }
2832
@@ -39,10 +43,25 @@ public static Node helper(Expr expr) {
3943 Node n = helper (args [i ]);
4044 if (n != null ) {
4145 if (n .isDevice ()) {
42- Symbol arg = ss .get (idx ++);
43- ret .expr .setArg (i , arg );
44- //ret.args.add(arg);
45- ret .children .put (arg .toString (), n );
46+ TypeInfo ti = args [i ].getTypeInfo ();
47+ if (ti .type == TYPE .VECTOR ) {
48+ Vector arg = new Vector ("__vec_" +(idx ++), ti .dim [0 ]);
49+ ret .expr .setArg (i , arg );
50+ //ret.args.add(arg);
51+ ret .children .put (arg .toString (), n );
52+
53+ } else if (ti .type == TYPE .MATRIX ) {
54+ Matrix arg = new Matrix ("__mat_" +(idx ++), ti .dim [0 ], ti .dim [1 ]);
55+ ret .expr .setArg (i , arg );
56+ //ret.args.add(arg);
57+ ret .children .put (arg .toString (), n );
58+ } else {
59+ Symbol arg = ss .get (idx ++);
60+ ret .expr .setArg (i , arg );
61+ //ret.args.add(arg);
62+ ret .children .put (arg .toString (), n );
63+
64+ }
4665 } else {
4766 ret .expr .setArg (i , n .expr );
4867 //ret.args.addAll(n.args);
0 commit comments