LDA並行化實驗(待完善)

    實驗數據

    語料大概有1740篇文檔,19889的詞,機器爲16核,48G內存,因爲機器上有其它程序運行,實際可用內存不足6G。

    實驗方案

    主要包含LDA的三種實現:第一種是LDA的單機版本,第二種是LDA的mpi版本,第三種是LDA的mpi和openmpi混合版本,不過實驗條件所限,沒有搭建基於MPI的集羣,這裏只是初步看下效果。迭代次數爲1500,主題數目爲50,假設n爲內核數。

    實驗結果

    這裏先記錄大概的結果,以後有時間再進行完善和補充。

    第二種方法中,實驗跑了n分別等於16、8、4的時候。n=16的時候時間爲6m46s,n=8的時候時間爲4m29s,n=4的時候時間爲 8m35s。

    第三種方法,n分別取16,8,4,運行時間都比較慢,時間至少爲30分鐘,而且不同cpu的負載很不均衡,有時候高的是低的2倍,這個感覺比較困惑,需要進一步分析。

    第一種算法,時間在22m26s,佔用內存98M。

    實驗分析

    第一:都說MPI是進程級別的併發,而openmpi是線程級別的,至於爲什麼第三種算法會有這樣的結果暫時還不太清楚,會繼續實驗或者利用工具進行分析。

    第二:cpu負載的不均衡性。也就是說有些cpu的計算負載會比較大,想想會不會是文檔中詞有一定的聚集現象,分發的時候,有些文檔集合的詞集合較小,有些會比較大?

    第三從實驗結果看,lda的單機版本佔用內存是最小的,其它情況雖n增加會有一定的增加。

   接下來

    雖然之前玩過MPI集羣,不過現在工作環境不允許,所以只好試試單機的基於openmp進行並行化。接下來,繼續分析問題一和二,然後只利用openmp進行並行化試試效果,最後看能不能進行代碼改進,主要包括利用指令集的方式加速浮點運算、算法的改進包括利用稀疏存儲,共享內存等方式進行改進。

發佈了45 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章