@article{oai:ipsj.ixsq.nii.ac.jp:00012019, author = {丹羽, 純平 and 松本, 尚 and 平木, 敬 and Junpei, Niwa and Takashi, Matsumoto and Kei, Hiraki}, issue = {4}, journal = {情報処理学会論文誌}, month = {Apr}, note = {ソフトウェアDSMは低い実装コストで,実行時に共有アドレス空間を提供できるため,幅広いアプリケーションを扱うことが可能である.ただし,高性能を得るためには,アプリケーションプログラムのソースを直接解析する最適化コンパイラの支援が必要である.最適化コンパイラの目的は,コヒーレンス管理にともなう通信/命令のオーバヘッドを削減することにある.その実現のために,手続き間ポインタ解析を行い,緩和されたメモリモデルの上で,手続き間区間解析の枠組で冗長性削除のデータフロー方程式を解くことで,共有メモリアクセスのサマリを算出する.さらに,fetch-on-writeを抑制するコード生成を行う.我々は上記の最適化コンパイラ(RCOP)を作成して,ワークステーションクラスタ上に低オーバヘッドなランタイム実装した.SPLASH-2ベンチマークを用いた実験により,コンパイラの最適化の効果を確かめた.台数効果を得るのが困難とされているアプリケーション,FFTとRadixに対して,高い台数効果を得ることができた(16台で逐次の約4倍)., Software Distributed Shared Memory (DSM) provides shared address spaceat run-time and accepts a wide range of applications, and it is easy toimplement on the existing systems with commodity hardware. An optimizing compiler that directly analyses shared-memory source programs is indispensable for improving theperformance of software DSM systems.The purpose of compiler optimization is to generate codes reducing thecommunication and instruction overheads for software cache-coherencemanagement.The optimizing compiler performs interprocedural points-to analysis andinterprocedural shared-access set calculations by using intervalanalysis to solve redundancy elimination equations along with lazyrelease consistency model.It generates the codes that avoidfetch-on-write. We have implemented this optimizing compiler, Remote CommunicationOptimizer: RCOP.We also have implemented the lightweight runtimesystems on an SS20 workstation cluster connected with the FastEthernet (100BASE-TX). The experimental results using the SPLASH-2benchmark suite show that the combination of the optimizing compilerand software DSM is very effective.Our proposed system had highspeed-up ratios for the FFT and Radix programs, that is, challengingapplications for software DSM (about 4 times faster than sequentialprograms on 16 processors).}, pages = {879--897}, title = {ソフトウェアDSM機構を支援する最適化コンパイラ}, volume = {42}, year = {2001} }