Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 34:fad87973f26a
add gears flow
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 31 Jan 2021 17:37:28 +0900 |
parents | 0915f0d49a23 |
children | 2c8513196d56 |
files | paper/chapter/02-perl.tex paper/chapter/gears.tex paper/drawio/geasflow1.drawio paper/drawio/geasflow1.pdf paper/master_paper.pdf paper/src/cmakefile.1.txt |
diffstat | 6 files changed, 51 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter/02-perl.tex Sun Jan 31 16:56:48 2021 +0900 +++ b/paper/chapter/02-perl.tex Sun Jan 31 17:37:28 2021 +0900 @@ -49,15 +49,9 @@ \end{itemize} これらのPerlスクリプトはプログラマが自分で動かすことはない。 -GearsOSではビルドツールにCMakeを利用している。 -CMakeはautomakeなどのMakeファイルを作成するツールに相当するものである。 -GearsOSでプログラミングする際は、ビルドしたいプロジェクトをCMakeLists.txtに記述する。 -CMakeは自身がコンパイルをすることはなく、ビルドツールであるmakeやninja-buildに処理を移譲している。 -CMakeはmakeやninja-buildが実行可能なMakefile、 build.ninjaの生成までを担当する。 - Perlスクリプトの実行手順はCMakeLists.txtに記述しており、 makeやninja-buildでのビルド時に呼び出される。(ソースコード \ref{src:cmake1}) -\lstinputlisting[label=src:cmake1, caption=CMakeList.txt内でのPerlの実行部分]{src/cmakefile.txt.1} +\lstinputlisting[label=src:cmake1, caption=CMakeList.txt内でのPerlの実行部分]{src/cmakefile.1.txt} \begin{figure}[htp] \begin{center}
--- a/paper/chapter/gears.tex Sun Jan 31 16:56:48 2021 +0900 +++ b/paper/chapter/gears.tex Sun Jan 31 17:37:28 2021 +0900 @@ -1,5 +1,26 @@ \chapter{GearsOS} +GearsOSとはContinuation Based Cを用いて実装しているOSプロジェクトである。 +CodeGearとDataGearを基本単位として実行する。 +GearsOSはOSとして実行する側面と、 CbCのシンタックスを拡張した言語フレームワークとしての側面がある。 + +\section{GearsOSのビルドシステム} +GearsOSではビルドツールにCMakeを利用している。 +CMakeはautomakeなどのMakeファイルを作成するツールに相当するものである。 +GearsOSでプログラミングする際は、ビルドしたいプロジェクトをCMakeLists.txtに記述する。 +CMakeは自身がコンパイルをすることはなく、ビルドツールであるmakeやninja-buildに処理を移譲している。 +CMakeはmakeやninja-buildが実行可能なMakefile、 build.ninjaの生成までを担当する。 + +ビルドフローを図\ref{fig:gearsbuild1}に示す。 + +\begin{figure}[htp] + \begin{center} + \includegraphics[width=120mm]{drawio/geasflow1.pdf} + \end{center} + \caption{GearsOSのビルドフロー} + \label{fig:gearsbuild1} + \end{figure} + \section{pmake} GearsOSをビルドする場合は、x86アーキテクチャのマシンからビルドするのが殆どである。 この場合ビルドしたバイナリはx86向けのバイナリとなる。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/drawio/geasflow1.drawio Sun Jan 31 17:37:28 2021 +0900 @@ -0,0 +1,1 @@ +<mxfile host="Electron" modified="2021-01-31T08:21:50.486Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" etag="JuOyPGK8KAoW3IoDYvsS" version="14.1.8" type="device"><diagram id="V5Gp7kS3jipglgoInpt8" name="ページ1">7VhRU6MwEP41nbl70ClQqH1sq+c9nKM3vRn1MUKE2JBgCJb6629DQqHQ9jhr1XPupWW/JEuy336bhJ4zjfNzgZLoggeY9ux+kPec055tDz0PfhWw1IBr9zUQChJoyKqAGXnGBiy7ZSTA6VpHyTmVJFkHfc4Y9uUahoTgi/Vu95yuvzVBIW4BMx/RNnpNAhlp9MQeVvh3TMKofLPljXRLjMrOZiVphAK+qEHOWc+ZCs6lforzKaYqdmVc9LhvW1pXExOYyS4Dnme/ssy7Hi1H45NLJ3tm7OfjkWEnlctywTiA9RuTCxnxkDNEzyp0InjGAqy89sGq+vzgPAHQAvABS7k0ZKJMcoAiGVPTinMib2rPt8rVsWus09x4LoxlaTApljd1ozZKmdWwwirHpVLw+Yo6BxC9YrXMrYE0UMoz4eMd0SsTEokQyx393BXdIBPMYwwzhHECUyTJ0/o8kEnYcNWv4hQeDK1/QbHx+4RoZt7Usz0K053cc1hwnXzvMeNlw1Fa0DeGDhCcvGqEp1D9X2Gh3p36giSydAkz1F51n3Z2UQrKVVm0iIjEswQVAV5A7VjPEZQmWs73JFe5tpXIJywkzndT2Q69GWB7RpymOlkDYy8qrVulgKO6zkvw1ely3kORB1WJ3VElW6h6G5XYB1LJOUYihdaZjlJHmcBekahHxmUHrdwhfx4WOXCZSUoYNniAxPwSRhFZVMPjvnsoHVn9ho5s+9htK8napCTXPRClJ//3tj1U63ZU7fA9VetuVW2aIPZy1U7vpsWZMk4IxaKmWu3239jcBu6H29yG+1fZwSa+cI79TKI7GAtnfEI7F9oPQZTnfDiiRhuIamY7C8bqggWWT1GaEr+IDxKyDb/KUaMdv1p83A3hKbHOtci84YqTIhnLQ2JDR47ViLqupWZU/QbWcOT1/+BIF9uWo4LB1bL3uAn0DyS/6QWaK+V9iYt/VTsZYQ/oa1cZgnZkQ3mUhEzlEOQAVGBnohRG4F4+Ng0xCQK9ZWOYXiF9vSsmKnxFQN1Jzz1VvmCX1kvYmYF7adhpcmu3NWwPNiTpwSRsbbr4bdcw4+rc+MmU6r5QqU1Hq3viWyl103Xkc3PXKo4v5a7p6PW4A7P6XKe7V988nbPf</diagram></mxfile> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/cmakefile.1.txt Sun Jan 31 17:37:28 2021 +0900 @@ -0,0 +1,28 @@ +macro( GearsCommand ) + set( _OPTIONS_ARGS ) + set( _ONE_VALUE_ARGS TARGET ) + set( _MULTI_VALUE_ARGS SOURCES ) + cmake_parse_arguments( _Gears "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} ) + + set (_Gears_CSOURCES) + foreach(i ${_Gears_SOURCES}) + if (${i} MATCHES "\\.cbc") + string(REGEX REPLACE "(.*).cbc" "c/\\1.c" j ${i}) + add_custom_command ( + OUTPUT ${j} + DEPENDS ${i} + COMMAND "perl" "generate_stub.pl" "-o" ${j} ${i} + ) + elseif (${i} MATCHES "\\.cu") + string(REGEX REPLACE "(.*).cu" "c/\\1.ptx" j ${i}) + add_custom_command ( + OUTPUT ${j} + DEPENDS ${i} + COMMAND nvcc ${NVCCFLAG} -c -ptx -o ${j} ${i} + ) + else() + set(j ${i}) + endif() + list(APPEND _Gears_CSOURCES ${j}) + endforeach(i) +