第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C循環(huán)優(yōu)化對(duì)最終分配的幫助

C循環(huán)優(yōu)化對(duì)最終分配的幫助

C
慕田峪9158850 2019-07-17 18:31:17
C循環(huán)優(yōu)化對(duì)最終分配的幫助因此,在我的計(jì)算機(jī)系統(tǒng)類的最后一次作業(yè)中,我們需要優(yōu)化這些循環(huán),使其比原來的更快。在我們的Linux服務(wù)器上,基本等級(jí)是7秒以下,完整級(jí)別是5秒以下。這里的代碼大約有5.6秒。我想我可能需要在某種程度上用指針來讓它更快,但我不太確定。有人能給我一些建議或選擇嗎?非常感謝!QUICKEDIT:文件必須保持50行或更少,我忽略了指導(dǎo)員包含的那些注釋行。#include <stdio.h>#include <stdlib.h>// You are only allowed to make changes to this code as specified by the comments in it.// The code you submit must have these two values.#define N_TIMES     600000#define ARRAY_SIZE   10000int main(void){     double  *array = calloc(ARRAY_SIZE, sizeof(double));     double  sum = 0;     int     i;     // You can add variables between this comment ...     register double sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0, sum5 = 0, sum6 = 0, sum7 = 0, sum8 = 0, sum9 = 0;     register int j;     // ... and this one.     printf("CS201 - Asgmt 4 - \n");     for (i = 0; i < N_TIMES; i++)     {         // You can change anything between this comment ...         for (j = 0; j < ARRAY_SIZE; j += 10)         {             sum += array[j];             sum1 += array[j + 1];             sum2 += array[j + 2];             sum3 += array[j + 3];             sum4 += array[j + 4];             sum5 += array[j + 5];             sum6 += array[j + 6];             sum7 += array[j + 7];             sum8 += array[j + 8];             sum9 += array[j + 9];         }         // ... and this one. But your inner loop must do the same         // number of additions as this one does.     }                        // You can add some final code between this comment ...     sum += sum1 + sum2 + sum3 + sum4 + sum5 + sum6 + sum7 + sum8 + sum9;     // ... and this one.     return 0;}
查看完整描述

3 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

在此之前,請(qǐng)嘗試更改編譯器設(shè)置以生成更快的代碼。有一般的優(yōu)化,編譯器可能會(huì)進(jìn)行自動(dòng)矢量化。

你要做的就是嘗試幾種方法,并檢查什么是最快的。作為一個(gè)目標(biāo),嘗試達(dá)到一個(gè)周期每增加或更好。

每個(gè)循環(huán)的迭代次數(shù):同時(shí)加10次和??赡苁悄奶幚砥鳑]有足夠的寄存器,或者它有更多的寄存器。我會(huì)測(cè)量4,5,6,7,8,9,10,11,12,13,14.每個(gè)循環(huán)的總和。

和數(shù):有一個(gè)以上和意味著延遲不會(huì)咬你,只意味著吞吐量。但超過四六個(gè)可能沒有幫助。嘗試四個(gè)和,每個(gè)循環(huán)有4,8,12,16次迭代?;?和,6,12,18次迭代。

緩存:您正在運(yùn)行一個(gè)80,000字節(jié)的數(shù)組??赡懿恢筁1緩存。將數(shù)組分成2或4個(gè)部分。對(duì)兩個(gè)或四個(gè)子數(shù)組進(jìn)行外部循環(huán)迭代,下一個(gè)循環(huán)從0到N_倍-1,以及內(nèi)環(huán)加值。

然后您可以嘗試使用向量操作,或者多線程您的代碼,或者使用GPU來完成這項(xiàng)工作。

如果您被迫使用任何優(yōu)化,那么“注冊(cè)”關(guān)鍵字可能實(shí)際上是有效的。


查看完整回答
反對(duì) 回復(fù) 2019-07-17
  • 3 回答
  • 0 關(guān)注
  • 801 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)