Elixirにおけるデータ並列スケルトンに基づくSIMD並列化の性能評価

書誌事項

タイトル別名
  • Performance Evaluation of SIMD Parallelization for Elixir Based on Skeletons for Data Parallelism

この論文をさがす

抄録

我々はPelemay Super-Parallelismと称する,関数型言語ElixirからC言語へのコード生成・最適化を行う処理系を研究開発している.これは,ElixirにはElixirのコードをASTに変換する機能が備わることを利用し,データ並列スケルトンに基づいて並列化可能なコードを検出してC言語コードを生成し,ClangやGCCのAuto Vectorizationを利用してSIMD並列化を行う処理系である.本研究の貢献は,Elixirの標準ライブラリであるEnumや先行事例Flowに準じたデータ並列スケルトンに基づいてSIMD命令を含むネイティブコードを生成・最適化することで,Enumに比べて,整数演算で2.25倍,浮動小数点数演算で4.48倍,文字列置換で3.85倍の性能向上,Flowに比べて,整数演算で21.0倍,浮動小数点数演算で247倍,文字列置換で 7.26 × 10 3倍の性能向上を達成したことである.リストの各要素を素体のロジスティック写像を算出する整数演算について,演算カーネルのループ内の命令カウントの中でSIMD命令が占める割合は,x86_64アーキテクチャで58.2%であった.perfで演算カーネルを実行したときにキャッシュミス率は24.3%,分岐予測ミスは4.56%,フロントエンドのストールサイクル率は6.18%,バックエンドのストールサイクル率は29.6%であった.

We are researching and developing Pelemay Super-Parallelism, which is a programming language system to generate and optimize Elixir code into C code. It uses a converting mechanism from Elixir code into AST, detects Elixir code that can be parallelized based on skeletons for data parallelism, and parallelize the Elixir code into native code with SIMD instructions using auto-vectorization by Clang or GCC. The contributions of our work include to generate and optimize Elixir code into native code with SIMD instructions based on skeletons for data parallelism, similar to Enum, which is a standard library of Elixir, and Flow, which is a previous work using the skeletons, and to achieve performance improvement of integer calculation, float calculation and string replacement that 2.25, 4.48 and 3.85 times faster than Enum, and 21.0, 247 and 7.26 × 10 3 times faster than Flow, respectively. The ratio of SIMD instructions in counts of all kind of instructions in the loop of a calculation kernel that calculates a logistic map based on a prime number for each element of a list, is 58.2 percents in case of the x86_64 architecture. The ratios of cache-miss, branch-miss and stall-cycles of frontend and backend are 24.3, 4.56, 6.18 and 29.6 percents, respectively, when measured with perf.

収録刊行物

詳細情報 詳細情報について

  • CRID
    1050849933432708992
  • NII論文ID
    170000184306
  • NII書誌ID
    AA11464814
  • ISSN
    18827802
  • Web Site
    http://id.nii.ac.jp/1001/00209239/
  • 本文言語コード
    ja
  • 資料種別
    article
  • データソース種別
    • IRDB
    • CiNii Articles

問題の指摘

ページトップへ