著者
柴田 謙 高前田 伸也
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.16, no.1, pp.19, 2023-01-13

近年,マルチコアCPUが主流となってきたが,現在主流の言語はシングルコアが主流の時代に設計された物が多く,並列実行を行って動作速度の向上を行うためには多くの場合で特別なライブラリや構文が必要になり,簡単に並列実行が行えるとはいえない.このマルチコアの利点を生かすため,特別な構文なしで並列実行を規定として行うプログラミング言語「Coa」を開発した.提案するプログラミング言語Coaは,並列実行を既定とするが,単につねに並列実行を行うとするとデータレース問題が生じる.この問題を避けるため,CPUのアウト・オブ・オーダ実行がデータ間の依存関係を検出するのと同様に,変数の依存関係を自動検出し,データレースが生じないように自動的に実行順序と並列性を制御する.このため,内部で並列実行を行いつつも外から見た振舞いは逐次実行と同様となり,プログラムの複雑さを増やさずに実行速度を向上できる.また,処理単位が小さく逐次実行のオーバヘッドが大きい場合に備え,純粋でない関数と指定すれば逐次実行される機能もある.CoaのインタープリタはGoで書かれており,Coaで書かれたソースコードは,goroutineを用いてインタープリタ内で並列実行される.現在,基本演算,繰返し,条件分岐,関数定義などの基本的な機能があり,FizzBuzz問題や情報オリンピックの問題等を解決できる程度の言語機能を実装している.比較実験として,13ファイルのダウンロードとマンデルブロ集合を表示するための計算を,逐次処理と並列処理で実行した.それぞれの実行時間とコード行数を比較し,Coaはコードの複雑さを増すことなく並列実行して処理速度が上がることを確認した.本発表では,Coaの仕組みと特徴,今後の課題を説明する.