狠狠撸

狠狠撸Share a Scribd company logo
理学部 情報数理科学科 4回生
        藤本研究室所属
           北野晃司
?   現在主流の整数型
    ? int(32bit)
    ? long long(64bit)
?   多倍長整数演算
    ? より大きいbit数の整数を対象とした演算
    ? 研究が盛ん
?   GPGPU
    ? GPUによる汎用計算
    ? 近年注目されつつある


                         2   Next?動機?目的
?   多倍長整数演算は時間がかかる
    ? 特に積、商、平方根の演算
?   商、平方根
    ? ニュートン法を用いて高速化可能
    ? 高速な乗算が使える場合
?   GPUを用いて多倍長整数乗算を高速に解く手法を提
    案
※ニュートン法による逆数を求める漸化式?Xn+1=2*Xn-a*Xn^2
        平方根を求める漸化式?Xn+1=(Xn + a/Xn) /2 aは適当な初期
値


                       3              Next?提案内容
?   積表という並列処理に適した
    データ構造とその処理法の提案




?   2つの多倍長整数の和を高速に求める
    アルゴリズムの提案

      時間の都合により割
      愛

             4          Next?発表の流れ
?   GPUによる並列処理の概要
?   提案手法
    ? 積表
    ? 積表に対する効率的な処理法の提案
?   評価実験
?   まとめと今後の課題




                 5
?   スレッド
    ― GPUによる並列処理の
      最小単位
?   スレッドブロック
    ?   スレッドの集まり

                         スレッ
                       スレッドブロッ
                       ク ド
                       (以下ブロッ
                       ク)

                   6   Next?GPUプログラムの概要
?   1つの関数を複数のブロック
                            関数
    により同時に処理可能               ?
    ? 右図のように同一のコードを参         ?
                             ?
      照
                       A[ID]=A[ID]*2+1
?   スレッドのID
                             ?
    ? どのブロックのどのスレッドな         ?
                             ?
      のかを表す番号
    ? 異なるスレッドに異なる動作を
      させる鍵



                 7               Next?提案手法
?   GPUによる並列処理の概要
?   提案手法
    ? 積表
    ? 積表に対する効率的な処理法の提案
?   評価実験
?   まとめと今後の課題




                 8
?   10進数における積
  ? 右図のような筆算で求めることが可
? 積表能
  ?–桁上げの処理が必要
     筆算を元に得られた表
   – 桁上げの計算をその値が必要な
  桁上げが無ければ列(桁)ごと
     列自身に行わせる
     に並列に計算できるので
   – 列ごとの総和が他の列の演算と
        は?????
     は独立に行える




                9      Next?積表の構成
?   多倍長整数A×Bの積表
    ?   Aは5桁、Bは3桁
    ?   BASEは多倍長整数の基数
    ?   BASE=10なら10進数
    ?   A[0]がAの1の位の数
                             ~~~~~~~~~~~~~~~~~~~
?       要素の規則性
    ?    2行ごとに添字が1変わる
    ?    桁数を変えても同様




                        10             Next?積表の一般化
?   多倍長整数A×Bの積表
    ? Aはa桁、Bはb桁(a≧b)
?   赤と緑の部分
    ? 列数は共にb列
    ? 行数は1列毎に2行ずつ増減
?   黄の部分
    ? 列数はa-b列
    ? 行数はb×2行




                       11   Next?積表の単純な処理法
?   積表の処理
    ? 1列に1スレッドの割り当て
    ? 列ごとの総和計算



?   この処理の欠点
    ? スレッド毎の演算回数の差
    ? 処理が早く終わったスレッド
      はただ待つだけ
    ? 演算器が遊んでフルに性能が
      発揮できない

                 12   Next?積表の再構成
?   欠点を解決するための変形
    ? 緑の部分を赤の部分に結合
    ? 列数は(a-b)+b=a列
    ? 行数はb×2行




                 13   Next?再構成した積表の具体
?   5桁×3桁での例
    ? 赤と緑、黄、の2種類の長方形




    ? 列総和に必要な演算回数
     – どの列も同じ(2×b 回)
    ? 赤と緑の長方形
     – 赤の総和と緑の総和が個別に必要なことに注意
                   14   Next?さらなる工夫
?   GPUによる並列処理の概要
?   提案手法
    ? 積表
    ? 積表に対する効率的な処理法の提案
?   評価実験
?   まとめと今後の課題




                15
?   水色の領域
    ? 赤のみを含む?緑のみを
      含む?境界を含むの3種類
    ? 1ブロックが1領域を担当




                 ※BLOCK_SIZE=1ブロック中のスレッド数

                 16        Next?領域分けによる利点
512列
                               b列
                              ?
GPU GTX480では
 例え                           ?
最大23040スレッド並列
 ば???                         ?

                   1
これは並列性の低い手法        b×
                   0        ?
                   2
                   2    512スレッド並
                            ?
                   4
                   行
                   行    列   ?
領域分けは並列性を高める
Aは1024桁 Bは512桁とな
る
                        例:BLOCK_SIZE=16な
                        ら
            17             16384スレッド並列
                          Next?具体的な処理法
?   赤のみもしくは緑のみの領域                       ?
    ? 各スレッドが自分が計算すべき列                   ?
      colにおける領域内での総和計算                  ?
?   境界を含む領域
    ? 赤と緑の部分それぞれの総和計算
                                        ?
                                        ?
?   赤の部分の総和                             ?
    ? 答えを格納する配列Cの添字colへ
      足し込む
?   緑の部分の総和        C        ??              ??   ?
                       ?            ?            ?
    ?   配列Cの添字col+a(Aの桁数)へ                       ?
        足し込む
                       18        Next?黄の長方形に対する処理
?   先と同様に領域分け
    ? 赤のみ(緑のみ)に対する処理
      と同様
?   それらとの違い
    ? 参照するAやBの添字
    ? 総和を足し込むCの添字




                    19   Next?評価実験
?   GPUによる並列処理の概要
?   提案手法
    ? 積表
    ? 積表に対する効率的な処理法の提案
?   評価実験
?   まとめと今後の課題




                20
?   NTL(A Library for doing Number
    Theory)
    ? CPUによる多倍長演算ライブラリ
    ? 本実験の比較対象
    ? 出典:http://www.shoup.net/ntl/

?   NTLと提案するアルゴリズムの比較
    ? 6種類のbit数において36通りの組み合わせの
      多倍長整数乗算の実行時間




                       21            Next?実験環境
?   CPU
    ? 2.93GHz Intel Core i3(1コアのみ使用,SSE命令未使
      用)
?   GPU
    ? NVIDIA GeForce GTX480
?   OS
    ? 64bit Windows7 Professional SP1
?   コンパイラ
    ? Visual Studio 2008 Professional
?   CUDA
    ? Ver 3.2
?   ディスプレイドライバ
    ? Ver 285.62
                            22          Next?実験結果
? 多倍長整数積A×Bの計算時間
? 単位はミリ秒

※左は今回実装したアルゴリズム、右はNTLによる結果




           参考:256Kbits=262144bits≒10進数80
               23    Next?NTLに対する速度向上率
?   下表はNTLに対する、実装したアルゴリズムの速度向上
    率
?   実験したすべての場合において実装したアルゴリズムは
    NTLを上回る速度
?   最大で60倍を超える速度向上率




                24   Next?まとめと今後の課題
?   GPUによる並列処理の概要
?   提案手法
    ? 積表
    ? 積表に対する効率的な処理法の提案
?   評価実験
?   まとめと今後の課題




                25
?   実装したアルゴリズムは既存の多倍長演算
    ライブラリを上回る速度

?   今回は最大256Kbitsという相当大きい数までを想定
    ? 実際の問題では数Kbits程度が主流
    ? 対象を絞ることでさらなる高速化手法が考えられる可能性大




                 26

More Related Content

What's hot (20)

kagamicomput201707
kagamicomput201707kagamicomput201707
kagamicomput201707
swkagami
?
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
?
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.
?
PRML_titech 8.1 - 8.2
PRML_titech 8.1 - 8.2PRML_titech 8.1 - 8.2
PRML_titech 8.1 - 8.2
Takafumi Sakakibara
?
kagamicomput201702
kagamicomput201702kagamicomput201702
kagamicomput201702
swkagami
?
kagami_comput2015_6
kagami_comput2015_6kagami_comput2015_6
kagami_comput2015_6
swkagami
?
ゼロから作るDeepLearning 3.3~3.6章 輪読
ゼロから作るDeepLearning 3.3~3.6章 輪読ゼロから作るDeepLearning 3.3~3.6章 輪読
ゼロから作るDeepLearning 3.3~3.6章 輪読
KCS Keio Computer Society
?
kagamicomput201701
kagamicomput201701kagamicomput201701
kagamicomput201701
swkagami
?
kagamicomput201703
kagamicomput201703kagamicomput201703
kagamicomput201703
swkagami
?
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
?
VBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターンVBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターン
Katsuhiro Morishita
?
搁で颈蝉辞尘补辫(多様体学习のはなし)
搁で颈蝉辞尘补辫(多様体学习のはなし)搁で颈蝉辞尘补辫(多様体学习のはなし)
搁で颈蝉辞尘补辫(多様体学习のはなし)
Kohta Ishikawa
?
Angle-Based Outlier Detection周辺の論文紹介
Angle-Based Outlier Detection周辺の論文紹介Angle-Based Outlier Detection周辺の論文紹介
Angle-Based Outlier Detection周辺の論文紹介
Naotaka Yamada
?
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
swkagami
?
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
swkagami
?
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
HCPC: 北海道大学競技プログラミングサークル
?
公開鍵暗号(7): データ圧縮
公開鍵暗号(7): データ圧縮公開鍵暗号(7): データ圧縮
公開鍵暗号(7): データ圧縮
Joe Suzuki
?
レイトレ空间构造入门
レイトレ空间构造入门レイトレ空间构造入门
レイトレ空间构造入门
Toru Matsuoka
?
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709
swkagami
?
kagamicomput201707
kagamicomput201707kagamicomput201707
kagamicomput201707
swkagami
?
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.
?
kagamicomput201702
kagamicomput201702kagamicomput201702
kagamicomput201702
swkagami
?
kagami_comput2015_6
kagami_comput2015_6kagami_comput2015_6
kagami_comput2015_6
swkagami
?
ゼロから作るDeepLearning 3.3~3.6章 輪読
ゼロから作るDeepLearning 3.3~3.6章 輪読ゼロから作るDeepLearning 3.3~3.6章 輪読
ゼロから作るDeepLearning 3.3~3.6章 輪読
KCS Keio Computer Society
?
kagamicomput201701
kagamicomput201701kagamicomput201701
kagamicomput201701
swkagami
?
kagamicomput201703
kagamicomput201703kagamicomput201703
kagamicomput201703
swkagami
?
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
?
VBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターンVBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターン
Katsuhiro Morishita
?
搁で颈蝉辞尘补辫(多様体学习のはなし)
搁で颈蝉辞尘补辫(多様体学习のはなし)搁で颈蝉辞尘补辫(多様体学习のはなし)
搁で颈蝉辞尘补辫(多様体学习のはなし)
Kohta Ishikawa
?
Angle-Based Outlier Detection周辺の論文紹介
Angle-Based Outlier Detection周辺の論文紹介Angle-Based Outlier Detection周辺の論文紹介
Angle-Based Outlier Detection周辺の論文紹介
Naotaka Yamada
?
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
swkagami
?
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
swkagami
?
公開鍵暗号(7): データ圧縮
公開鍵暗号(7): データ圧縮公開鍵暗号(7): データ圧縮
公開鍵暗号(7): データ圧縮
Joe Suzuki
?
レイトレ空间构造入门
レイトレ空间构造入门レイトレ空间构造入门
レイトレ空间构造入门
Toru Matsuoka
?
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709
swkagami
?

Viewers also liked (17)

エンシ?ニアに惭补肠を荐める理由
エンシ?ニアに惭补肠を荐める理由エンシ?ニアに惭补肠を荐める理由
エンシ?ニアに惭补肠を荐める理由
Hiroyuki Kusu
?
贰诲颈迟辞谤缩小のススメ
贰诲颈迟辞谤缩小のススメ贰诲颈迟辞谤缩小のススメ
贰诲颈迟辞谤缩小のススメ
Nobukazu Hanada
?
私がお世话になった技术书たち
私がお世话になった技术书たち私がお世话になった技术书たち
私がお世话になった技术书たち
法林浩之
?
厂滨惭顿で整数除算
厂滨惭顿で整数除算厂滨惭顿で整数除算
厂滨惭顿で整数除算
shobomaru
?
鲍狈滨齿ことはじめ
鲍狈滨齿ことはじめ鲍狈滨齿ことはじめ
鲍狈滨齿ことはじめ
Tomoya Miwa
?
鲍苍颈虫コマンド入门
鲍苍颈虫コマンド入门鲍苍颈虫コマンド入门
鲍苍颈虫コマンド入门
Satosi Sakai
?
齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた
齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた
齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた
MITSUNARI Shigeo
?
Boost.SIMD
Boost.SIMDBoost.SIMD
Boost.SIMD
Akira Takahashi
?
Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎
Sho A
?
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
?
鲍苍颈虫ファイルシステムの歴史
鲍苍颈虫ファイルシステムの歴史鲍苍颈虫ファイルシステムの歴史
鲍苍颈虫ファイルシステムの歴史
magoroku Yamamoto
?
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
Takaya Kotohata
?
百万件くらいのデータの扱い方
百万件くらいのデータの扱い方百万件くらいのデータの扱い方
百万件くらいのデータの扱い方
Masafumi Yokoyama
?
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
ktateish
?
Unix architecture
Unix architectureUnix architecture
Unix architecture
raw-hide
?
エンシ?ニアに惭补肠を荐める理由
エンシ?ニアに惭补肠を荐める理由エンシ?ニアに惭补肠を荐める理由
エンシ?ニアに惭补肠を荐める理由
Hiroyuki Kusu
?
贰诲颈迟辞谤缩小のススメ
贰诲颈迟辞谤缩小のススメ贰诲颈迟辞谤缩小のススメ
贰诲颈迟辞谤缩小のススメ
Nobukazu Hanada
?
私がお世话になった技术书たち
私がお世话になった技术书たち私がお世话になった技术书たち
私がお世话になった技术书たち
法林浩之
?
厂滨惭顿で整数除算
厂滨惭顿で整数除算厂滨惭顿で整数除算
厂滨惭顿で整数除算
shobomaru
?
鲍狈滨齿ことはじめ
鲍狈滨齿ことはじめ鲍狈滨齿ことはじめ
鲍狈滨齿ことはじめ
Tomoya Miwa
?
鲍苍颈虫コマンド入门
鲍苍颈虫コマンド入门鲍苍颈虫コマンド入门
鲍苍颈虫コマンド入门
Satosi Sakai
?
齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた
齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた
齿别辞苍辫丑颈ハッカソンで别虫辫を作ってみた
MITSUNARI Shigeo
?
Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎
Sho A
?
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
?
鲍苍颈虫ファイルシステムの歴史
鲍苍颈虫ファイルシステムの歴史鲍苍颈虫ファイルシステムの歴史
鲍苍颈虫ファイルシステムの歴史
magoroku Yamamoto
?
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ詳解UNIXプログラミング 第4章 ファイルとディレクトリ
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
Takaya Kotohata
?
百万件くらいのデータの扱い方
百万件くらいのデータの扱い方百万件くらいのデータの扱い方
百万件くらいのデータの扱い方
Masafumi Yokoyama
?
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
【幕張読書会】Unixカーネルの設計 3(バッファキャッシュ)
ktateish
?
Unix architecture
Unix architectureUnix architecture
Unix architecture
raw-hide
?

Similar to 骋笔鲍による多倍长整数乗算の高速化手法の提案 (20)

颁鲍顿础1日(?)体験会
颁鲍顿础1日(?)体験会颁鲍顿础1日(?)体験会
颁鲍顿础1日(?)体験会
RinKuriyama
?
多倍长整数の乗算と高速フーリエ変换
多倍长整数の乗算と高速フーリエ変换多倍长整数の乗算と高速フーリエ変换
多倍长整数の乗算と高速フーリエ変换
京大 マイコンクラブ
?
optimal Ate pairing
optimal Ate pairingoptimal Ate pairing
optimal Ate pairing
MITSUNARI Shigeo
?
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
Kimikazu Kato
?
An Experimental Study of Bitmap Compression vs. Inverted List Compression
An Experimental Study of Bitmap Compression vs. Inverted List CompressionAn Experimental Study of Bitmap Compression vs. Inverted List Compression
An Experimental Study of Bitmap Compression vs. Inverted List Compression
Takeshi Yamamuro
?
颁鲍顿础1日(?)体験会 (再アップロード)
颁鲍顿础1日(?)体験会 (再アップロード)颁鲍顿础1日(?)体験会 (再アップロード)
颁鲍顿础1日(?)体験会 (再アップロード)
RinKuriyama
?
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
?
衝突判定
衝突判定衝突判定
衝突判定
Moto Yan
?
第5回 配信講義 計算科学技術特論B(2022)
第5回 配信講義 計算科学技術特論B(2022)第5回 配信講義 計算科学技術特論B(2022)
第5回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
More modern gpu
More modern gpuMore modern gpu
More modern gpu
Preferred Networks
?
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
竞技プログラミングでの线型方程式系
竞技プログラミングでの线型方程式系竞技プログラミングでの线型方程式系
竞技プログラミングでの线型方程式系
tmaehara
?
Hpc148
Hpc148Hpc148
Hpc148
N.Nakasato
?
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
研究动向から考える虫86/虫64最适化手法
研究动向から考える虫86/虫64最适化手法研究动向から考える虫86/虫64最适化手法
研究动向から考える虫86/虫64最适化手法
Takeshi Yamamuro
?
ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分
Junya Arai
?
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
MasanoriSuganuma
?
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
智啓 出川
?
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
Preferred Networks
?
颁鲍顿础1日(?)体験会
颁鲍顿础1日(?)体験会颁鲍顿础1日(?)体験会
颁鲍顿础1日(?)体験会
RinKuriyama
?
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
Kimikazu Kato
?
An Experimental Study of Bitmap Compression vs. Inverted List Compression
An Experimental Study of Bitmap Compression vs. Inverted List CompressionAn Experimental Study of Bitmap Compression vs. Inverted List Compression
An Experimental Study of Bitmap Compression vs. Inverted List Compression
Takeshi Yamamuro
?
颁鲍顿础1日(?)体験会 (再アップロード)
颁鲍顿础1日(?)体験会 (再アップロード)颁鲍顿础1日(?)体験会 (再アップロード)
颁鲍顿础1日(?)体験会 (再アップロード)
RinKuriyama
?
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
?
第5回 配信講義 計算科学技術特論B(2022)
第5回 配信講義 計算科学技術特論B(2022)第5回 配信講義 計算科学技術特論B(2022)
第5回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
竞技プログラミングでの线型方程式系
竞技プログラミングでの线型方程式系竞技プログラミングでの线型方程式系
竞技プログラミングでの线型方程式系
tmaehara
?
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
?
研究动向から考える虫86/虫64最适化手法
研究动向から考える虫86/虫64最适化手法研究动向から考える虫86/虫64最适化手法
研究动向から考える虫86/虫64最适化手法
Takeshi Yamamuro
?
ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分ICDE2014 勉強会 新井担当分
ICDE2014 勉強会 新井担当分
Junya Arai
?
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
MasanoriSuganuma
?
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
智啓 出川
?
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
Preferred Networks
?

骋笔鲍による多倍长整数乗算の高速化手法の提案

  • 1. 理学部 情報数理科学科 4回生 藤本研究室所属 北野晃司
  • 2. ? 現在主流の整数型 ? int(32bit) ? long long(64bit) ? 多倍長整数演算 ? より大きいbit数の整数を対象とした演算 ? 研究が盛ん ? GPGPU ? GPUによる汎用計算 ? 近年注目されつつある 2 Next?動機?目的
  • 3. ? 多倍長整数演算は時間がかかる ? 特に積、商、平方根の演算 ? 商、平方根 ? ニュートン法を用いて高速化可能 ? 高速な乗算が使える場合 ? GPUを用いて多倍長整数乗算を高速に解く手法を提 案 ※ニュートン法による逆数を求める漸化式?Xn+1=2*Xn-a*Xn^2 平方根を求める漸化式?Xn+1=(Xn + a/Xn) /2 aは適当な初期 値 3 Next?提案内容
  • 4. ? 積表という並列処理に適した データ構造とその処理法の提案 ? 2つの多倍長整数の和を高速に求める アルゴリズムの提案 時間の都合により割 愛 4 Next?発表の流れ
  • 5. ? GPUによる並列処理の概要 ? 提案手法 ? 積表 ? 積表に対する効率的な処理法の提案 ? 評価実験 ? まとめと今後の課題 5
  • 6. ? スレッド ― GPUによる並列処理の 最小単位 ? スレッドブロック ? スレッドの集まり スレッ スレッドブロッ ク ド (以下ブロッ ク) 6 Next?GPUプログラムの概要
  • 7. ? 1つの関数を複数のブロック 関数 により同時に処理可能 ? ? 右図のように同一のコードを参 ? ? 照 A[ID]=A[ID]*2+1 ? スレッドのID ? ? どのブロックのどのスレッドな ? ? のかを表す番号 ? 異なるスレッドに異なる動作を させる鍵 7 Next?提案手法
  • 8. ? GPUによる並列処理の概要 ? 提案手法 ? 積表 ? 積表に対する効率的な処理法の提案 ? 評価実験 ? まとめと今後の課題 8
  • 9. ? 10進数における積 ? 右図のような筆算で求めることが可 ? 積表能 ?–桁上げの処理が必要 筆算を元に得られた表 – 桁上げの計算をその値が必要な 桁上げが無ければ列(桁)ごと 列自身に行わせる に並列に計算できるので – 列ごとの総和が他の列の演算と は????? は独立に行える 9 Next?積表の構成
  • 10. ? 多倍長整数A×Bの積表 ? Aは5桁、Bは3桁 ? BASEは多倍長整数の基数 ? BASE=10なら10進数 ? A[0]がAの1の位の数 ~~~~~~~~~~~~~~~~~~~ ? 要素の規則性 ? 2行ごとに添字が1変わる ? 桁数を変えても同様 10 Next?積表の一般化
  • 11. ? 多倍長整数A×Bの積表 ? Aはa桁、Bはb桁(a≧b) ? 赤と緑の部分 ? 列数は共にb列 ? 行数は1列毎に2行ずつ増減 ? 黄の部分 ? 列数はa-b列 ? 行数はb×2行 11 Next?積表の単純な処理法
  • 12. ? 積表の処理 ? 1列に1スレッドの割り当て ? 列ごとの総和計算 ? この処理の欠点 ? スレッド毎の演算回数の差 ? 処理が早く終わったスレッド はただ待つだけ ? 演算器が遊んでフルに性能が 発揮できない 12 Next?積表の再構成
  • 13. ? 欠点を解決するための変形 ? 緑の部分を赤の部分に結合 ? 列数は(a-b)+b=a列 ? 行数はb×2行 13 Next?再構成した積表の具体
  • 14. ? 5桁×3桁での例 ? 赤と緑、黄、の2種類の長方形 ? 列総和に必要な演算回数 – どの列も同じ(2×b 回) ? 赤と緑の長方形 – 赤の総和と緑の総和が個別に必要なことに注意 14 Next?さらなる工夫
  • 15. ? GPUによる並列処理の概要 ? 提案手法 ? 積表 ? 積表に対する効率的な処理法の提案 ? 評価実験 ? まとめと今後の課題 15
  • 16. ? 水色の領域 ? 赤のみを含む?緑のみを 含む?境界を含むの3種類 ? 1ブロックが1領域を担当 ※BLOCK_SIZE=1ブロック中のスレッド数 16 Next?領域分けによる利点
  • 17. 512列 b列 ? GPU GTX480では 例え ? 最大23040スレッド並列 ば??? ? 1 これは並列性の低い手法 b× 0 ? 2 2 512スレッド並 ? 4 行 行 列 ? 領域分けは並列性を高める Aは1024桁 Bは512桁とな る 例:BLOCK_SIZE=16な ら 17 16384スレッド並列 Next?具体的な処理法
  • 18. ? 赤のみもしくは緑のみの領域 ? ? 各スレッドが自分が計算すべき列 ? colにおける領域内での総和計算 ? ? 境界を含む領域 ? 赤と緑の部分それぞれの総和計算 ? ? ? 赤の部分の総和 ? ? 答えを格納する配列Cの添字colへ 足し込む ? 緑の部分の総和 C ?? ?? ? ? ? ? ? 配列Cの添字col+a(Aの桁数)へ ? 足し込む 18 Next?黄の長方形に対する処理
  • 19. ? 先と同様に領域分け ? 赤のみ(緑のみ)に対する処理 と同様 ? それらとの違い ? 参照するAやBの添字 ? 総和を足し込むCの添字 19 Next?評価実験
  • 20. ? GPUによる並列処理の概要 ? 提案手法 ? 積表 ? 積表に対する効率的な処理法の提案 ? 評価実験 ? まとめと今後の課題 20
  • 21. ? NTL(A Library for doing Number Theory) ? CPUによる多倍長演算ライブラリ ? 本実験の比較対象 ? 出典:http://www.shoup.net/ntl/ ? NTLと提案するアルゴリズムの比較 ? 6種類のbit数において36通りの組み合わせの 多倍長整数乗算の実行時間 21 Next?実験環境
  • 22. ? CPU ? 2.93GHz Intel Core i3(1コアのみ使用,SSE命令未使 用) ? GPU ? NVIDIA GeForce GTX480 ? OS ? 64bit Windows7 Professional SP1 ? コンパイラ ? Visual Studio 2008 Professional ? CUDA ? Ver 3.2 ? ディスプレイドライバ ? Ver 285.62 22 Next?実験結果
  • 24. ? 下表はNTLに対する、実装したアルゴリズムの速度向上 率 ? 実験したすべての場合において実装したアルゴリズムは NTLを上回る速度 ? 最大で60倍を超える速度向上率 24 Next?まとめと今後の課題
  • 25. ? GPUによる並列処理の概要 ? 提案手法 ? 積表 ? 積表に対する効率的な処理法の提案 ? 評価実験 ? まとめと今後の課題 25
  • 26. ? 実装したアルゴリズムは既存の多倍長演算 ライブラリを上回る速度 ? 今回は最大256Kbitsという相当大きい数までを想定 ? 実際の問題では数Kbits程度が主流 ? 対象を絞ることでさらなる高速化手法が考えられる可能性大 26