# 多處理機平行程式設計 作業bonus說明(加分題) ###### tags: `成大多處理機平行程式設計` [ToC] ## 題目:我要加速(bonus) ### 題目敘述 與作業4-2相同 給定一個n 層全連接層的類神經網路,其中第 ${1}$ 層是輸入層、第 ${n}$ 層是輸出層、其它為隱藏層。第 $i$ 層具有${P_i}$ 個神經元,其中${1 ≤ i ≤ n}$。第i 層中每一個神經元都有一個連結連到第$i+1$ 層中的每一個神經元,其中${1 ≤ i < n}$。令${w^i_{j,k}}$為第 $i$ 層中第 $j$ 個神經元連結到第 $i+1$ 層中第 $k$ 個神經元的權重。令${[v^i_1v^i_2v^i_3v^i_4...]}$為第 $i$ 層中神經元的值,其中${1 ≤ i ≤ n}$。則我們可以得到如下${v^{i+1}_k = \sum^{P_i}_{j=1}w^i_{j,k}v^i_j}$,其中${1 ≤ k ≤ P_{i+1}}$。我們想要以最快的速度從輸入層得到輸出層的結果。請求出此類神經網路所需的最小乘法數。 ### 輸入輸出說明 第一行只有一個數字 ${n}$ , 代表有 ${n}$ 層全連接層的類神經網路。第二行給定一個序列${P_1P_2... P_n}$代表每一層的維度,${P_1P_2... P_n}$數字之間只以空白區隔。輸出此類神經網路所需的最小乘法數,如下面解答所示,無須換行。 資料範圍: * $100 \leq n < 10000$ * $5 < P_i < 100$ <font color="#f00">注意:1.資料範圍與4-2不同 $\space$$\space$$\space$$\space$$\space$$\space$$\space$ 2.輸出的數字後面都有空格 $\space$$\space$$\space$$\space$$\space$$\space$$\space$ 3.要做平行化,mpi、pthread都可以用記得修改成對應的makefile $\space$$\space$$\space$$\space$$\space$$\space$$\space$ 4.有兩個隱藏測資 全對才給分</font> timeout:5s(包含隱藏測資) ### 加分方式 作業總成績加10分(即使最後作業滿分也會加到總成績) 相當於總成績加4分 ### 繳交格式 繳交期限為12/27(五)晚上11點59分 在Github上傳一個<font color="#f00">程式碼檔案以及對應的Makefile檔案</font>,程式碼檔名為 學號_bonus 例如:p12345678_bonus.c p12345678_bonus.cpp都可 Makefile就叫Makefile