рдЕрдореВрд░реНрдд
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХ рдПрдХреНрд╕реАрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ 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 ^ рдПрди | рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ | рдЪрд╛рдк рдХреА рд╕рдВрдЦреНрдпрд╛ | рдПрдордмреА рдореЗрдВ рд╕реНрддрд░ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ | рд░рд┐рдм рд╕рд░рдгреА рдЖрдХрд╛рд░ рдПрдордмреА |
14 | 16 384 | 524288 | > 0.125 | 2 |
15 | 32768 | 1048576 | > 0.125 | 4 |
16 | 65536 | 2 097 152 | > 0.125 | 8 |
17 | 131 072 | 4 194 304 | 0,125 | 16 |
18 | 262 144 | 8 388 608 | 0,250 | 32 |
19 | 524288 | 16 777 216 | 0.5 | 64 |
20 | 1048576 | 33 554 432 | 1 | 128 |
21 | 2 097 152 | ремред резреж 108ремрек | 2 | 256 |
22 | 4 194 304 | 134 217 728 | 4 | 512 |
23 | 8 388 608 | 268 435 456 | 8 | 1024 |
24 | 16 777 216 | 536 870 912 | 16 | 2048 |
рд╕реНрддрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЪрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг, 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)
- рдХреИрд╢ рдмрдВрдж - рдмреЗрд╣рддрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордЪрдп рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП рдмрд┐рдирд╛ GPU рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (2)
- рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд - рдмрдирд╛рд╡рдЯ рдХреИрд╢ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ GPU рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (3)
- рдХреИрд╢ рдФрд░& рдмрдВрдж рдХрд░реЗрдВ - рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдореВрд▓ GPU рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (4)
- рд╕реАрдкреАрдпреВ - рд╕реАрдкреАрдпреВ рдкрд░ рдмреБрдирд┐рдпрд╛рджреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо (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 | рдирд╣реАрдВ | 12 | 4512 | 10.97 |
реи реиреи | 8 | рдирд╣реАрдВ | 12 | 41.1 | 86.66 |
рд╣рдордиреЗ рдЧрдгрдирд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрдд рдХреЗ рдмрд╛рдж рд╕реАрдкреАрдпреВ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП GPU рдкрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреВрд░реЗ рдЦрд╛рддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрднрдЧ рджреЛ рдмрд╛рд░ рд▓реЗрддреА рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЧрд┐рдирддреА реи рез реп
рдпрд╛рддреНрд░рд╛ | рдПрдордПрд╕ рдореЗрдВ рд╕рдордп | рдЬреАрдПрд▓ рдкреНрд░рдпрд╛рд╕,% | рдЬреАрдПрд╕ рдкреНрд░рдпрд╛рд╕,% | рд╣рдо рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ,% | рдПрдирдкреА рд╣рдо рдкреНрд░рдпрд╛рд╕,% | рдЕрдзрд┐рднреЛрдЧ,% | L2 рдкрдврд╝реЗрдВ, GB / s | L2 рд▓рд┐рдЦреЗрдВ, GB / s | рдЧреНрд▓реЛрдмрд▓ рд░реАрдб, рдЬреАрдмреА / рдПрд╕ | рдЧреНрд▓реЛрдмрд▓ рд░рд╛рдЗрдЯ, рдЬреАрдмреА / рдПрд╕ |
1 | 0.577 | 100 | 10 | 100 | 94.6 | 89.3 | 551 | 0.0002 | 110 | 0.0002 |
2 | 0.572 | 100 | 8.1 | 99.9 | 94.5 | 89.2 | 551 | 0.0986 | 110 | 0.0498 |
3 | 0.58 | 100 | 11.9 | 93.5 | 88.5 | 88.1 | 545 | 14 | 109 | 6 |
4 | 1,062 | 100 | 24.3 | 85.1 | 77.7 | 78.2 | 289 | 71 | 58 | 51 |
5 | 0.576 | 100 | 9.5 | 91.1 | 86.8 | 88.8 | 549 | 1.37 | 110 | 0.5576 |
6 | 0.576 | 100 | 7.8 | 99.6 | 94.2 | 89.2 | 551 | 0.0017 | 110 | 0.0010 |
7 | 0.572 | 100 | 0 | 100 | 94.6 | 89.3 | 551 | 0.000 | 110 | 0.000 |
рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ:
- рдЬреАрдПрд▓ рдкреНрд░рдпрд╛рд╕ - рдЧреНрд▓реЛрдмрд▓ рд▓реЛрдб рджрдХреНрд╖рддрд╛
- рдЬреАрдПрд╕ рдкреНрд░рдпрд╛рд╕ - рдЧреНрд▓реЛрдмрд▓ рд╕реНрдЯреЛрд░ рджрдХреНрд╖рддрд╛
- рд╣рдо рдкреНрд░рдпрд╛рд╕ - рддрд╛рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рджрдХреНрд╖рддрд╛
- рдПрдирдкреА рд╣рдо рдкреНрд░рдпрд╛рд╕ - рдЧреИрд░-рдЕрдиреБрдорд╛рдирд┐рдд рддрд╛рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд╖рдорддрд╛
- рд╡реНрдпрд╡рд╕рд╛рдп - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╡реЙрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ / рдПрд╕рдПрдордПрдХреНрд╕ рдкрд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдпреБрджреНрдз
рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ 3 рдФрд░ 4 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, 4 рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, L2 рдмреИрдВрдбрд╡рд┐рдбреНрде рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ GPU рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдХрдореА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЧреНрд░рд╛рдл рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреА рдкреВрд░реНрдгрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрд╛рдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рджрдХреНрд╖рддрд╛ 93-100% рдФрд░ рд╕рдмрд╕реЗ "рд▓реЛрдб" рдЪрд▓рдирд╛ рдкрд░ 85% рдХреЗ рдмреАрдЪ рд╣реИред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ 2
22 рдХреЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕реНрддрд░ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ GPU рдХреЗ L2 рдХреИрд╢ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЧрд┐рдирддреА реиреи
рдпрд╛рддреНрд░рд╛ | рдПрдордПрд╕ рдореЗрдВ рд╕рдордп | рдЬреАрдПрд▓ рдкреНрд░рдпрд╛рд╕,% | рдЬреАрдПрд╕ рдкреНрд░рдпрд╛рд╕,% | рд╣рдо рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ,% | рдПрдирдкреА рд╣рдо рдкреНрд░рдпрд╛рд╕,% | рдЕрдзрд┐рднреЛрдЧ,% | L2 рдкрдврд╝реЗрдВ, GB / s | L2 рд▓рд┐рдЦреЗрдВ, GB / s | рдЧреНрд▓реЛрдмрд▓ рд░реАрдб, рдЬреАрдмреА / рдПрд╕ | рдЧреНрд▓реЛрдмрд▓ рд░рд╛рдЗрдЯ, рдЬреАрдмреА / рдПрд╕ |
1 | 4.66 | 100 | 10.4 | 100 | 94.6 | 89.1 | 556 | 0.0001 | 113 | 0.00001 |
2 | 4.60 | 100 | 11.8 | 100 | 94.6 | 89.1 | 556 | 0.0014 | 113.2 | 0.0011 |
3 | 4.61 | 100 | 11.2 | 99.8 | 94.4 | 89.1 | 555 | 0.5547 | 117 | 0.3750 |
4 | 6.405 | 100 | 17.8 | 83.7 | 79.1 | 82.2 | 399 | 46 | 81 | 28 |
5 | 7016 | 100 | 15.8 | 83.6 | 74.1 | 79.8 | 364 | 34 | 74 | 19 |
6 | 4.62 | 100 | 7.9 | 90.2 | 85.5 | 89.1 | 555 | 0.0967 | 117 | 0.0469 |
7 | 4.60 | 100 | 7.8 | 100 | 94.6 | 89 | 556 | 0.0002 | 113 | 0.0001 |
8 | 4.60 | 100 | 0 | 100 | 94.6 | 89.1 | 556 | 0.000 | 113 | 0.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 рдкрджреЛрдВ рдкрд░ рд╣реИред