changeset 403:83c9aeb1fe3e

Generate MultiDimIterator by perl script
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Fri, 01 Sep 2017 06:41:02 +0900
parents e958a409943c
children c5cd9888bf2a
files src/parallel_execution/generate_stub.pl src/parallel_execution/test/multiDimIterator_test.cbc
diffstat 2 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/generate_stub.pl	Fri Sep 01 06:18:53 2017 +0900
+++ b/src/parallel_execution/generate_stub.pl	Fri Sep 01 06:41:02 2017 +0900
@@ -420,10 +420,10 @@
                 my $outputCount = $codeGear{$codeGearName}->{'output'};
                 my @dataGears = split(/,\s*/, $3);
                 my $nextCodeGear = pop(@dataGears);
-                my $iterateCounts;
+                my @iterateCounts;
                 # parse examples 'par goto(.., iterate(10), exit);'
                 if ($3 =~ /iterate\((.*)?\)/) {
-                    $iterateCounts = $1;
+                    @iterateCounts = split(/,/,$1);;
                     $inputCount--;
                     # pop iterate statement
                     pop(@dataGears);
@@ -445,9 +445,16 @@
 ${prev}task->maxOdg = task->odg + $outputCount;
 EOFEOF
                 print $fd $initTask;
-                if (defined $iterateCounts) {
+                if (@iterateCounts) {
                     print $fd "${prev}task->iterate = 0;\n";
-                    print $fd "${prev}task->iterator = createMultiDimIterator(context, $iterateCounts);\n";
+                    my $len = @iterateCounts;
+                    if ($len == 1) {
+                      print $fd "${prev}task->iterator = createMultiDimIterator(context, $iterateCounts[0], 1, 1);\n";
+                    } elsif ($len == 2) {
+                      print $fd "${prev}task->iterator = createMultiDimIterator(context, $iterateCounts[0], $iterateCounts[1], 1);\n";
+                    } elsif ($len == 3) {
+                      print $fd "${prev}task->iterator = createMultiDimIterator(context, $iterateCounts[0], $iterateCounts[1], $iterateCounts[2]);\n";
+                    }
                 }
                 for my $i (0..$inputCount-1) {
                     print $fd "${prev}task->data[task->idg+$i] = (union Data*)@dataGears[$i];\n";
--- a/src/parallel_execution/test/multiDimIterator_test.cbc	Fri Sep 01 06:18:53 2017 +0900
+++ b/src/parallel_execution/test/multiDimIterator_test.cbc	Fri Sep 01 06:41:02 2017 +0900
@@ -83,6 +83,8 @@
 }
 
 __code createTask2(struct TaskManager* taskManager) {
+    par goto printIterator(iterate(2), exit);
+    par goto printIterator(iterate(2, 2), exit);
     par goto printIterator(iterate(2, 2, 2), exit);
     goto createTask1();
 }