私は、データ型floatのCPE(クリティカルパスによって決定される)の下限を計算する方法を見つけました。しかし、私は数字がどこから来たのか分からず、同様の境界を計算しようとする前にいくつかの明確化が必要です。関数のCPEに基づいて、下限はどのように計算されますか?
これは、私がaccrossに来たものである: (4+3)/3 = 2.33
私はそれが原因でCPE値を3で割っていると仮定し、私は(4 + 3)がどこから来るかへと混乱しています。
この関数の整数および浮動小数点データのCPEは3.00です。
void inner4(vec_ptr u, vec_ptr v, data t *dest) {
long i;
long length = vec_length(u);
data_t *udata = get_vec_start(u);
data_t *udata = get_vec_start(v);
data_t sum = (data_t) 0;
for (i = 0; i < length; i++){
sum = sum + udata[i] * vdata[i]'
}
*dest = sum;
}
。リンクを提供しますか? – ryyker
要素あたりの@ryykerサイクルhttps://en.wikipedia.org/wiki/Cycles_per_instruction – Jaden
@Pauline - リンクありがとうございます。私は読みました。 floatの下限CPE(またはCPI)を表す '(4 + 3)/ 3 = 2.33'は、比率がおそらくあなたが提供した例に示されたものと同様に導かれれば単純化されているようです。特に例2では、 'float'型のものですが、あなたの投稿で参照しているユニットよりもprocessor _instruction mix_と_clock cycle count_が異なっています。 – ryyker