GPU BFS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдЕрдореВрд░реНрдд


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХ рдПрдХреНрд╕реАрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ BFS рдПрд▓реНрдЧреЛрд░рд┐рдердо - рдЪреМрдбрд╝рд╛рдИ рдЦреЛрдЬ рдХреЛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХреИрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдЦ рдкрд░рд┐рдгрд╛рдореА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЧрдгрдирд╛ рдПрдХрд▓ GPU GTX рдЯрд╛рдЗрдЯрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗрдкрд▓рд░ рдкрд░ рдХреА рдЧрдИ рдереАред

рдкрд░рд┐рдЪрдп


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддреНрд╡рд░рдХ (рдЬреАрдкреАрдпреВ) рдЧреИрд░-рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛ рд░рд╣реЗ рд╣реИрдВред рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрдирдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЙрдЪреНрдЪ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдФрд░ рдХрдо рд▓рд╛рдЧрдд рдХреЗ рдХрд╛рд░рдг рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, GPU рдкрд░, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЧреНрд░рд┐рдб рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдорд╛рдирддрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрдбрд╝реА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЧреИрд░-рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рд╕рд┐рдВрдЧрд▓ рд╢реЙрд░реНрдЯреЗрд╕реНрдЯ рд╕реЛрд░реНрд╕ рдкрд╛рде рдкреНрд░реЙрдмреНрд▓рдо (SSSP) - рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕реЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕рднреА рднрд╛рд░рд┐рдд рдЧреНрд░рд╛рдл рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдпред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛ред рдЧреИрд░-рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЧреНрд░рд┐рдбреЛрдВ рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдмреНрд░реЗрдбрде рдлрд░реНрд╕реНрдЯ рд╕рд░реНрдЪ (рдмреАрдПрдлрдПрд╕) рдХрд╛рд░реНрдп - рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдПрдХ рдЪреМрдбрд╝рд╛рдИ-рдкрд╣рд▓реА рдЦреЛрдЬред рдпрд╣ рдХрд╛рд░реНрдп рдХрдИ рдЧреНрд░рд╛рдл рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдореБрдЦреНрдп рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, BFS рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдл 500 рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдмреАрдПрдлрдПрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдПрд╕рдПрд╕рдПрд╕рдкреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдирд╡реАрдбрд┐рдпрд╛ рдЬреАрдкреАрдпреВ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рддрд╛рдирд╛, рдХреНрдпреВрдбрд╛ рдмреНрд▓реЙрдХ, рдПрд╕рдПрдордПрдХреНрд╕ рдФрд░ рдХреНрдпреВрдбрд╛ рд╕реЗ рдЬреБрдбрд╝реА рдЕрдиреНрдп рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдкрд╛рдардХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред

рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рд╛рд░реВрдк


рдЬреИрд╕рд╛ рдХрд┐ SSSP рдХрд╛рд░реНрдп рдореЗрдВ, рд╣рдо рдПрдХ рд╣реА SMX рдкрд░ рд▓реЛрдб рдмрдврд╝рд╛рдиреЗ рдФрд░ GPU рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдмреАрдПрдлрдПрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЧреНрд░рд╛рдл рд╡реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреВрд░реА рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрддрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рд╢реАрд░реНрд╖ рд╕реНрдерд┐рдд рд╣реИ:

рдЫрд╡рд┐

рдЯреЗрд╕реНрдЯ рд░рди рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ 32 рдХреА рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдФрд╕рдд рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде RMAT рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╕реНрддрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 10. рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░реНрдЯ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрддрд░реЛрдВ рдХреА рд╕рд░рдгреА рджреВрд░реА рдХреЗ рд╕рд░рдгреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 8 рдЧреБрдирд╛ рдХрдо рдЬрдЧрд╣ рдШреЗрд░реЗрдЧреА, рдЬреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрдкрд▓рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдХреИрд╢ рдХрд╛ рдЖрдХрд╛рд░ рдХреЗрд╡рд▓ 1.5 рдПрдордмреА рд╣реИред

рд╕реАрдкреАрдпреВ рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╕реАрдкреАрдпреВ рдкрд░, рдЪреМрдбрд╝рд╛рдИ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рджреЗрд╢реА рд╕рдВрд╕реНрдХрд░рдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН, рдЪреЛрдЯрд┐рдпреЛрдВ рдХреА рдХрддрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрднреА рддрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдкреАрдпреВ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

queue<vertex_id_t> q; bool *used = new bool[G->n]; for (unsigned i = 0; i < G->n; ++i) used[i] = false; used[root] = true; q.push(root); dist[root] = 0; while (!q.empty()) { vertex_id_t nextV = q.front(); q.pop(); for (unsigned k = G->rowsIndices[nextV]; k < G->rowsIndices[nextV + 1]; ++k) { if (used[G->endV[k]] == false) { used[G->endV[k]] = true; q.push(G->endV[k]); dist[G->endV[k]] = dist[nextV] + 1; } } } 

рдпрд╣ рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░, рд╕рдВрднрд╡рддрдГ, рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ GPU рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реАрдкреАрдпреВ рдкрд░ рдПрдХ рдЗрд╖реНрдЯрддрдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╕реАрдкреАрдпреВ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЙрд╕ рд╕рдордп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрдИ рдЗрд╖реНрдЯрддрдо рд╕реАрдкреАрдпреВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ рдФрд░ рд╡реЗ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИрдВред рдмреАрдПрдлрдПрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рд╡рд┐рдЪрд╛рд░ рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИрдВред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ GPU рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕реА рдлреЛрд░реНрдб-рдмреЗрд▓рдореИрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛ рдФрд░ рдорд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрд╕рдПрд╕рдПрд╕рдкреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдореВрд▓ рдерд╛ред BFS рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 if(k < maxV) { unsigned en = endV[k]; unsigned st = startV[k]; if(levels[st] == iter) { if(levels[en] > iter) { levels_NR[en] = iter + 1; modif[0] = iter; } } else if(levels[en] == iter) { if(levels[st] > iter) { levels_NR[st] = iter + 1; modif[0] = iter; } } } 

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рд╕реНрддрд░ рд╕рд░рдгреА рдХреЛ рд╢реБрд░реВ рдореЗрдВ рдЪрдпрдирд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдорд╛рди (рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП 255) рд╕реЗ рднрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрд░реНрдиреЗрд▓ - рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдЯрд╛рд░реНрдЯ рдпрд╛ рдПрдВрдб рд╡рд░реНрдЯреЗрдХреНрд╕ рд╡рд░реНрддрдорд╛рди рдЕрднрд┐рднрд╛рд╡рдХ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЪрд╛рд╣реЗ рд╡рд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реНрддрд░ рдХрд╛ рд╣реЛред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЗрд╕ рд╢реАрд░реНрд╖ рдХреЛ "рд╢рд╛рдорд┐рд▓" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рдк рдХреЗ рд╡рд┐рдкрд░реАрдд рд╢реАрд░реНрд╖ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред SSSP рдХреЗ рд░реВрдк рдореЗрдВ, рдореЛрдбрд┐рдлрд╝ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ рдЧреНрд░рд╛рдл рдХреЛ рдЪрд┐рдиреНрд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА SSSP рдХрд╛рд░реНрдп рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЕрдиреБрдХреВрд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рд╕реНрддрд░реЛрдВ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП const __restrict рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдорд╛рди рдореЗрдореЛрд░реА рд╕реНрдерд╛рди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдЕрдиреНрдп level_NR рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХреИрд╢ рдореЗрдВ рдмреЗрд╣рддрд░ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд╕рд░реЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред BFS рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП, рдЗрд╖реНрдЯрддрдо рд▓рд╛рдЗрди рдХреИрд╢ рдХреА рд▓рдВрдмрд╛рдИ 1024KB рд╣реИ, рдпрд╛ рд╕реНрддрд░ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ (1024 * 1024) рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рдЧрднрдЧ 1mln рд╣реИред

рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЧреИрд░-рдЙрдиреНрдореБрдЦ рдЖрд░рдПрдордПрдЯреА рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЙрдбрд▓ рдХрд░рддреЗ рд╣реИрдВред рд░реЗрдЦрд╛рдВрдХрди рдХреА рдФрд╕рдд рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА 32 рд╣реИ, рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдЙрди рд░реЗрдЦрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ 2 ^ рдПрдирд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛рдЪрд╛рдк рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдордмреА рдореЗрдВ рд╕реНрддрд░ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░рд░рд┐рдм рд╕рд░рдгреА рдЖрдХрд╛рд░ рдПрдордмреА
1416 384524288> 0.1252
15327681048576> 0.1254
16655362 097 152> 0.1258
17131 0724 194 3040,12516
18262 1448 388 6080,25032
1952428816 777 2160.564
20104857633 554 4321128
212 097 152ремред резреж 108ремрек2256
224 194 304134 217 7284512
238 388 608268 435 45681024
2416 777 216536 870 912162048
рд╕реНрддрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЪрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг, 2 20 рдХреЗ рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП, рд╕реНрддрд░ рд╕рд░рдгреА рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рдПрдордмреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ рдПрд╕рдПрд╕рдПрд╕рдкреА рдХрд╛рд░реНрдп рдореЗрдВ рдПрдХ рд╣реА рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП 8 рдПрдордмреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред NVidia GTX Titan GPU рдкрд░ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреА рдЧрдИ, рдЬрд┐рд╕рдореЗрдВ 14 SMX рдФрд░ 2688 CUDA рдХреЛрд░ рд╣реИрдВ рдФрд░ рддреАрд╕рд░реА рдкреАрдврд╝реА рдХреЗ Intel Core i7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ 3.4GHz рдФрд░ 8MB рдХреИрд╢ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╣реИред рд╕реАрдкреАрдпреВ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ-рдкрд╣рд▓реЗ рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдПрдХ рджреЗрд╢реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реАрдкреАрдпреВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдордп рдХреЗ рдмрдЬрд╛рдп, рдкреНрд░рджрд░реНрд╢рди рд╕реВрдЪрдХ рд╕рдордп рдХреА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕рдВрд╕рд╛рдзрд┐рдд рдЖрд░реНрдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░рд╛рдл рдореЗрдВ рдЖрд░реНрдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╕рдордп рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд╕рддрди 32 рдЕрдВрдХ рд▓рд┐рдП рдЧрдПред рдЕрдзрд┐рдХрддрдо рдФрд░ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рднреА рдХреА рдЧрдИ рдереАред рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП, 13 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЗрдВрдЯреЗрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ NVCC CUDA 5.5 рдХреЗ рд╕рд╛рде рдЭрдВрдбреЗ -O3 тАУarch = sm_35 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

GPU рдФрд░ CPU рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЧреНрд░рд╛рдл рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рдЫрд╡рд┐

рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рдирд┐рдореНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди рдШрдЯрддрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо (1) - (2) рдФрд░ (3) - (4) рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ 2 20 рддрдХ рд╡рд░реНрдЯрд┐рдХрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рд╕реНрддрд░ рд╕рд░рдгреА рдХреЛ L2 рдХреИрд╢ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рджрдо (1) рдФрд░ (2) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ (3) рдФрд░ (4) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдирд╛рд╡рдЯ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрд░реНрдХреНрд╕ рдХрд╛ рдХреНрд░рдордЪрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рд╕реНрддрд░ рд╕рд░рдгреА L2 рдХреИрд╢ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрд░рдордЪрдп рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ const __restrict рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрддрд░ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рдХреЗ рдХрд╛рд░рдг рд╣реИред рдЬрдм __restirict рд╡рд┐рдХрд▓реНрдк рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдПрдХ рд╕рдорд╛рди рддрд╕реНрд╡реАрд░ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИред

рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдбрд┐рдЧреНрд░реА 15-16-17 рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдЧреИрд░-рдЪрд┐рдХрдиреА рдЧреНрд░рд╛рдл рдПрдХ рдФрд░ рдЫреЛрдЯреЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ - рдПрдХ рдЪрд╛рдк рдХреЗ рджреЛ рдХреЛрдиреЗ рдХреА рдкреИрдХрд┐рдВрдЧ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЕрдВрддрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдореЗрдВред рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрддрдо рд╢реАрд░реНрд╖ рд╕рдВрдЦреНрдпрд╛ 16 рдмрд┐рдЯреНрд╕ рд╣реИ, рдФрд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int 32 рдмрд┐рдЯреНрд╕ рд╣реИ, рдЖрдк рдмрдврд╝рдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int рдореЗрдВ рдкреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ GPU рдореЗрдореЛрд░реА рд╕реЗ рдЖрдзрд╛ рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдирддреАрдЬрддрди, 3.6 GTEPS рдХрд╛ рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд▓рдЧрднрдЧ рдЪреЛрдЯреА рдХрд╛ рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди рд░реЗрдЦрд╛рдВрдХрди рдкрд░ 2 16 - 2 23 рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдПрдХ рдЧреНрд░рд╛рдл рдкрд░ 2 19 - 4,2 GTEPS рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕реАрдкреАрдпреВ рдкрд░ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд╡рд░рдг рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛:

рдЫрд╡рд┐

рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡реГрддреНрддрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ - рддреНрд╡рд░рдг рдореЗрдВ рдПрдХ рдХреНрд░рдорд┐рдХ рд╡реГрджреНрдзрд┐ред рдпрд╣ рдЕрдХреНрд╖рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕реАрдкреАрдпреВ рдХреИрд╢ рдХреЗ рд╕реАрдорд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реНрдиреЗрд▓ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ GPU рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рддрдирд╛ рдкреНрд░рднрд╛рд╡реА рд╣реИред рдпрд╣ рдЦрдВрдб рдХреЗрд╡рд▓ рдмреНрдпрд╛рдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдкрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рддреБрд▓рдирд╛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджреА рдЧрдИ рдЪреАрдЬреЛрдВ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдЗрдП рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрди рд╕рднреА рдмрд╛рддреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдПрдирд╡реАрд╡реАрдкреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рджреЛ рдЧреНрд░рд╛рдлреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ - 2 19 рдФрд░ 2 22 ред рдореИрдВрдиреЗ рдРрд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдЪреБрдиреЗ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓рд╛ рдПрд▓ 2 рдХреИрд╢ рдореЗрдВ рд╕реНрддрд░реЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рдЦрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рд╕реНрдХреЗрд▓рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧрдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдордПрд╕ рдореЗрдВ рдХреБрд▓ рдХрд░реНрдиреЗрд▓ рдЧрдгрдирд╛ рд╕рдордпрдПрдордПрд╕ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕рдордп
реи рез реп7рдирд╣реАрдВ12451210.97
реи реиреи8рдирд╣реАрдВ1241.186.66

рд╣рдордиреЗ рдЧрдгрдирд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрдд рдХреЗ рдмрд╛рдж рд╕реАрдкреАрдпреВ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП GPU рдкрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреВрд░реЗ рдЦрд╛рддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрднрдЧ рджреЛ рдмрд╛рд░ рд▓реЗрддреА рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЧрд┐рдирддреА реи рез реп

рдпрд╛рддреНрд░рд╛рдПрдордПрд╕ рдореЗрдВ рд╕рдордпрдЬреАрдПрд▓ рдкреНрд░рдпрд╛рд╕,%рдЬреАрдПрд╕ рдкреНрд░рдпрд╛рд╕,%рд╣рдо рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ,%рдПрдирдкреА рд╣рдо рдкреНрд░рдпрд╛рд╕,%рдЕрдзрд┐рднреЛрдЧ,%L2 рдкрдврд╝реЗрдВ, GB / sL2 рд▓рд┐рдЦреЗрдВ, GB / sрдЧреНрд▓реЛрдмрд▓ рд░реАрдб, рдЬреАрдмреА / рдПрд╕рдЧреНрд▓реЛрдмрд▓ рд░рд╛рдЗрдЯ, рдЬреАрдмреА / рдПрд╕
10.5771001010094.689.35510.00021100.0002
20.5721008.199.994.589.25510.09861100.0498
30.5810011.993.588.588.1545141096
41,06210024.385.177.778.2289715851
50.5761009.591.186.888.85491.371100.5576
60.5761007.899.694.289.25510.00171100.0010
70.572100010094.689.35510.0001100.000

рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ:

рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ 3 рдФрд░ 4 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, 4 рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, L2 рдмреИрдВрдбрд╡рд┐рдбреНрде рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ GPU рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХрдореА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЧреНрд░рд╛рдл рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреА рдкреВрд░реНрдгрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрд╛рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рджрдХреНрд╖рддрд╛ 93-100% рдФрд░ рд╕рдмрд╕реЗ "рд▓реЛрдб" рдЪрд▓рдирд╛ рдкрд░ 85% рдХреЗ рдмреАрдЪ рд╣реИред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ 2 22 рдХреЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕реНрддрд░ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ GPU рдХреЗ L2 рдХреИрд╢ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЧрд┐рдирддреА реиреи

рдпрд╛рддреНрд░рд╛рдПрдордПрд╕ рдореЗрдВ рд╕рдордпрдЬреАрдПрд▓ рдкреНрд░рдпрд╛рд╕,%рдЬреАрдПрд╕ рдкреНрд░рдпрд╛рд╕,%рд╣рдо рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ,%рдПрдирдкреА рд╣рдо рдкреНрд░рдпрд╛рд╕,%рдЕрдзрд┐рднреЛрдЧ,%L2 рдкрдврд╝реЗрдВ, GB / sL2 рд▓рд┐рдЦреЗрдВ, GB / sрдЧреНрд▓реЛрдмрд▓ рд░реАрдб, рдЬреАрдмреА / рдПрд╕рдЧреНрд▓реЛрдмрд▓ рд░рд╛рдЗрдЯ, рдЬреАрдмреА / рдПрд╕
14.6610010.410094.689.15560.00011130.00001
24.6010011.810094.689.15560.0014113.20.0011
34.6110011.299.894.489.15550.55471170.3750
46.40510017.883.779.182.2399468128
5701610015.883.674.179.8364347419
64.621007.990.285.589.15550.09671170.0469
74.601007.810094.6895560.00021130.0001
84.60100010094.689.15560.0001130.000

рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдЧреНрд░рд╛рдл рдкрд░, рд▓рдЧрднрдЧ рд╕рдорд╛рди рддрд╕реНрд╡реАрд░ 2 19 рдХреЛ рджреЗрдЦреА рдЧрдИ рд╣реИред рдЪреЛрдЯреА 4-5 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдЧрд┐рд░рддреА рд╣реИред рдПрдирд╡реАрд╡реАрдкреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 560 рдЬреАрдмреА / рдПрд╕ рдПрд▓ 2 рдХреИрд╢ рдХрд╛ рдереНрд░реВрдкреБрдЯ рдЙрдЪреНрдЪ рд╣реИ (рдирд┐рдореНрди, рдордзреНрдпрдо, рдЙрдЪреНрдЪ, рдЕрдзрд┐рдХрддрдо) рд╣реИ, рдФрд░ 117 рдЬреАрдмреА / рдПрд╕ рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдореЛрд░реА рдХреНрд╖рдорддрд╛ рдФрд╕рдд рд╣реИ (рдХрдо, рдордзреНрдпрдо, рдЙрдЪреНрдЪ, рдЕрдзрд┐рдХрддрдо) рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЪреМрдбрд╝рд╛рдИ-рдкреНрд░рдердо рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЖрд░рдПрдордПрдЯреА рдЧреНрд░рд╛рдлрд╝ рдкрд░ 32 рдбрд┐рдЧреНрд░реА рдХреЗ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдФрд╕рдд рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред 4.2 GTEPS рдХрд╛ рдкреАрдХ рдкреНрд░рджрд░реНрд╢рди рдФрд░ 3.6 GTEPS рдХрд╛ рдФрд╕рдд рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рди рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдмрд▓реНрдХрд┐ рдКрд░реНрдЬрд╛ рджрдХреНрд╖рддрд╛ рднреА рд╣реИред рдЧреНрд░рд╛рдл 500 рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдКрд░реНрдЬрд╛ рджрдХреНрд╖рддрд╛ рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЧреНрд░реАрди рдЧреНрд░рд╛рдл 500 рд░реЗрдЯрд┐рдВрдЧ рд╣реИред BlueGene / Q, рдкрд╛рд╡рд░ BQC 16C 1.60 GHz 1048576 рдХреЛрд░ рдХреЗ рд╕рд╛рде рдФрд░ 65536 рдиреЛрдбреНрд╕ 15363 GTEPS рдХреЗ рд╕рд╛рде, рдорд╛рд░реНрдЪ 2014 рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдл 500 рдкреНрд░рджрд░реНрд╢рди рд░реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдкрд╣рд▓рд╛ рд╕реНрдерд╛рдиред рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреА рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд 340kW (рд╢реАрд░реНрд╖ 500 рд░реЗрдЯрд┐рдВрдЧ рд╕реЗ рд▓реА рдЧрдИ) рд╣реИред BlueGene / Q рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд GTEPS / kW рдкрд░рд┐рдгрд╛рдо рдХреА рджрдХреНрд╖рддрд╛ 45 рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рд▓рдЧрднрдЧ 18 (200 W рдХреА рдХреБрд▓ рд╢рдХреНрддрд┐ рдФрд░ 3.6 GTEPS рдХреЗ рдФрд╕рдд рдкреНрд░рджрд░реНрд╢рди рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ 4-рдХреЛрд░ CPU рдФрд░ рдкреАрдХ рд▓реЛрдб рдХрд╛рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред GPU рдкрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЧреНрд░рд╛рдл 500 рдХреА рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдкреНрд░рдгрд╛рд▓реА Xeon E5-2650 v2, GeForce GTX TITAN рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рдл 2 25 рдкрд░ 17 GTEPS рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрд┐рд╕ рдЧреНрд░рд╛рдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреА рдЧрдИ рд╣реИред рдорд╛рд░реНрдЪ 2014 рддрдХ, рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ 58 рдкрджреЛрдВ рдкрд░ рд╣реИред

Source: https://habr.com/ru/post/In214951/


All Articles