vijos1534 高效能計算機

2021-08-14 12:54:55 字數 3591 閱讀 3018

背景wintercamp 2001 高效能計算機(hpc)

description:official

data:official

program:unknown

描述現在有一項時間緊迫的工程計算任務要交給你——國家高效能並行計算機的主管工程師——來完成。為了盡可能充分發揮並行計算機的優勢,我們的計算任務應當劃分成若干個小的子任務。

這項大型計算任務包括a和b兩個互不相關的較小的計算任務。為了充分發揮並行計算機的運算能力,這些任務需要進行分解。研究發現,a和b都可以各自劃分成很多較小的子任務,所有的a類子任務的工作量都是一樣的,所有的b類子任務也是如此(a和b類的子任務的工作量不一定相同)。a和b兩個計算任務之間,以及各子任務之間都沒有執行順序上的要求。

這台超級計算機擁有p個計算節點,每個節點都包括乙個序列處理器、本地主存和高速cache。然而由於常年使用和不連貫的公升級,各個計算節點的計算能力並不對稱。乙個節點的計算能力包括如下幾個方面:

1. 就本任務來說,每個節點都有三種工作狀態:待機、a類和b類。其中,a類狀態下執行a類任務;b類狀態下執行b類任務;待機狀態下不執行計算。所有的處理器在開始工作之前都處於待機狀態,而從其它的狀態轉入a或b的工作狀態(包括a和b之間相互轉換),都要花費一定的啟動時間。對於不同的處理節點,這個時間不一定相同。用兩個正整數

tiat_i^a

tia​和

tib (i=1,2,…,p)t_i^b~(i=1,2,…,p)

tib​ (i=1,2,…,p)分別表示節點i轉入工作狀態a和工作狀態b的啟動時間(單位:ns)。

乙個節點在連續處理同一類任務的時候,執行時間——不含狀態轉換的時間——隨任務量(這一類子任務的數目)的平方增長,即:

若節點i連續處理x個a類子任務,則對應的執行時間為:

t=kiax2t=k_i^ax^2

t=kia​x2

類似的,若節點i連續處理x個b類子任務,對應的執行時間為:

t=kibx2t=k_i^bx^2

t=kib​x2

其中,

kiak_i^a

kia​和

kibk_i^b

kib​是係數,單位是ns,

i=1,2,…,pi=1,2,…,p

i=1,2,…,p。

任務分配必須在所有計算開始之前完成,所謂任務分配,即給每個計算節點設定乙個任務佇列,佇列由一串a類和b類子任務組成。兩類子任務可以交錯排列。

計算開始後,各計算節點分別從各自的子任務佇列中順序讀取計算任務並執行,佇列中連續的同類子任務將由該計算節點一次性讀出,佇列中一串連續的同類子任務不能被分成兩部分執行。

現在需要你編寫程式,給這p個節點安排計算任務,使得這個工程計算任務能夠盡早完成。假定任務安排好後不再變動,而且所有的節點都同時開始執行,任務安排的目標是使最後結束計算的節點的完成時間盡可能早。

格式 輸入格式

第一行是對計算任務的描述,包括兩個正整數

nan_a

na​和

nbn_b

nb​,分別是a類和b類子任務的數目,兩個整數之間由乙個空格隔開。

後面部分是對此計算機的描述:

第二行是乙個整數p,即計算節點的數目。

隨後連續的p行按順序分別描述各個節點的資訊,第i個節點由第i+2行描述,該行包括下述四個正整數(相鄰兩個整數之間有乙個空格):

tia tib kia kibt_i^a~t_i^b~k_i^a~k_i^b

tia​ tib​ kia​ kib​

輸出格式

只有一行,包含有乙個正整數,即從各節點開始計算到任務完成所用的時間。

樣例1

樣例輸入1

5 5

3 15 10 6 4

70 100 7 2

30 70 1 6

copy

樣例輸出1

copy

限制本題一共6個測試點,第1、2、3點10分,第4、5點20分,第6點30分。

由於題目沒給時限,本人視實際情況,定第1、2、3點時限1s,第4點時限2s,第5、6點時限3s。

提示1≤na≤60,1≤nb≤60 1 \le n_a \le 60, 1 \le n_b \le 60

1≤na​≤60,1≤nb​≤60

1≤p≤20 1 \le p \le 20

1≤p≤20

1≤ta≤1000,1≤tb≤1000,1≤ka≤50,1≤kb≤50 1 \le t_a \le 1000, 1 \le t_b \le 1000, 1 \le k_a \le 50, 1 \le k_b \le 50

1≤ta​≤1000,1≤tb​≤1000,1≤ka​≤50,1≤kb​≤50

**wintercamp 2001 高效能計算機(hpc)

description:official

data:official

program:unknown

自己菜菜的啊 觀摩icefox巨佬題解 可知 我們現在其實相當於分成了兩個子任務待解決 1、針對每個點節點計算出 t[0/1][i][j]表示 最後乙個做的是a 還是b 然後我已經做了i個a j個b了的最小時間花費是多少 2、dp[now][i][j]表示 現在處於第now個節點 已經處理了i個a j個b真正的最小時間花費

t[0][i][j]=min

t[1][i][j]=min.

邊界條件為t[0][0][0]=t[1][0][0]=0.注意給t清最大值。

再記乙個tim[x][i][j]陣列,表示第x個節點完成i個a,j個b所需的最短時間。

解決第二個問題:用dp[x][i][j]表示前x個節點完成i個a任務和j個b任務的最短實際執行時間。則

dp[x][i][j] = min

邊界條件為dp[1][i][j]=tim[1][i][j]。

#include

#include

#include

#define n 66

using namespace std;

int t[2][n][n],dp[22][n][n],tim[22][n][n],na,nb,n,ta[n],tb[n],ka[n],kb[n];

inline char gc()

return

*s++;

}inline int

read()

int main()

}memset(dp,0x3f,sizeof(dp));

for (int i=0;i<=na;++i)

for (int j=0;j<=nb;++j) dp[1][i][j]=tim[1][i][j];

for (int now=2;now<=n;++now)

for (int i=0;i<=na;++i)

for (int j=0;j<=nb;++j)

for (int ki=0;ki<=i;++ki)

for (int kj=0;kj<=j;++kj)

dp[now][i][j]=min(dp[now][i][j],max(dp[now-1][i-ki][j-kj],tim[now][ki][kj]));

printf("%d",dp[n][na][nb]);

return

0;}

節能!高效能計算機刻不容緩

11月21日,在資訊產業部科技司的指導下,由中國電子工業標準化技術協會 簡稱中電標協 中國電子技術標準研究所主辦,由中電標協高效能計算機標準工作委員會 簡稱高標委 和上海瀾起科技 協辦的中國高效能計算機節能技術標準與應用研討會在北京舉行。來自資訊產業部科技司 中電標協 高標委等 機構以及英特爾 瀾起...

首款完全基於龍芯高效能計算機9月推出

4月17日電 記者從曙光公司獲悉,曙光將會在今年9月份推出完全基於龍芯cpu的刀片伺服器,該刀片伺服器屆時將裝配到曙光5000系列高效能計算機上。據曙光公司介紹,龍芯刀片伺服器擁有低功耗 安全自主可控的特點並擁有完全自主智財權,可以應用在國防 科研 基因研究 航天等領域。據了解,國產高效能計算機目前...

高效能計算機被指耗電嚴重 我國擬出節能標準

一台計算機一年400萬電費 該次會議由信產部直屬的中國電子工業標準化技術協會及中國高效能計算機標準工作委員會主辦,信產部主管 科技司副司長韓俊親自到場,可見對高效能計算機能耗問題的重視。與會演講的瀾起科技董事長兼ceo楊崇和博士表示,以乙個10萬億次的超級計算機為例,一年要消耗400萬人民幣的電費,...