changeset 62:43c00f43ee22

update
author mir3636
date Mon, 23 Apr 2018 20:32:58 +0900
parents 5af2f3eace48
children a5ade8ddab0d
files Paper/sigos.bib Paper/sigos.pdf Paper/sigos.tex Paper/src/parGotoCreateTask.c Paper/src/parGotoCreateTask.cbc
diffstat 5 files changed, 34 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/Paper/sigos.bib	Mon Apr 23 19:19:14 2018 +0900
+++ b/Paper/sigos.bib	Mon Apr 23 20:32:58 2018 +0900
@@ -30,9 +30,3 @@
 year      = {2004}
 }
 
-@misc{openmp,
-    title = "OpenMP: Simple, portable, scalable SMP programming",
-    howpublished = {\url{http://www.openmp.org,}},
-    note = {Accessed: 2018/02/05(Mon)}
-}
-
Binary file Paper/sigos.pdf has changed
--- a/Paper/sigos.tex	Mon Apr 23 19:19:14 2018 +0900
+++ b/Paper/sigos.tex	Mon Apr 23 20:32:58 2018 +0900
@@ -342,6 +342,8 @@
 
 この par goto 文は通常のプログラミングの関数呼び出しのように扱うことができる。
 
+Code\ref{perlpargoto} は Code\ref{pargoto} を perl スクリプトによって変換が行われたコードである。
+\lstinputlisting[caption=perl スクリプトによる par goto の変換, label=perlpargoto]{./src/parGotoCreateTask.c}
 
 %\section{比較}
 %
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/parGotoCreateTask.c	Mon Apr 23 20:32:58 2018 +0900
@@ -0,0 +1,31 @@
+__code code1(struct Context *context,struct Integer* integer1, struct Integer* integer2, struct Integer* output) {
+    struct Element* element;
+                    context->task = NEW(struct Context);
+                    initContext(context->task);
+                    context->task->next = C_add;
+                    context->task->idgCount = 2;
+                    context->task->idg = context->task->dataNum;
+                    context->task->maxIdg = context->task->idg + 2;
+                    context->task->odg = context->task->maxIdg;
+                    context->task->maxOdg = context->task->odg + 1;
+    GET_META(integer1)->wait = createSynchronizedQueue(context);
+    GET_META(integer2)->wait = createSynchronizedQueue(context);
+    GET_META(output)->wait = createSynchronizedQueue(context);
+    context->task->data[context->task->idg+0] = (union Data*)integer1;
+    context->task->data[context->task->idg+1] = (union Data*)integer2;
+    context->task->data[context->task->odg+0] = (union Data*)output;
+                    element = &ALLOCATE(context, Element)->Element;
+                    element->data = (union Data*)context->task;
+                    element->next = context->taskList;
+                    context->taskList = element;
+    Gearef(context, TaskManager)->taskList = context->taskList;
+    Gearef(context, TaskManager)->next1 = C_code2;
+    goto meta(context, C_code2);
+}
+
+__code code1_stub(struct Context* context) {
+    Integer* integer1 = Gearef(context, Integer);
+    Integer* integer2 = Gearef(context, Integer);
+    Integer* output = Gearef(context, Integer);
+    goto code1(context, integer1, integer2, output);
+}
--- a/Paper/src/parGotoCreateTask.cbc	Mon Apr 23 19:19:14 2018 +0900
+++ b/Paper/src/parGotoCreateTask.cbc	Mon Apr 23 20:32:58 2018 +0900
@@ -1,4 +1,4 @@
-__code code1(Integer *integer1, Integer * integer2, Integer *output) {
+__code code1(struct Integer* integer1, struct Integer* integer2, struct Integer* output) {
     par goto add(integer1, integer2, output, __exit);
     goto code2();
 }