{"id":210286,"date":"2014-01-25T20:41:02","date_gmt":"2014-01-25T16:41:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=210286"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=210286","title":{"rendered":"<span class=\"post_title\">\u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e-\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 GPU<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u0412 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438 \u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u043b \u043d\u0430 \u043d\u043e\u0432\u0443\u044e, \u0442\u043e\u0433\u0434\u0430, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e CUDA. \u0412 \u0440\u0443\u043a\u0430\u0445 \u0431\u044b\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043f\u043e \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c GTX8800, \u0434\u0430 \u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0431\u044b\u043b\u0438.<br \/>  \u041a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 GPU, \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0431\u0430\u043d\u043a\u043e\u0432 \u0438 \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 CUDA<a href=\"http:\/\/habrahabr.ru\/post\/56514\/\">[1]<\/a>. \u041a\u0430\u0440\u0442\u0430 GTX8800, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0431\u044b\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u044b\u043b\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 CUDA, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u0447\u0435\u0442\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0431\u0430\u043d\u043a\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u0440\u0430\u0437\u044b. \u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434. <br \/>  \u0412 \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u0435\u0448, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c \u0438 \u0442.\u0434.<br \/>  \u0412 \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e-\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f compute capability = 1.0, \u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. <br \/>  \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0437\u0430 \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0432 \u043f\u0440\u043e\u0447\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u043d\u0430.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/b0f\/c4e\/9bc\/b0fc4e9bc6f2f4e8bd2388bd6c2363db.png\"\/><br \/>   <a name=\"habracut\"><\/a><\/p>\n<p>  <b><\/p>\n<h1>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438<\/h1>\n<p><\/b><br \/>  \u0421\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043c\u043e\u0433, \u043d\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b. \u0418\u0442\u0430\u043a, \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0434\u0440\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0441\u0443\u043c\u043c\u044b \u0448\u0443\u043c\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u0444\u043e\u043d\u0430 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/7b0\/603\/993\/7b06039938f6772233894c47cb688bf0.png\"\/><br \/>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043a\u0430\u0434\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0435\u043b\u0438\u0442\u044c \u0432\u043d\u043e\u0432\u044c \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u043a\u0430\u0434\u0440 \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u043d \u043d\u0430 \u044d\u0442\u043e\u043c \u043a\u0430\u0434\u0440\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0446\u0435\u043d\u043a\u0443, \u043f\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043a\u0430\u0434\u0440\u0430\u0445. \u041f\u0443\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043a\u0430\u0434\u0440\u043e\u0432 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 N, \u0442\u043e\u0433\u0434\u0430 \u043e\u0446\u0435\u043d\u043a\u0443 \u0444\u043e\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0441\u0443\u043c\u043c\u0443 \u043a\u0430\u0434\u0440\u043e\u0432 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u0435\u0441\u0430\u043c\u0438.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/d30\/10d\/cd1\/d3010dcd1c49dab890ffb7d8cf111978.png\"\/><br \/>  \u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0434\u0440\u0430 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/215\/691\/a60\/215691a60b3dfef6c7daa1c45c291269.png\"\/><br \/>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434:<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/2a0\/560\/3cf\/2a05603cfd82f1126723cbb1a8856181.png\"\/><br \/>  \u0412\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/5c2\/cfa\/ccf\/5c2cfaccfec357abb4c12b18bac6d993.png\"\/><br \/>  \u0430 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434:<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/377\/7cd\/d41\/3777cdd418f83fd224e7b403953ee123.png\"\/><br \/>  \u0433\u0434\u0435 k,l- \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0442 1 \u0434\u043e N.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0434\u0432\u0438\u0433\u0430 \u043a\u0430\u0434\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/21d\/cb7\/740\/21dcb774022a65ca1671394c317bf02b.png\"\/> \u0432 \u0432\u0438\u0434\u0435 \u044f\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0434\u0432\u0438\u0433\u0430 <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/a30\/219\/d17\/a30219d17919f9953107a49b7ae75079.png\"\/> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0438 \u0432\u044b\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0417\u0434\u0435\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0443\u043b, \u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/21d\/cb7\/740\/21dcb774022a65ca1671394c317bf02b.png\"\/> \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0441\u0434\u0432\u0438\u0433\u043e\u0432.<br \/>  \u0421\u0434\u0432\u0438\u0433\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/74e\/b41\/8fe\/74eb418fe1da0dc5d3fe86d46e084d45.png\"\/> \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c:<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/e23\/b08\/d4d\/e23b08d4d237229626759d2e6ae6e6b3.png\"\/><br \/>  \u0417\u043d\u0430\u044f \u0441\u0434\u0432\u0438\u0433\u0438 \u043a\u0430\u0434\u0440\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 a(t) \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/9c5\/220\/d5d\/9c5220d5d2461670f3589cad5313e7dd.png\"\/><br \/>  \u0413\u0434\u0435 \u03b1- \u0432\u0435\u043a\u0442\u043e\u0440 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 n, \u03b3 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b\u0430\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, E \u2014 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/84a\/7a8\/5e5\/84a7a85e5dccd2d0bd98032582838850.png\"\/><\/p>\n<p>  <b><\/p>\n<h1>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 GPU<\/h1>\n<p><\/b><br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438. \u041d\u0430 GPU \u0432\u044b\u0433\u043e\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u043a\u0430\u0434\u0440\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0441\u0434\u0432\u0438\u0433\u0430\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<br \/>  \u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043f\u0438\u0441\u0430\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e, \u043e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0438 \u043f\u0443\u0442\u0438 \u0438\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. <br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043a\u0438\u043d\u0443\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0434\u0440\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c GPU \u0438 \u043f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c GPU.   <\/p>\n<pre><code class=\"cpp\">float **h_array_list, **d_array_list;  h_array_list = ( float** )malloc( num_arrays * sizeof( float* )); cudaMalloc((void**)&d_array_list, num_arrays * sizeof( float * )); \t for ( int i = 0; i &lt; num_arrays; i++ ) \tcudaMalloc((void**)&h_array_list[i], data_size); \t cudaMemcpy( d_array_list, h_array_list, num_arrays * sizeof(float*), cudaMemcpyHostToDevice ); <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u0415\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0437 \u043a\u0430\u0434\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c  <\/p>\n<pre><code class=\"cpp\">int bx = blockIdx.x;\t\t int by = blockIdx.y;  int tx = threadIdx.x;\t\t int ty = threadIdx.y; int aBegin = nx * BLOCK_SIZE * by + BLOCK_SIZE * bx;  float a = inFrame[ j ][ aBegin + nx * ty + tx] <\/code><\/pre>\n<p>  \u0442\u043e \u0432 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 compute capability \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u043b\u0438\u0441\u044c.<\/p>\n<p>  \u042d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0435\u0448 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043a\u0430\u0434\u0440\u044b \u043e\u0441\u0435\u0434\u0430\u044e\u0442 \u0432 \u043d\u0435\u043c \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f. \u0414\u043b\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c (\u043d\u0430 \u0447\u0442\u043e \u0442\u043e\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f) \u0438\u043b\u0438 \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">float **h_array_list, **d_array_list;  h_array_list = ( float** )malloc( 16 * num_arrays * sizeof( float* ) ); cudaMalloc((void**)&d_array_list, 16 * num_arrays * sizeof(float *)); \t for ( int i = 0; i &lt; num_arrays; i++ ) { \tcudaMalloc((void**)&h_array_list[i*16], data_size); \t\t \tfor( int j = 1; j &lt; 16; j++ ) \t\th_array_list[ i*16 + j ] = h_array_list[ i*16 ]; } cudaMemcpy( d_array_list, h_array_list, 16*num_arrays * sizeof(float*), cudaMemcpyHostToDevice ); <\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d \u0438 \u043c\u044b \u043e\u0449\u0443\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. <br \/>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432 \u0434\u043b\u044f GPU \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: <\/p>\n<pre><code class=\"cpp\">__global__ void kernelWhite( float * out, float ** inFrame, float *at, int nx, int mem ) { \tint bx = blockIdx.x;\t\t \tint by = blockIdx.y;  \tint tx = threadIdx.x;\t \tint ty = threadIdx.y; \tint aBegin = nx * BLOCK_SIZE * by + BLOCK_SIZE * bx;  \t__shared__ float frame1 [BLOCK_SIZE][BLOCK_SIZE]; \t__shared__ float a [32];  \tint   i = ty * BLOCK_SIZE + tx;  \t\/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \tif( i &lt; mem ) \t\ta[ i ] = at[ i ];  \t__syncthreads ();  \tframe1 [ty][tx] = 0;  \t\/\/ \u0432 \u0446\u0438\u043a\u043b\u0435 \u0447\u0438\u0442\u0430\u0435\u043c \u043a\u0430\u0434\u0440\u044b \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043e\u0431\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u0434\u0440 \tfor( int j = 0; j &lt; mem; j++ ) \t{ \t\tframe1 [ty][tx] += a[ j ]*inFrame[ j*16 + tx ][ aBegin + nx * ty + tx]; \t}  \t\/\/ \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \tout [ aBegin + nx * ty + tx ] = inFrame[ mem*16 + tx  ][ aBegin + nx * ty + tx] - frame1 [ty][tx]; } <\/code><\/pre>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u0430, \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430\u0448 \u0432\u0435\u043a\u0442\u043e\u0440 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0443\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0438 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0446\u0438\u043a\u043b\u0435 \u043e\u0431\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0448 \u043a\u0430\u0434\u0440 \u0441 \u044d\u0442\u0438\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439, \u0447\u0442\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442 \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438.<br \/>  \u0414\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0443\u043c\u043c\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430<a href=\"http:\/\/steps3d.narod.ru\/tutorials\/cuda-2-tutorial.html\">[2]<\/a>. \u0412 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b rij, gij, hij \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c \u0441\u0443\u043c\u043c\u044b. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">__global__ void kernelShift ( float *inFrameR, float *inFrame, float *outData, int nx )<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">__global__ void kernelShift ( float *inFrameR, float *inFrame, float *outData, int nx ) { \tint bx = blockIdx.x;\t\t \tint by = blockIdx.y;  \tint tx = threadIdx.x;\t \tint ty = threadIdx.y; \tint aBegin = nx * BLOCK_SIZE * by + BLOCK_SIZE * bx;  \t\/\/ \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \t__shared__ float rij [BLOCK_SIZE*BLOCK_SIZE]; \t__shared__ float gij [BLOCK_SIZE*BLOCK_SIZE]; \t__shared__ float hij [BLOCK_SIZE*BLOCK_SIZE]; \t__shared__ float tmp [BLOCK_SIZE*BLOCK_SIZE]; \t__shared__ float p [BLOCK_SIZE*BLOCK_SIZE]; \t__shared__ float q [BLOCK_SIZE*BLOCK_SIZE];  \t__shared__ float frame1 [BLOCK_SIZE][BLOCK_SIZE];  \t\/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u0434\u0440\u0430 \u0432 shared memeory \tframe1 [ty][tx] = inFrameR [ aBegin + nx * ty + tx];  \t\/\/ \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \t__syncthreads (); \t \tint   i = ty * BLOCK_SIZE + tx;  \t\/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b gij, hij, rij \u0432 \u043f\u043e\u0434\u043c\u0430\u0442\u0440\u0438\u0446\u0435 14\u044514. \tif( tx &gt; 0 && &gt; 0 && tx &lt; BLOCK_SIZEm1 && ty &lt; BLOCK_SIZEm1 ) \t{ \t\tgij[ i ] = ( frame1[ty + 1][tx] - frame1[ty - 1][tx] )\/2.0; \t\thij[ i ] = ( frame1[ty][tx + 1] - frame1[ty][tx - 1] )\/2.0; \t\trij[ i ] = ( frame1[ty][tx] + frame1[ty][tx + 1] + frame1[ty][tx - 1] + frame1[ty + 1][tx] + frame1[ty - 1][tx] )\/5.0; \t} \telse \t{ \t\tgij[ i ] = 0; \t\thij[ i ] = 0; \t\trij[ i ] = 0; \t}  \t\/\/ \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \t__syncthreads ();  \t\/\/ \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u0434\u0440\u0430 \u0432 shared memeory \tframe1 [ty][tx] = inFrame [ aBegin + nx * ty + tx] - rij[i];          \t\/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 p, q \tp [i] = gij [i]*frame1 [ty][tx]; \tq [i] = hij [i]*frame1 [ty][tx]; \t\/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 u \ttmp [i] = hij [i]*hij [i]; \t\/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 v \trij[i] = hij [i]*gij [i]; \t\/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 w \thij [i] = gij [i]*gij [i];  __syncthreads ();  \tfor ( int s = BLOCK_SIZEhalfqrt; s &gt; 32; s &gt;&gt;= 1 ) \t{ \t\tif ( i &lt; s ) \t\t{ \t\t\tp [i] += p [i + s]; \t\t\tq [i] += q [i + s]; \t\t\ttmp [i] += tmp [i + s]; \t\t\trij [i] += rij [i + s]; \t\t\thij [i] += hij [i + s]; \t\t} \t\t\t \t\t__syncthreads (); \t} \t \tif ( i &lt; 32 )\t\t\t\t\t \t{         p [i] += p [i + 32];          p [i] += p [i + 16];          p [i] += p [i +  8];          p [i] += p [i +  4];          p [i] += p [i +  2];          p [i] += p [i +  1];  \t\t         q [i] += q [i + 32];         q [i] += q [i + 16];         q [i] += q [i +  8];         q [i] += q [i +  4];         q [i] += q [i +  2];         q [i] += q [i +  1];           tmp [i] += tmp [i + 32];         tmp [i] += tmp [i + 16];         tmp [i] += tmp [i +  8];         tmp [i] += tmp [i +  4];         tmp [i] += tmp [i +  2];         tmp [i] += tmp [i +  1];           rij [i] += rij [i + 32];         rij [i] += rij [i + 16];         rij [i] += rij [i +  8];         rij [i] += rij [i +  4];         rij [i] += rij [i +  2];         rij [i] += rij [i +  1];           hij [i] += hij [i + 32];        \thij [i] += hij [i + 16];          hij [i] += hij [i +  8];          hij [i] += hij [i +  4];          hij [i] += hij [i +  2];          hij [i] += hij [i +  1];      }  \tif ( i == 0 ) \t{ \t   \toutData [ by*gridDim.x + bx ] = p[0]; \t   \toutData [ by*gridDim.x + bx + gridDim.x*gridDim.y] = q[0]; \t   \toutData [ by*gridDim.x + bx + 2*gridDim.x*gridDim.y] = tmp [0]; \t   \toutData [ by*gridDim.x + bx + 3*gridDim.x*gridDim.y] = rij [0]; \t   \toutData [ by*gridDim.x + bx + 4*gridDim.x*gridDim.y] = hij [0]; \t} };  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0435\u0449\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u0422\u0430\u043a \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u043e \u0431\u043b\u043e\u043a\u043e\u0432 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441\u0434\u0432\u0438\u0433 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0434\u0432\u0438\u0433 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0430\u0434\u0440\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043a\u0430\u0434\u0440\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043e\u0434\u043d\u043e, \u0435\u0441\u043b\u0438 \u043a\u0430\u0434\u0440\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.  <\/p>\n<pre><code class=\"cpp\">\/\/ \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432. int numbCoeff = regInfo-&gt;nx \/ threads.x*regInfo-&gt;nx \/ threads.y;  cudaMemcpy( coeffhost, coeffdev, numbCoeff*5* sizeof ( float ), cudaMemcpyDeviceToHost );  float q = 0, p = 0; float u = 0, v = 0, w = 0; for( int i = 0; i &lt; numbCoeff; i++ ) { \tp += coeffhost[ i ]; \tq += coeffhost[ i + numbCoeff]; \tu += coeffhost[ i + 2*numbCoeff]; \tv += coeffhost[ i + 3*numbCoeff]; \tw += coeffhost[ i + 4*numbCoeff]; }  dx = ( q * w - p * v )\/( u * w - v * v ); dy = ( p * u - q * v )\/( u * w - v * v ); <\/code><\/pre>\n<p>  \u041a\u0430\u043a\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0438\u043d\u0443\u0441\u044b.<br \/>  1. \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435.<br \/>  2. \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 rij, gij, hij \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430.<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440\u0435 \u0438 \u043e\u0446\u0435\u043d\u0438\u043c, \u0445\u043e\u0440\u043e\u0448\u043e \u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b, \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br \/>  \u042f\u0434\u0440\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/85f\/4b3\/fa5\/85f4b3fa5770dc11180e438248b31a14.png\" alt=\"\u042f\u0434\u0440\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439.\"\/><br \/>  \u042f\u0434\u0440\u043e \u0434\u043b\u044f \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/26c\/ee0\/512\/26cee0512b38940b67c568a73b4b48dc.png\" alt=\"\u042f\u0434\u0440\u043e \u0434\u043b\u044f \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432.\"\/><\/p>\n<p>  <b><\/p>\n<h1>\u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f<\/h1>\n<p><\/b><br \/>  \u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u0430\u0440\u0430\u044f GTX8800 \u0431\u044b\u043b\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0438 \u0443\u0436\u0435 \u043a\u0443\u0434\u0430-\u0442\u043e \u0434\u0435\u043b\u0430\u0441\u044c, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u0434\u043b\u044f GTX Titan. <br \/>  \u0414\u043b\u044f \u043a\u0430\u0434\u0440\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 512\u0445512 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b. \u042f\u0434\u0440\u043e \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0441\u0434\u0432\u0438\u0433\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 60 \u043c\u043a\u0441. \u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f 130 \u043c\u043a\u0441. \u041f\u0440\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 20 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u0436\u0435 2.6 \u043c\u0441. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0434\u0440\u043e\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 156 \u043c\u043a\u0441. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u044d\u0442\u043e \u0435\u0449\u0435 50 \u043c\u043a\u0441. \u0412 \u0441\u0443\u043c\u043c\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 2,806 \u043c\u0441.<\/p>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 CPU \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 40 \u043c\u0441, \u043e\u0431\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0434\u0440\u0430 30 \u043c\u0441 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0435\u0449\u0435 50 \u043c\u043a\u0441. \u0412 \u0441\u0443\u043c\u043c\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 70 \u043c\u0441, \u0447\u0442\u043e \u0432 25 \u0440\u0430\u0437 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043d\u0430 GPU (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435).<\/p>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 \u0421\u0421 = 1.0. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>  \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">\/\/ \u0437\u0430\u043c\u0435\u043d\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a \u0441\u0434\u0432\u0438\u0433\u043e\u0432 if ( i == 0 ) \t{ \t\tatomicAdd( &outData[0], p[0] ); \t\tatomicAdd( &outData[1], q[0] ); \t\tatomicAdd( &outData[2], tmp[0] ); \t\tatomicAdd( &outData[3], rij[0] ); \t\tatomicAdd( &outData[4], hij[0] ); }  \/\/ \u043d\u0430 CPU \u0434\u043e\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b\t float p = coeffhost[ 0 ]; float q = coeffhost[ 1 ]; float u = coeffhost[ 2 ]; float v = coeffhost[ 3 ]; float w = coeffhost[ 4 ]; dx = ( q * w - p * v )\/( u * w - v * v ); dy = ( p * u - q * v )\/( u * w - v * v ); <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u044f\u0434\u0440\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, 66 \u043c\u043a\u0441.<\/p>\n<p>  \u041e\u0442 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0441\u0447\u0435\u0442\u0430 rij, gij, hij \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0430 \u044d\u0442\u043e \u0432 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0442\u0440\u0438 \u043a\u0430\u0434\u0440\u0430 \u0441 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438. \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435\u0445 \u0441\u0434\u0432\u0438\u0433\u043e\u0432, \u0441\u0434\u0435\u043b\u0430\u0432 \u0446\u0438\u043a\u043b \u043f\u043e \u043a\u0430\u0434\u0440\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u044f\u0434\u0440\u0430. <br \/>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0438 \u0442\u0430\u043a \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044f\u0434\u0440\u0430 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u044f\u0434\u0440\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0446\u0435\u043b\u043e\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e, \u0430 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043e 25 \u0440\u0430\u0437, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/38b\/0fe\/ead\/38b0feead327502a1feb5a1c2455d07d.png\"\/><\/p>\n<p>  \u041d\u0430\u0448\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 GPU \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u044d\u0442\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0412 \u0441\u0443\u043c\u043c\u0435 \u043d\u0430\u0431\u0435\u0433\u0430\u0435\u0442 11.5 \u043c\u0441 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0430\u0434\u0440\u043e\u0432. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u0432 6 \u0440\u0430\u0437 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e CPU. \u0423\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u044f\u0434\u0440\u0430 \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0432 \u0446\u0438\u043a\u043b\u0435:  <\/p>\n<pre><code class=\"cpp\">for( int j = 0; j &lt; regressInfo-&gt;memory - 1; j++ ) \t\tkernelShift&lt;&lt;&lt; SKblocks, SKthreads &gt;&gt;&gt; ( \u2026 ); <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. <br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/725\/a69\/258\/725a692580332ed1f7ec87c2231085ec.png\"\/><\/p>\n<p>  \u041a\u0443\u0434\u0430 \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043f\u0440\u0430\u0432\u0434\u0430?.. \u0422\u0435\u043f\u0435\u0440\u044c \u0447\u0430\u0441\u0442\u044c \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 1.40 \u043c\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 11.5 \u043c\u0441. \u0417\u0434\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u044f\u0434\u0440\u0430\u043c\u0438 \u0440\u0430\u0432\u043d\u044b\u0439 4 \u043c\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440. \u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044f\u0434\u0440\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445.   <\/p>\n<pre><code class=\"cpp\">\/\/ stream for( int it = 0; it &lt; 4; it++ ) \tcudaStreamCreate( &streamTX[it] ); \u2026\u2026 for( int j = 0; j &lt; regressInfo-&gt;memory - 1; j++ ) \tkernelShift&lt;&lt;&lt; SKblocks, SKthreads, 0, streamTX[j%4] &gt;&gt;&gt; (\u2026); <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0437\u0434\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 1.22 \u043c\u0441.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/d28\/802\/687\/d28802687f2c19871c6af6776230cd70.png\"\/><\/p>\n<p>  \u0410 \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0430 0.12 \u043c\u0441 \u0447\u0435\u043c 0.066*20 = 1.320. <br \/>   \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 84%.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/5df\/90c\/cb6\/5df90ccb62527f0655d4e9243e27272d.png\"\/><\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 1.22\u043c\u0441 + 50 \u043c\u043a\u0441 + 156 \u043c\u043a\u0441 = 1.426 \u043c\u0441, \u0430 \u044d\u0442\u043e \u0432 50 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043d\u0430 CPU.<br \/>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435, \u043d\u043e \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0449\u0438\u0439 \u043f\u0443\u0442\u044c, \u043d\u0435\u0434\u043e\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043b\u044c\u0437\u044f. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 GPU, \u043d\u043e \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 GPU. \u0427\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u044f\u0434\u0440\u0430, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043b\u0438\u044f\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043b\u0438\u0431\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 CPU.<\/p>\n<p>  <b><\/p>\n<h1>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438<\/h1>\n<p><\/b><br \/>  \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b \u0441\u043d\u0438\u043c\u043a\u0438 \u0437\u0432\u0435\u0437\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u0430, \u043a \u043d\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0434\u0432\u0438\u0436\u0443\u0449\u0438\u0439\u0441\u044f \u0442\u0443\u0441\u043a\u043b\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u0443\u043c. <br \/>  \u0414\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/e4f\/0ea\/945\/e4f0ea94548f532677029d21654cf6b2.png\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/f4e\/aae\/33e\/f4eaae33ec10fdbcdbd39962deba06c8.png\"\/><br \/>  \u0414\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/f44\/4b5\/aa9\/f444b5aa9f7b384481ce4b30c6bf2b17.png\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/d49\/aaa\/5a4\/d49aaa5a4dfaa54184e04ebb4d041d28.png\"\/><\/p>\n<p>  \u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0438 \u0434\u0430\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043a\u0430\u0434\u0440\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u043b\u0435\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0431\u044f. <br \/>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0443 \u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445.<\/p>\n<p>  1. <a href=\"http:\/\/habrahabr.ru\/post\/56514\/\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432 CUDA.<\/a><br \/>  2. <a href=\"http:\/\/steps3d.narod.ru\/tutorials\/cuda-2-tutorial.html\">\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u043d\u0430 CUDA.<\/a>    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/210286\/\"> http:\/\/habrahabr.ru\/post\/210286\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u0412 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438 \u044f \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u043b \u043d\u0430 \u043d\u043e\u0432\u0443\u044e, \u0442\u043e\u0433\u0434\u0430, \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e CUDA. \u0412 \u0440\u0443\u043a\u0430\u0445 \u0431\u044b\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043f\u043e \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c GTX8800, \u0434\u0430 \u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0431\u044b\u043b\u0438.<br \/>  \u041a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 GPU, \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0431\u0430\u043d\u043a\u043e\u0432 \u0438 \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 CUDA<a href=\"http:\/\/habrahabr.ru\/post\/56514\/\">[1]<\/a>. \u041a\u0430\u0440\u0442\u0430 GTX8800, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0431\u044b\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u044b\u043b\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 CUDA, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u0447\u0435\u0442\u043a\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0431\u0430\u043d\u043a\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u0440\u0430\u0437\u044b. \u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434. <br \/>  \u0412 \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u0435\u0448, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c \u0438 \u0442.\u0434.<br \/>  \u0412 \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e-\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f compute capability = 1.0, \u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. <br \/>  \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0437\u0430 \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0432 \u043f\u0440\u043e\u0447\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u043d\u0430.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/b0f\/c4e\/9bc\/b0fc4e9bc6f2f4e8bd2388bd6c2363db.png\"\/>   <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-210286","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/210286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=210286"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/210286\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=210286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=210286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=210286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}