欢迎来到天天文库
浏览记录
ID:12810016
大小:50.50 KB
页数:4页
时间:2018-07-19
《筑波大学大学院インテル特别讲义》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、筑波大学大学院インテル特別講義レポート筑波大学システム情報工学研究科コンピュータサイエンス専攻XXXX学籍番号 XXXX課題1 Cプログラム(lap.c)の最適化作業lap.cで示すプログラムをIntelXeonE5-2699V3を2個用いたサーバ上で実行し,最適化したい。この時に行う作業についてレポートにまとめてください。1、事前調査1)実行環境このプログラムを実行する環境はIntelXeonE5-2699V3を2個用いたPCである。E5-2699v3はHaswellアーキテクチャを基づいた18コアx86-64CPUである。ベクトル命令セットはSSEからAVX2までサポートする。2)最適化
2、したいプログラムこのプログラムの主な機能は、浮動小数点数の二次元配列を扱うことである。だが、非常に基本的な方法しか使っていない。配列に関するすべての計算は、二重ループで配列の値を逐一計算する。なお初期化時のsin、cos計算も多くの時間を使う。プログラム自身は実行時に実行回数を指定可能で、実行時間も表示できる。2、最適化プラン環境:IntelXeonE5-2699V3x2、32GB以上のRAM、OSはCentOSなどサーバ向けのLinux使用するツール:テキストエディター、IntelC++ComposerXEとIntelVTuneAnalyzerXEの最新版、システムのCコンパイラ、Open
3、MPなどの開発ツール第1日:まずプログラムのループ文の前に、自動ベクトル化禁止の文を入れる。システムコンパイラ、そしてiccの-O0と-O2でコンパイルして、プログラムの基本機能、計算結果とIntelコンパイラの動作を確認する。第2日:Intelコンパイラの-vec-report機能を使用し、プログラムのベクトル化できない箇所とその原因を探す。そして、プログラムの論理構造と実行結果が変わらない前提で、ベクトル化できない箇所を修正する。第3日:前日に続く、ベクトル化可能だが自動的にベクトル化されない(外層ループなど)部分を#pragmasimdなどでベクトル化を強制してみる。そして、キャッシュ
4、ミスなどで性能を妨げる問題(アライメントとか)をチェックして、できる限り解決する。ループの変換ができる場合、それも行う。第4日:並列化の段階に入る。まず-par引数で自動並列化を有効化し、-par-reportで並列化できない箇所とその原因を探す。そして各ループ文の前に、並列化強制の文を入れてみる。第5日~第6日:前に見つかったベクトル化と並列化できない箇所とその原因をまとめて、プログラムを書き直さなく前提で総合的な最適化案を提出し、実証する。第7日~第10日:プログラムをより効率良い、並列化向けのフレームワークやライブラリ(OpenCL、OpenMP)などに書き直して、前の最適化案と比較す
5、る。3、最適化の結果予期と確認方法実行環境はシングルコアの性能、そしてコア数両方も非常に良いシステムである。そのため、ベクトル化と並列化両方も性能に影響を当たる。ところが、今回最適化したいプログラムの最適化結果を予期するのは、プログラム自身の構造から考えずにはおかない。このプログラムは大体3部分がある。計算で使用する二次元配列のサイズは、マクロで固定されたので、時間複雑度を考えるときは無視できる。初期化部分と検証部分は、1回しか実行されていないので、反復回数に対する時間複雑度はO(1)である。主要の計算を行う関数lap_mainは、入力された反復回数回のループを行う、そしてループ内はループ変
6、数を使っていないので、時間複雑度はO(n)である。反復回数が多くなると、O(1)部分の計算時間は無視しても良いので、lap_mainだけを考えたい。lap_main内には、先ほど言及したループの中には三つの子ルーチンがある。最初は、ループ変数が10の倍数かを判断するルーチンである。このルーチンの計算時間(3回の整数比較)はほかと比べられないので、無視しよう。そして、一つの二重ループは(XSIZE-2)*(YSIZE-2)回の浮動小数点数代入で、二次元配列の一部の内容をコピーする;もう一つは(XSIZE-2)*(YSIZE-2)回のループで、浮動小数点数を3回足し算、1回割り算、1回代入する。
7、ループ毎回の計算は独立であって、前回ループの計算結果に依存しない。従って、配列内容をコピーするループは完全に並列化できる。しかし、もう一つのループは、割り算は前の3回の足し算の結果に依存するので、並列化できない。定数4.0との割り算は、浮動小数点数割り算はどの命令セットでも遅いので、定数0.25との掛け算に自動的に書き換える場合がほとんどだ。Intel®64andIA-32ArchitecturesOptim
此文档下载收益归作者所有