計算諧波加速我有包含以下信息的數據集:減少數據幀中的R
- 負荷名稱
- 配置用於
- 測量性能
在這裏,你有一個玩具數據集來說明我的問題(性能數據根本沒有意義,我只是選擇了不同的整數來使示例容易遵循,實際上數據將是浮點數從性能測量來牛逼值):
workload cfg perf
1 a 1 1
2 b 1 2
3 a 2 3
4 b 2 4
5 a 3 5
6 b 3 6
7 a 4 7
8 b 4 8
可以使用生成它:
dframe <- data.frame(workload=rep(letters[1:2], 4),
cfg=unlist(lapply(seq_len(4),
function(x) { return(c(x, x)) })),
perf=round(seq_len(8))
)
我試圖來計算不同配置的諧波加速。爲此需要基本配置(在本例中爲cfg = 1)。然後高次諧波加速計算爲:
num_workloads
HS(cfg_i) = num_workloads/ sum (perf(cfg_base, wl_j)/perf(cfg_i, wl_j))
wl_j
例如,對於配置2將是:
HS(cfg_2) = 2/[perf(cfg_1, wl_1)/perf(cfg_2, wl_1) +
perf(cfg_1, wl_2)/perf_cfg_2, wl_2)]
我想計算諧波加速每工作量對和配置。通過使用示例數據集,其結果必然是:
workload.pair cfg harmonic.speedup
1 a-b 1 2/(1/1 + 2/2) = 1
2 a-b 2 2/(1/3 + 2/4) = 2.4
3 a-b 3 2/(1/5 + 2/6) = 3.75
4 a-b 4 2/(1/7 + 2/8) = 5.09
我與aggregate
和ddply
,以找到一種不使用循環溶液中掙扎,但我一直沒能拿出一個工作解。所以,我面臨的基本問題是:
- 如何處理工作負載和配置之間的關係。給定工作量對(AB)和給定配置的結果必須一起處理(諧波加速公式的分母中的前兩個性能度量來自工作量A,而其他兩個來自工作量B)
- 對於每個工作負載對和配置,我需要使用來自配置庫(示例中的cfg 1)的值來「規範化」性能值
我真的不知道如何用一些R函數來表示,例如aggregate
或ddply
(如果有可能的話)。
有誰知道這是如何解決的?
編輯:我不知道如何使用1..8作爲perf
可能會導致一些混淆。爲了簡單起見,我這樣做了,但這些值不需要是那些值(例如,想象如下初始化它們:dframe$perf <- runif(8)
)。詹姆斯和扎克的答案都理解我的問題的一部分是錯誤的,所以我認爲最好在問題中澄清這一點。無論如何,我全身都答覆處理情況進行配置1的性能不是(1,2)
我編輯以它推廣到的情況下的問題,其中對於配置1的表現並不'(1,2)'。如果你認爲有更好的方法去做,可以隨意改變它。無論如何,感謝您的答案,因爲它真的指出我如何解決問題的正確方向:) – betabandido