狠狠撸

狠狠撸Share a Scribd company logo
PARALLELIZING THE PROBLEM
OF SET INTERSECTION BY GPU
         COMPUTING
    指導教授:伍朝欽教授



      組員:張力升、黃迺翔、林承祖、黃勛賢
摘要
CUDA
apriori algorithm
Memory coalescing
演算法
實驗結果
结论
CUDA
Background
GPU verse CPU
架構
Programming Model
Streaming Multiprocessor
Background




CUDA是NVIDIA推出利用
GPU做平行運算的架構。
編程人員可以選擇使用高級
語言或驅動程序 API來實現
並行處理。
GPU verse CPU
                    Control & cache         ALU


                  ALU   ALU
    Control
                  ALU   ALU


          CPU                         GPU
          Cache



   DRAM                        DRAM
CUDA的架構

CUDA的組成分為 CPU
Library、runtime、
                                       Application
Driver 三個部分,
而開發程式中,就
                   CUDA
是經由這三個部份
                   Library
來控制並運用GPU
的運算能力。
                              CUDA
                             Runtime

                                         CUDA
                                         Driver


            GPU
Programming Model
CPU                                                One Kernel        One Grid
                   Kernel 1   Kernel 2
Host                                               Kernel 2

                                                                   Call


 GPU
         Grid 1                 Grid 2                 Thread    Thread    Thread
Device
                                                        (0, 0)    (1, 0)    (2, 0)
                                 Block    Block
          Block     Block                              Thread    Thread    Thread
                                 (0, 0)   (1, 0)
          (0, 0)    (1, 0)                              (0, 1)    (1, 1)    (2, 1)
                                 Block    Block
          Block     Block
                                 (0, 1)   (1, 1)
          (0, 1)    (1, 1)
                                 Block    Block
                                 (0, 2)   (1, 2)


         BLOCK可支援到二維陣列,而THREAD則是支援至三維。
Memory model
                                   (Device)Grid
        ?Read/write per-thread :
           ?registers               Block (0, 0)                 Block (1, 0)
        ?Read/write per-block :           Share Memory                 Share Memory
           ?shared memory
        ?Read/write per-thread :     Registers     Registers      Registers     Registers
SPEED




           ?local memory (DRAM)
        ?Read/write per-grid :        Thread        Thread         Thread        Thread
           ?global memory (DRAM)       (0, 0)        (1, 0)         (0, 0)        (1, 0)
        ?Read/only per-grid :
           ?constant and texture      Local         Local          Local         Local
           memories (DRAM)           Memory        Memory         Memory        Memory

                    Host
                                                         Global Memory

                                                        Constant Memory

                                                         Texture Memory
G80 Streaming Multiprocessor (SM)
 Streaming
Multiprocessor
   I cache
                 ? Multithreading issuing unit
  MT issue         -指令的調度
  C cache
                 ? Instruction and constant cache
  SP     SP
                 ? 8 streaming processor
  SP     SP         -每個SP對應處理一個Thread
                 ? 2 Special Function Units (SFU)
  SP     SP
                   -Transcendental operations (e.g. sin,cosin..)
  SP     SP      ? A 16KB read/write shared memory
 SFU    SFU
                   -受軟體控制資料儲存
    Share
   Memory
apriori algorithm
Data Mining
關聯分析(Association Analysis)
Find Frequent Patterns
apriori Algorithm
Data Mining(1)
?   概念:從儲存的大量資料中,找出可有效理解
    的資訊,協助決策者進行更週延的決策。

     資料                   資訊


            Data Mining
Data Mining(2)
?   領域:資料產生資訊的模式(Model),描述資
    料中的特徵及關係。

    ? 分類(Classification)

    ? 關聯分析(Association)

    ? 分群(Clustering)

    ? 趨勢分析(TrendAnalysis)
    ? 循序特徵(Sequence Pattern )
關聯分析
?   分析兩資料的關聯性

?   E.g.假設一零售商店店長,要進行一促銷策略
    的選擇,在交易紀錄發現,碳酸飲料和洋芋片
    一起購買的比例特別突出,就可以依此資訊來
    進行促銷。
Find Frequent Patterns(1)
?   概念:找最出現頻率較高的資料。




?   E.g. 確認哪些組合的商品,是較多顧客會同時
    選購的。
Find Frequent Patterns(2)
?   名詞定義:
    ? Minimum   support : 最少需要出現幾次
    ? K-itemset : K個元素組成的集合
      ? E.g.   2-itemset={A, B},{A, C}
    ? Transactions    : Itemset的Index
      ? E.g.      Transactions       Itemset
                      T1            {A, B, C}
                      T2             {A, D}
Find Frequent Patterns(3)
?   Minimum Support:
?   Ex: minimum support = 3
                          出現3次以上(含)交易記錄K-itemset
                          1-itemset   {A},{B},{C},{D},{E}
                          2-itemset   {A,B},{B,C},{B,D},{B,E},{C,D}
                          3-itemset   {B,C,D}
交                     交
易                     易
序                     記       {A}       洋芋片
號                     錄       {B}      碳酸飲料
                              {C}        泡麵
                              {D}        牛奶
                              {E}        雞蛋
apriori Algorithm(1)
?   apriori pruning principle: If there is any itemset
    which is infrequent, its superset should not be
    generated/tested!
    ( Agrawal & Srikant @VLDB’94,Mannila,etal.@KDD’ 94)
apriori Algorithm(2)


    Data            Handle          Result




           Search            Sort
apriori Algorithm(3)
Minimum support = 3       Original            Sorted
                        {A}      3          {B}        6
                        {B}      6          {C}        4
                        {C}      4          {D}        4
                        {D}      4          {A}        3
                        {E}      3          {E}        3




                      1-itemset {A},{B},{C},{D},{E}
apriori Algorithm(4)
Minimum support = 3   1-itemset       {A},{B},{C},{D},{E}
                       2-itemset      {A,B},{B,C},{B,D},{B,E},{C,D}
                         Original                     Sorted
                      {A,B} 3                    {B,C} 4
                      {A,C} 2                    {B,D} 4
                      {A,D} 2                    {A,B} 3
                      {A,E}       1              {B,E} 3
                      {B,C}       4              {C,D} 3
                      {B,D} 4                    {A,C} 2
                      {B,E}       3              {A,D} 2
                      {C,D} 3                    {C,E} 2
                      {C,E}       2              {D,E} 2
                      {D,E}       2              {A,E} 1
apriori Algorithm(5)
Minimum support = 3   1-itemset    {A},{B},{C},{D},{E}
                      2-itemset    {A,B},{B,C},{B,D},{B,E},{C,D}
                      3-itemset    {B,C,D}


                        Original                 Sorted

                      {A,B,C}       2        {B,C,D}      3
                      {A,B,D}       2        {A,B,C}      2
                      {A,B,E}       1        {A,B,D}      2
                      {B,C,D}       3        {B,C,E}      2
                      {B,C,E}       2        {B,D,E}      2
                      {B,D,E}       2        {C,D,E}      2
                      {C,D,E}       2        {A,B,E}      1
Memory coalescing
概念
Compare
概念
?   To maximize global memory bandwidth
    ? Minimize     the number of bus transactions
      ? Coalesce   memory accesses


?   Coalescing
    ? Memory   transactions are per half-warp (16 threads)
Compare(1)

Address      128      132            136              140   …   188




Thread        0        1              2                3    …   15


          Half-wrap         All threads participate


Address      128      132            136              140   …   188




Thread        0        1              2                3    …   15

                      Some threads not participate
Compare(2)

Address   128            132          136           140              …   188




Thread     0              1            2             3               …   15

                          Permuted Access by Threads


Address   128            132          136           140              …   188




Thread     0              1            2             3               …   15
                Misaligned Starting Address (not a multiple of 64)
演算法
目的
參數定義
實驗演算法
目的
?   以平行方式解決Find Frequent Patterns問題
?   以Memory Coalescing將程式最佳化
                  1-itemset   {A},{B},{C},{D},{E}
                  2-itemset   {A,B},{B,C},{B,D},{B,E},{C,D}
                  3-itemset   {B,C,D}
參數定義
Target []   :   較短的集合
  Set[]     :   較長的集合
Result      :   兩集合交集後的結果
 Begin      :   從Set[Begin]開始進行比對
  End       :   比對進行不超過Set[End]
實驗演算法(1)

 Target     B      C      E      F




  Set      A       B      C      D      E   G
          Begin




 Result   True    True   True   Flase
实验演算法(2)
      G       H       I       J
                                              CPU




  A       B       C       D       E   G   H




                          CPU
实验演算法(2)
      G     H   I        J
                                              GPU
                                       Non Memory coalescing



      A     B   C       D      E   G




 Thread_1           Thread_2           Thread_3
实验演算法(3)
      G     H   I        J
                                               GPU
                                          Memory coalescing



      A     B   C       D      E   G




 Thread_1           Thread_2           Thread_3
實驗結果
平台介紹
Data Size, Block & Thread
CPU versus GPU
Memory Coalescing Effect
平台介绍(颁笔鲍)


       # of Cores           4
      # of Threads          4
      Clock Speed        2GHz
      Memory Size         6GB
      Memory Type       DDR3 800
 # of Memory Channels       3
Max Memory Bandwidth    19.2GB/s
         Cache            4MB
平台介绍(骋笔鲍)


   Number of GPUs                1
Number of processor cores      240
     Clock Speed            1300MHz
    Memory Size                4GB
    Memory Type              GDDR3
    Memory Clock             800MHz
Max Memory Bandwidth        102.4GB/s
  Compute capability            1.3
Data Size, Block & Thread
Data Size = 10, Block fixed
Data Size = 10K, Block fixed
Data Size = 10K, Thread fixed
Data Size = 10
Data Size = 100K, Block fixed
Data Size = 100K, Thread fixed
CPU versus GPU
Block = 1, Thread = 1
Block = 1, Thread = 10
Block = 10, Thread = 100
Block = 10, Thread = 512
Block = 1, Thread = 1
Block = 1, Thread = 10
Block = 10, Thread = 100
Block = 10, Thread = 512
Memory Coalescing Effect
Block = 1, Thread = 10
Block = 1, Thread = 512
Block = 10, Thread = 512
Block = 1, Thread = 10
Block = 1, Thread = 512
Block = 10, Thread = 512
结论
结论
?   藉由應用CUDA架構 , 資料探勘的搜尋工作時間
    在資料量很大時只需原本CPU程式工作時間的
    三分之一

?   經由Memory Coalescing改良的的CUDA程式效
    能是原本的三倍左右 , 與CPU程式比較下更是提
    升將近十倍的效率

?   未來目標:將更多種演算法平行化,應用在
    CUDA架構上,藉以達成最佳化的目的。
Thank you for listening!

More Related Content

Similar to 大學部101級專題 cuda (13)

关联规则
关联规则关联规则
关联规则
liuzongqi
?
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成
tjpucompiler
?
颁程式-阵列与指标
颁程式-阵列与指标颁程式-阵列与指标
颁程式-阵列与指标
艾鍗科技
?
程式人杂誌 -- 2014 年6月號
程式人杂誌 -- 2014 年6月號程式人杂誌 -- 2014 年6月號
程式人杂誌 -- 2014 年6月號
鍾誠 陳鍾誠
?
PBL1-v1-005j.pptx
PBL1-v1-005j.pptxPBL1-v1-005j.pptx
PBL1-v1-005j.pptx
NAIST
?
Metro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' ViewMetro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' View
Eric ShangKuan
?
Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Hadoop 0.20 程式設計
Hadoop 0.20 程式設計
Wei-Yu Chen
?
Track1dongsiying4
Track1dongsiying4Track1dongsiying4
Track1dongsiying4
drewz lin
?
Erlang and HTML5
Erlang and HTML5Erlang and HTML5
Erlang and HTML5
Witeman Zheng
?
快快乐乐厂滨惭顿
快快乐乐厂滨惭顿快快乐乐厂滨惭顿
快快乐乐厂滨惭顿
Wei-Ta Wang
?
罢谤别别濒颈苍办比赛分享
罢谤别别濒颈苍办比赛分享罢谤别别濒颈苍办比赛分享
罢谤别别濒颈苍办比赛分享
failno
?
系統程式 -- 第 9 章 虛擬機器
系統程式 -- 第 9 章 虛擬機器系統程式 -- 第 9 章 虛擬機器
系統程式 -- 第 9 章 虛擬機器
鍾誠 陳鍾誠
?
電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒
電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒
電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒
TAAZE 讀冊生活
?
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成
tjpucompiler
?
颁程式-阵列与指标
颁程式-阵列与指标颁程式-阵列与指标
颁程式-阵列与指标
艾鍗科技
?
程式人杂誌 -- 2014 年6月號
程式人杂誌 -- 2014 年6月號程式人杂誌 -- 2014 年6月號
程式人杂誌 -- 2014 年6月號
鍾誠 陳鍾誠
?
PBL1-v1-005j.pptx
PBL1-v1-005j.pptxPBL1-v1-005j.pptx
PBL1-v1-005j.pptx
NAIST
?
Metro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' ViewMetro Style Apps from C++ Developers' View
Metro Style Apps from C++ Developers' View
Eric ShangKuan
?
Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Hadoop 0.20 程式設計
Hadoop 0.20 程式設計
Wei-Yu Chen
?
Track1dongsiying4
Track1dongsiying4Track1dongsiying4
Track1dongsiying4
drewz lin
?
快快乐乐厂滨惭顿
快快乐乐厂滨惭顿快快乐乐厂滨惭顿
快快乐乐厂滨惭顿
Wei-Ta Wang
?
罢谤别别濒颈苍办比赛分享
罢谤别别濒颈苍办比赛分享罢谤别别濒颈苍办比赛分享
罢谤别别濒颈苍办比赛分享
failno
?
系統程式 -- 第 9 章 虛擬機器
系統程式 -- 第 9 章 虛擬機器系統程式 -- 第 9 章 虛擬機器
系統程式 -- 第 9 章 虛擬機器
鍾誠 陳鍾誠
?
電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒
電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒
電腦常識(含計算機大意) 中油.台水.捷運.中華電學儒
TAAZE 讀冊生活
?

Recently uploaded (7)

美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单
美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单
美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单
peyzuq
?
英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单
英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单
英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单
peyzuq
?
Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理
Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理
Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理
冠緯 李
?
一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作
一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作
一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作
do2q1pxj1i
?
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
Johnny Sung
?
(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;
(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;
(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;
upqeko
?
美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单
美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单
美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单
peyzuq
?
美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单
美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单
美国学位证办理(鲍厂颁毕业证书)南加利福尼亚大学毕业证成绩单
peyzuq
?
英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单
英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单
英国学位证了解(鲍狈厂奥毕业证书)新南威尔士大学毕业证成绩单
peyzuq
?
Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理
Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理
Build With AI 2025 Changhua - 邊緣人救星!打造個人的Gemini AI助理
冠緯 李
?
一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作
一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作
一比一(鲍辞蹿罢毕业证书)加拿大多伦多大学毕业证毕业完成信原版制作
do2q1pxj1i
?
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
[GDG Build with AI] 善用現代 AI 科技:打造專屬行銷工具箱 @ GDG Changhua 彰化
Johnny Sung
?
(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;
(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;
(英国文凭学位证书)威斯敏斯特大学毕业证学历认证&濒迟;奥别蝉迟尘颈苍蝉迟别谤毕业证哪里买&驳迟;
upqeko
?
美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单
美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单
美国学位证办(惭厂鲍毕业证书)密歇根州立大学毕业证成绩单
peyzuq
?

大學部101級專題 cuda

  • 1. PARALLELIZING THE PROBLEM OF SET INTERSECTION BY GPU COMPUTING 指導教授:伍朝欽教授 組員:張力升、黃迺翔、林承祖、黃勛賢
  • 3. CUDA Background GPU verse CPU 架構 Programming Model Streaming Multiprocessor
  • 5. GPU verse CPU Control & cache ALU ALU ALU Control ALU ALU CPU GPU Cache DRAM DRAM
  • 6. CUDA的架構 CUDA的組成分為 CPU Library、runtime、 Application Driver 三個部分, 而開發程式中,就 CUDA 是經由這三個部份 Library 來控制並運用GPU 的運算能力。 CUDA Runtime CUDA Driver GPU
  • 7. Programming Model CPU One Kernel One Grid Kernel 1 Kernel 2 Host Kernel 2 Call GPU Grid 1 Grid 2 Thread Thread Thread Device (0, 0) (1, 0) (2, 0) Block Block Block Block Thread Thread Thread (0, 0) (1, 0) (0, 0) (1, 0) (0, 1) (1, 1) (2, 1) Block Block Block Block (0, 1) (1, 1) (0, 1) (1, 1) Block Block (0, 2) (1, 2) BLOCK可支援到二維陣列,而THREAD則是支援至三維。
  • 8. Memory model (Device)Grid ?Read/write per-thread : ?registers Block (0, 0) Block (1, 0) ?Read/write per-block : Share Memory Share Memory ?shared memory ?Read/write per-thread : Registers Registers Registers Registers SPEED ?local memory (DRAM) ?Read/write per-grid : Thread Thread Thread Thread ?global memory (DRAM) (0, 0) (1, 0) (0, 0) (1, 0) ?Read/only per-grid : ?constant and texture Local Local Local Local memories (DRAM) Memory Memory Memory Memory Host Global Memory Constant Memory Texture Memory
  • 9. G80 Streaming Multiprocessor (SM) Streaming Multiprocessor I cache ? Multithreading issuing unit MT issue -指令的調度 C cache ? Instruction and constant cache SP SP ? 8 streaming processor SP SP -每個SP對應處理一個Thread ? 2 Special Function Units (SFU) SP SP -Transcendental operations (e.g. sin,cosin..) SP SP ? A 16KB read/write shared memory SFU SFU -受軟體控制資料儲存 Share Memory
  • 10. apriori algorithm Data Mining 關聯分析(Association Analysis) Find Frequent Patterns apriori Algorithm
  • 11. Data Mining(1) ? 概念:從儲存的大量資料中,找出可有效理解 的資訊,協助決策者進行更週延的決策。 資料 資訊 Data Mining
  • 12. Data Mining(2) ? 領域:資料產生資訊的模式(Model),描述資 料中的特徵及關係。 ? 分類(Classification) ? 關聯分析(Association) ? 分群(Clustering) ? 趨勢分析(TrendAnalysis) ? 循序特徵(Sequence Pattern )
  • 13. 關聯分析 ? 分析兩資料的關聯性 ? E.g.假設一零售商店店長,要進行一促銷策略 的選擇,在交易紀錄發現,碳酸飲料和洋芋片 一起購買的比例特別突出,就可以依此資訊來 進行促銷。
  • 14. Find Frequent Patterns(1) ? 概念:找最出現頻率較高的資料。 ? E.g. 確認哪些組合的商品,是較多顧客會同時 選購的。
  • 15. Find Frequent Patterns(2) ? 名詞定義: ? Minimum support : 最少需要出現幾次 ? K-itemset : K個元素組成的集合 ? E.g. 2-itemset={A, B},{A, C} ? Transactions : Itemset的Index ? E.g. Transactions Itemset T1 {A, B, C} T2 {A, D}
  • 16. Find Frequent Patterns(3) ? Minimum Support: ? Ex: minimum support = 3 出現3次以上(含)交易記錄K-itemset 1-itemset {A},{B},{C},{D},{E} 2-itemset {A,B},{B,C},{B,D},{B,E},{C,D} 3-itemset {B,C,D} 交 交 易 易 序 記 {A} 洋芋片 號 錄 {B} 碳酸飲料 {C} 泡麵 {D} 牛奶 {E} 雞蛋
  • 17. apriori Algorithm(1) ? apriori pruning principle: If there is any itemset which is infrequent, its superset should not be generated/tested! ( Agrawal & Srikant @VLDB’94,Mannila,etal.@KDD’ 94)
  • 18. apriori Algorithm(2) Data Handle Result Search Sort
  • 19. apriori Algorithm(3) Minimum support = 3 Original Sorted {A} 3 {B} 6 {B} 6 {C} 4 {C} 4 {D} 4 {D} 4 {A} 3 {E} 3 {E} 3 1-itemset {A},{B},{C},{D},{E}
  • 20. apriori Algorithm(4) Minimum support = 3 1-itemset {A},{B},{C},{D},{E} 2-itemset {A,B},{B,C},{B,D},{B,E},{C,D} Original Sorted {A,B} 3 {B,C} 4 {A,C} 2 {B,D} 4 {A,D} 2 {A,B} 3 {A,E} 1 {B,E} 3 {B,C} 4 {C,D} 3 {B,D} 4 {A,C} 2 {B,E} 3 {A,D} 2 {C,D} 3 {C,E} 2 {C,E} 2 {D,E} 2 {D,E} 2 {A,E} 1
  • 21. apriori Algorithm(5) Minimum support = 3 1-itemset {A},{B},{C},{D},{E} 2-itemset {A,B},{B,C},{B,D},{B,E},{C,D} 3-itemset {B,C,D} Original Sorted {A,B,C} 2 {B,C,D} 3 {A,B,D} 2 {A,B,C} 2 {A,B,E} 1 {A,B,D} 2 {B,C,D} 3 {B,C,E} 2 {B,C,E} 2 {B,D,E} 2 {B,D,E} 2 {C,D,E} 2 {C,D,E} 2 {A,B,E} 1
  • 23. 概念 ? To maximize global memory bandwidth ? Minimize the number of bus transactions ? Coalesce memory accesses ? Coalescing ? Memory transactions are per half-warp (16 threads)
  • 24. Compare(1) Address 128 132 136 140 … 188 Thread 0 1 2 3 … 15 Half-wrap All threads participate Address 128 132 136 140 … 188 Thread 0 1 2 3 … 15 Some threads not participate
  • 25. Compare(2) Address 128 132 136 140 … 188 Thread 0 1 2 3 … 15 Permuted Access by Threads Address 128 132 136 140 … 188 Thread 0 1 2 3 … 15 Misaligned Starting Address (not a multiple of 64)
  • 27. 目的 ? 以平行方式解決Find Frequent Patterns問題 ? 以Memory Coalescing將程式最佳化 1-itemset {A},{B},{C},{D},{E} 2-itemset {A,B},{B,C},{B,D},{B,E},{C,D} 3-itemset {B,C,D}
  • 28. 參數定義 Target [] : 較短的集合 Set[] : 較長的集合 Result : 兩集合交集後的結果 Begin : 從Set[Begin]開始進行比對 End : 比對進行不超過Set[End]
  • 29. 實驗演算法(1) Target B C E F Set A B C D E G Begin Result True True True Flase
  • 30. 实验演算法(2) G H I J CPU A B C D E G H CPU
  • 31. 实验演算法(2) G H I J GPU Non Memory coalescing A B C D E G Thread_1 Thread_2 Thread_3
  • 32. 实验演算法(3) G H I J GPU Memory coalescing A B C D E G Thread_1 Thread_2 Thread_3
  • 33. 實驗結果 平台介紹 Data Size, Block & Thread CPU versus GPU Memory Coalescing Effect
  • 34. 平台介绍(颁笔鲍) # of Cores 4 # of Threads 4 Clock Speed 2GHz Memory Size 6GB Memory Type DDR3 800 # of Memory Channels 3 Max Memory Bandwidth 19.2GB/s Cache 4MB
  • 35. 平台介绍(骋笔鲍) Number of GPUs 1 Number of processor cores 240 Clock Speed 1300MHz Memory Size 4GB Memory Type GDDR3 Memory Clock 800MHz Max Memory Bandwidth 102.4GB/s Compute capability 1.3
  • 36. Data Size, Block & Thread Data Size = 10, Block fixed Data Size = 10K, Block fixed Data Size = 10K, Thread fixed
  • 38. Data Size = 100K, Block fixed
  • 39. Data Size = 100K, Thread fixed
  • 40. CPU versus GPU Block = 1, Thread = 1 Block = 1, Thread = 10 Block = 10, Thread = 100 Block = 10, Thread = 512
  • 41. Block = 1, Thread = 1
  • 42. Block = 1, Thread = 10
  • 43. Block = 10, Thread = 100
  • 44. Block = 10, Thread = 512
  • 45. Memory Coalescing Effect Block = 1, Thread = 10 Block = 1, Thread = 512 Block = 10, Thread = 512
  • 46. Block = 1, Thread = 10
  • 47. Block = 1, Thread = 512
  • 48. Block = 10, Thread = 512
  • 50. 结论 ? 藉由應用CUDA架構 , 資料探勘的搜尋工作時間 在資料量很大時只需原本CPU程式工作時間的 三分之一 ? 經由Memory Coalescing改良的的CUDA程式效 能是原本的三倍左右 , 與CPU程式比較下更是提 升將近十倍的效率 ? 未來目標:將更多種演算法平行化,應用在 CUDA架構上,藉以達成最佳化的目的。
  • 51. Thank you for listening!