關於專案,我出兩個練手題目:
一、多機資料處理。有10 臺機器,每台機器上儲存著10 億個64-bit 整數(不一定剛好10 億個,可能有上下幾千萬的浮動),一共約100 億個整數(其實一共也就80gb 資料,不算大,選這個量級是考慮了vps 虛擬機器的容量,便於實驗)。程式設計求出:
1. 這些數的平均數。
2. 這些數的中位數。
3. 出現次數最多的100 萬個數。
*4. (附加題)對這100 億個整數排序,結果順序存放到這10 臺機器上。
*5. (附加健壯性要求)你的程式應該能正確應對輸入資料的各種分布(均勻、正態、zipf)。
*6. (附加伸縮性要求)你的程式應該能平滑擴充套件到更多的機器,支援更大的資料量。比如20 臺機器、一共200 億個整數,或者50 臺機器、一共500 億個整數。
二、n-皇后問題的多機並行求解。利用多台機器求出n-皇后問題有多少個解。(注意目前的世界紀錄是n = 26,a000170 - oeis )
1. 8 皇后問題在單機上的運算時間是毫秒級,有92 個解,程式設計實現之。
2. 研究n-皇后問題的並行演算法,寫乙個單機多執行緒程式,爭取達到線性加速比(以cpu 核數計)。再設法將演算法擴充套件到多機並行。
3. 用10 臺8 核的機器(一共80 個cpu cores),求解19-皇后和20-皇后問題,看看分別需要多少執行時間。你的方案能否平滑擴充套件到更多的機器?
*4. (附加題)如果這10 臺機器的型號不一,有8 核也有16 核,有舊cpu也有更快的新cpu,你該採用何種負載均衡策略,以求縮短求解問題的時間(至少比plain round-robin 演算法要好)?
其他內容,詳見以下文章:
GIT主要用到的命令
git add 新增到暫存檔 git commit m 備註 提交到本地倉庫 git push 提交到遠端倉庫 fetch更新本地倉庫兩種方式 方法一 git fetch origin master git log p master.origin master 比較本地的倉庫和遠端參考的區別 方法二...
需要用到的Linux命令
1.預設級別轉換為3 文字模式 ln sf lib systemd system multi user.target etc systemd system default.target 2.或者預設級別轉換為5 圖形模式 ln sf lib systemd system graphical.targ...
python需要用到的筆記
總結 pycharm常用的一些命令 建立django專案的 django admin startproject 專案名稱 讓模型類轉變為資料表,生成遷移檔案 python manage.py makemigrations 執行遷移生成表 python manage.py migrate git命令 ...