@@ -14,6 +14,7 @@ extern record tensor_result_t {
1414}
1515
1616extern proc increment2(arr: [] real (32 ), sizes: [] int (32 ), dim: int (32 )): tensor_result_t;
17+ extern proc increment3(in arr: tensor_result_t): tensor_result_t;
1718
1819
1920// baz();
@@ -86,18 +87,58 @@ proc domainFromShape(shape: int ...?rank): domain(rank,int) {
8687 return {(...ranges)};
8788}
8889
89- var c = increment2(a,shape.sizes,shape.rank);
9090
91- var cShape = getResultTensorShape(shape.rank, c);
91+ proc tensorResultToArray(param rank: int , package: tensor_result_t): [] real (32 ) {
92+ var shape = getResultTensorShape(rank, package);
93+ var dom = domainFromShape((...shape));
94+ var result: [ dom] real (32 );
95+ forall i in 0 ..< dom.size {
96+ var idx = dom.orderToIndex(i);
97+ result[ idx] = package.data[ i] ;
98+ }
99+ return result;
100+ }
101+ // var c = increment2(a,shape.sizes,shape.rank);
92102
93- var cDom = domainFromShape((...cShape) );
103+ // var cShape = getResultTensorShape(shape.rank, c );
94104
95- var C: [ cDom] real (32 );
96- forall i in 0 ..< cDom.size {
97- var idx = cDom.orderToIndex(i);
98- C[ idx] = c.data[ i] ;
99- }
105+ // var cDom = domainFromShape((...cShape));
106+
107+ // var C: [cDom] real(32);
108+ // forall i in 0..<cDom.size {
109+ // var idx = cDom.orderToIndex(i);
110+ // C[idx] = c.data[i];
111+ // }
112+
113+ var c = tensorResultToArray(shape.rank, increment2(a,shape.sizes,shape.rank));
114+
115+
116+ writeln (" C: " , c);
117+
118+ use Allocators;
100119
101120
102- writeln (" C: " , C);
103121
122+ proc createTensorResult(ref data: [] real (32 )): tensor_result_t {
123+ // var alloc = new mallocWrapper();
124+ // alloc.allocate(1024);
125+
126+
127+ var result: tensor_result_t;
128+ result.data = c_ptrTo(data);
129+ result.sizes = allocate(int (32 ),data.rank);
130+ const sizeArr = getSizeArray(data);
131+ for i in 0 ..< data.rank do
132+ result.sizes[ i] = sizeArr[ i] ;
133+
134+ // result.sizes = c_ptrTo(getSizeArray(data));
135+ result.dim = data.rank;
136+ return result;
137+
138+ // var res = newWithAllocator(alloc, tensor_result_t, result);
139+ // return res;
140+ }
141+
142+ writeln (createTensorResult(a));
143+
144+ writeln (tensorResultToArray(2 ,increment3(createTensorResult(a))));
0 commit comments