{"id":488548,"date":"2026-07-25T16:31:46","date_gmt":"2026-07-25T16:31:46","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488548"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488548","title":{"rendered":"\u0412 Go 1.27 \u0437\u0430\u0432\u0435\u0437\u043b\u0438 SIMD. \u041d\u0430 Mac \u043e\u043d \u0434\u0430\u043b \u0440\u043e\u0432\u043d\u044b\u0435 4x, \u043d\u0430 Intel i9 \u0442\u043e 2x, \u0442\u043e 5x"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0414\u044f\u0434\u044f \u0425\u0430\u0448\u0438\u043c\u043e\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f. \u0420\u0435\u0447\u044c \u043f\u0440\u043e \u0435\u0433\u043e \u044d\u0441\u0441\u0435 <a href=\"https:\/\/mitchellh.com\/writing\/everyone-should-know-simd\" rel=\"noopener noreferrer nofollow\">\u00abEveryone Should Know SIMD\u00bb<\/a>: SIMD \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a; \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u0430\u043c \u043d\u0430 Zig, \u043d\u043e \u0441\u0443\u0442\u044c \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442. \u041c\u043e\u0439 \u044f\u0437\u044b\u043a &#8212; Go, \u0438 \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u043c <a href=\"https:\/\/habr.com\/ru\/articles\/995906\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u0437\u043e\u0440\u0435 Go 1.26<\/a> \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e \u043d\u043e\u0432\u044b\u0439 SIMD-\u043f\u0430\u043a\u0435\u0442 \u0433\u0440\u0443\u0441\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443: \u00ab\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 ARM64 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445\u00bb.<\/p>\n<p>\u0411\u0443\u0434\u0443\u0449\u0435\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u044f \u0436\u0434\u0430\u043b: \u0432 go1.27rc2 \u043f\u0430\u043a\u0435\u0442 <code>simd<\/code> \u0441\u0442\u0430\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c, \u0438 \u043e\u0434\u0438\u043d Go-\u043a\u043e\u0434 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 Neon \u043d\u0430 Apple Silicon \u0438 \u0432 AVX2 \u043d\u0430 Intel. \u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043e\u0431\u0435 \u043c\u0430\u0448\u0438\u043d\u044b: Mac \u043d\u0430 M3 Pro, \u0433\u0434\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044d\u0442\u0438\u0445 \u0431\u0435\u043d\u0447\u0435\u0439, \u0438 Linux-\u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043d\u0430 i9-14900KF. \u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435: \u043e\u0434\u0438\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a, \u0434\u0432\u0430 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0434\u0432\u0435 \u043f\u0430\u0447\u043a\u0438 \u0437\u0430\u043c\u0435\u0440\u043e\u0432. \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u043e\u0439; \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043e\u043d \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\" rel=\"noopener noreferrer nofollow\">dsbasko\/sandbox-simd<\/a>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb6\/318\/886\/eb63188866f367c00944b36849e78417.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/eb6\/318\/886\/eb63188866f367c00944b36849e78417.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb6\/318\/886\/eb63188866f367c00944b36849e78417.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>TL;DR<\/strong><\/p>\n<ul>\n<li>\n<p>\u0412 Go 1.27 \u043f\u0430\u043a\u0435\u0442 <code>simd<\/code> \u0441\u0442\u0430\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Go, \u043e\u0434\u0438\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043d\u0430 arm64 \u0438 amd64. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u043e\u043c <code>GOEXPERIMENT=simd<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. Mac (M3 Pro): Neon, 4 \u043f\u043e\u043b\u043e\u0441\u044b float32, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>FADD.S4<\/code>. i9-14900KF: AVX2, 8 \u043f\u043e\u043b\u043e\u0441, <code>VADDPS<\/code>, \u043f\u043b\u044e\u0441 \u043c\u0451\u0440\u0442\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 AVX-512 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435: Intel \u0432\u044b\u0436\u0433\u043b\u0430 \u0435\u0433\u043e \u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 12-14 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439. \u0412\u0435\u0442\u043a\u0443 \u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b, \u0447\u0435\u0440\u0435\u0437 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0443\u043c\u043c\u0430 <code>[]float32<\/code>: \u043d\u0430 Mac \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 4,2-4,5x \u043e\u0442 4 \u041a\u0411 \u0434\u043e 256 \u041c\u0411; \u0443 i9 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u043e\u0442 5x \u0432 \u043a\u044d\u0448\u0435 \u0434\u043e 2,2x \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 256 \u041c\u0411, \u0430 \u043d\u0430 \u0442\u044b\u0441\u044f\u0447\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0440\u0443\u0447\u043d\u044b\u043c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>8 \u043f\u043e\u043b\u043e\u0441 \u043d\u0435 \u0434\u0430\u043b\u0438 8x, \u0438 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0443\u0440\u043e\u043a: \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u0440\u0430\u0437\u0440\u044b\u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0430 \u043d\u0435 \u0448\u0438\u0440\u0438\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<h3>Go \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u043d\u0435 \u0443\u043c\u0435\u043b \u0432 SIMD. \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043c\u043e\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445<\/h3>\n<p>SIMD &#8212; \u044d\u0442\u043e Single Instruction, Multiple Data: \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u0430\u0447\u043a\u0443. \u0418\u0434\u0435\u044f \u0441\u0442\u0430\u0440\u0430\u044f, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0435\u0441\u0442\u044c \u0434\u0430\u0432\u043d\u043e, \u043d\u043e \u0432 Go \u0434\u043e \u043d\u0438\u0445 \u0431\u044b\u043b\u043e \u043d\u0435 \u0434\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0414\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u043b\u044c. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c: \u043f\u0438\u0448\u0435\u0448\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430 C++ \u0441 \u0438\u043d\u0442\u0440\u0438\u043d\u0437\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0448\u044c, \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0448\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0448\u044c \u0435\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 Go-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u041e\u0434\u0438\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0438\u0441\u0430\u043b \u0444\u0438\u043d\u0430\u043b \u044d\u0442\u043e\u0433\u043e \u043a\u0432\u0435\u0441\u0442\u0430 \u0432 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 Hacker News \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u00abI never got my function to work in go despite the C++ code working fine\u2026 not really a production ready option for Go\u00bb (<a href=\"https:\/\/news.ycombinator.com\/item?id=49010648\" rel=\"noopener noreferrer nofollow\">HN<\/a>). \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 C++ \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0430\u0431\u043e\u0447\u0438\u0439 Go.<\/p>\n<p>\u0412 Go 1.26 (\u0444\u0435\u0432\u0440\u0430\u043b\u044c 2026) \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <code>simd\/archsimd<\/code>, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 amd64. \u0412\u0441\u0435, \u043a\u0442\u043e \u043d\u0430 Apple Silicon, \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0437\u0430 \u0431\u043e\u0440\u0442\u043e\u043c: \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/avito\/articles\/1000616\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u0444\u0438\u0447 1.26 \u043e\u0442 Avito<\/a> \u0431\u043e\u043b\u044c \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u044f\u043c\u043e, \u00ab\u0434\u043b\u044f ARM \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443\u00bb. \u042f \u0432 \u0441\u0432\u043e\u0451\u043c \u043e\u0431\u0437\u043e\u0440\u0435 \u043e\u0442\u0434\u0435\u043b\u0430\u043b\u0441\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439 \u043f\u0440\u043e \u00ab\u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb. \u0410 \u0432 1.27 \u043f\u0440\u0438\u0435\u0445\u0430\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <code>simd<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0436\u0435\u043b\u0435\u0437\u043e \u0441\u0430\u043c; \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0445\u0440\u0430\u043d\u044f\u0442 <a href=\"https:\/\/github.com\/golang\/go\/issues\/73787\" rel=\"noopener noreferrer nofollow\">proposal #73787<\/a> \u0438 <a href=\"https:\/\/github.com\/golang\/go\/issues\/78902\" rel=\"noopener noreferrer nofollow\">#78902<\/a>.<\/p>\n<p>\u0417\u0432\u0443\u0447\u0438\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e: \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e SIMD, \u0438 \u0432\u0434\u0440\u0443\u0433 \u0441\u0440\u0430\u0437\u0443 \u00ab\u043e\u0434\u0438\u043d \u043a\u043e\u0434 \u043d\u0430 \u0432\u0441\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b\u00bb. \u0422\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c, \u0438 \u0443 \u043c\u0435\u043d\u044f \u0434\u0432\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0432\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043b\u0438\u043a\u0431\u0435\u0437\u0430: \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430, \u0438 \u043a\u0443\u0434\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u0435 \u0432\u0441\u0442\u0430\u0451\u0442 SIMD. \u0411\u0435\u0437 \u043d\u0438\u0445 \u0446\u0438\u0444\u0440\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0444\u043e\u043a\u0443\u0441\u043e\u043c.<\/p>\n<h3>\u041b\u0438\u043a\u0431\u0435\u0437: \u043a\u0430\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u0442\u0430\u043a\u0442\u044b \u0434\u043b\u044f \u0442\u0435\u0431\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0431\u0443\u0434\u043d\u0438 &#8212; \u0441\u043c\u0435\u043b\u043e \u043b\u0438\u0441\u0442\u0430\u0439 \u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 go1.27rc2, \u0442\u0443\u0442 \u043b\u0438\u043a\u0431\u0435\u0437 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0436\u0435 Go \u043d\u0435 \u0441\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 Go. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 &#8212; \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0440\u043e\u0432\u043d\u044f \u00ab\u0432\u043e\u0437\u044c\u043c\u0438 \u0447\u0438\u0441\u043b\u043e \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438\u00bb, \u00ab\u0441\u043b\u043e\u0436\u0438 \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430\u00bb, \u00ab\u0441\u0440\u0430\u0432\u043d\u0438\u00bb, \u00ab\u043f\u043e\u043b\u043e\u0436\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u00bb. \u0427\u0442\u043e \u0431\u044b \u043d\u0438 \u0434\u0435\u043b\u0430\u043b \u0442\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0434\u043b\u044f \u044f\u0434\u0440\u0430 \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0442\u0430\u043a\u0438\u0445 \u0448\u0430\u0433\u043e\u0432.<\/p>\n<p>\u0421\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u0441\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445, \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u044f\u0434\u0440\u0430. \u0418\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0441\u0447\u0451\u0442 \u0438\u0434\u0451\u0442 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0437\u0430\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u043d\u0438 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u044f\u0434\u0440\u0430; \u043f\u043e\u0445\u043e\u0434 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u0438\u0445 \u0444\u043e\u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043d\u0430 \u0441\u043e\u0442\u043d\u0438 \u0442\u0430\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u0442 &#8212; \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0442\u0438\u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u0430\u043a\u0438\u0445 \u0442\u0438\u043a\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u044b; \u0437\u0430 \u0442\u0430\u043a\u0442 \u044f\u0434\u0440\u043e \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, 32 \u0438\u043b\u0438 64 \u0431\u0438\u0442\u0430. \u041d\u0430\u0448 \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u0446\u0438\u043a\u043b <code>s += x<\/code> \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0436\u0435\u043b\u0435\u0437\u0430: \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043b\u0430\u0439\u0441\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443-\u0441\u0443\u043c\u043c\u0435, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443. \u0412 \u043f\u0441\u0435\u0432\u0434\u043e\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u0445:<\/p>\n<pre><code class=\"bash\">LOAD  r1 &lt;- xs[i]   \/\/ \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043b\u0430\u0439\u0441\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440FADD  s  &lt;- s + r1  \/\/ \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443-\u0441\u0443\u043c\u043c\u0435\/\/ ...\u0438 \u0442\u0430\u043a \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e &#8212; \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0439: \u0441\u043a\u0430\u043b\u044f\u0440 &#8212; \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0432\u0435\u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u0443, \u043f\u0430\u0447\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438\u043c\u044f <code>sumScalar<\/code> \u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0438\u0436\u0435.<\/p>\n<h3>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u043f\u043e\u043b\u043e\u0441\u044b &#8212; \u0432\u0441\u044f \u0441\u0443\u0442\u044c SIMD<\/h3>\n<p>\u0420\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0432 \u044f\u0434\u0440\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0431\u043e\u0440, \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435. \u0422\u0430 \u0436\u0435 \u044f\u0447\u0435\u0439\u043a\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0448\u0438\u0440\u0435: \u0443 Neon \u043d\u0430 Apple Silicon 128 \u0431\u0438\u0442. <code>float32<\/code> \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 32 \u0431\u0438\u0442\u0430, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u0430\u043a\u0438\u0445 \u0447\u0438\u0441\u043b\u0430 \u0432\u0441\u0442\u0430\u044e\u0442 \u0431\u043e\u043a \u043e \u0431\u043e\u043a. \u042d\u0442\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438, \u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 lanes.<\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u0440\u0430\u0437\u0443 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043b <code>[1, 2, 3, 4]<\/code> \u0432 \u043e\u0434\u0438\u043d \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 <code>[10, 20, 30, 40]<\/code> \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u0434\u0430\u043b \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043b\u0435\u0436\u0438\u0442 <code>[11, 22, 33, 44]<\/code>. \u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u043e\u0439 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0420\u043e\u0432\u043d\u043e \u044d\u0442\u043e \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0435: Single Instruction, Multiple Data &#8212; \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b15\/c61\/46b\/b15c6146b5d0ede910d5e2bcf7019352.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b15\/c61\/46b\/b15c6146b5d0ede910d5e2bcf7019352.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b15\/c61\/46b\/b15c6146b5d0ede910d5e2bcf7019352.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0428\u0438\u0440\u0438\u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0416\u0435\u043b\u0435\u0437\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0428\u0438\u0440\u0438\u043d\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">float32 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Neon<\/p>\n<\/td>\n<td>\n<p align=\"left\">arm64, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Apple Silicon<\/p>\n<\/td>\n<td>\n<p align=\"left\">128 \u0431\u0438\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SSE<\/p>\n<\/td>\n<td>\n<p align=\"left\">amd64<\/p>\n<\/td>\n<td>\n<p align=\"left\">128 \u0431\u0438\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">AVX2<\/p>\n<\/td>\n<td>\n<p align=\"left\">amd64<\/p>\n<\/td>\n<td>\n<p align=\"left\">256 \u0431\u0438\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">AVX-512<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0447\u0430\u0441\u0442\u044c amd64<\/p>\n<\/td>\n<td>\n<p align=\"left\">512 \u0431\u0438\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041c\u043d\u0435 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438: Neon \u043d\u0430 Mac \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438 \u0438 AVX2 \u043d\u0430 i9 \u0441 \u0432\u043e\u0441\u0435\u043c\u044c\u044e. AVX-512 \u043d\u0430 \u043c\u043e\u0451\u043c i9-14900KF \u043d\u0435\u0442, \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u0442\u043e\u043f\u043e\u0432\u044b\u0439 \u043a\u0430\u043c\u0435\u043d\u044c \u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f: Intel \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0430 \u0435\u0433\u043e \u0443 \u0432\u0441\u0435\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043a\u0438. \u0417\u0430 \u044d\u0442\u0438\u043c \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e \u0434\u0432\u0430 \u0441\u043e\u0440\u0442\u0430 \u044f\u0434\u0435\u0440, \u0434\u043e\u0439\u0434\u0451\u043c \u0434\u043e \u043d\u0435\u0451 \u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f: \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0441, \u0447\u0435\u043c \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043d\u0435 \u0441\u043b\u043e\u0436\u0438\u0442\u044c. \u0420\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u0435: Mitchell Hashimoto, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b Ghostty, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0434\u043b\u044f AVX2 \u043d\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 8x, \u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u00abmore like a 5x\u00bb. \u041a\u0443\u0434\u0430 \u0443\u0442\u0435\u043a\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0430, \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445.<\/p>\n<p>\u0418 \u044d\u0442\u043e \u043d\u0435 \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0430. \u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0447\u0438\u0442\u0430\u0435\u0448\u044c \u0441\u0442\u0430\u0442\u044c\u044e. Go \u0438\u043c\u0438 \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f: \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u0447\u0442\u0438 25 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a x86-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u043d\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e Go-\u043a\u043e\u0434\u0430 \u0434\u043e \u044d\u0442\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0431\u044b\u043b\u043e \u043d\u0435 \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>SIMD &#8212; \u0444\u0438\u0447\u0430 \u0436\u0435\u043b\u0435\u0437\u0430, \u0430 \u043d\u0435 \u044f\u0437\u044b\u043a\u0430; \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0434\u043e\u0442\u044f\u043d\u0435\u0442\u0441\u044f \u043b\u0438 \u044f\u0437\u044b\u043a. \u0421 1.27 \u0434\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0449\u0443\u043f\u0430\u0435\u043c.<\/p>\n<h3>\u0421\u0442\u0430\u0432\u0438\u043c go1.27rc2: \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0434\u043d\u0438 \u043d\u0430 macOS \u0438 Linux<\/h3>\n<p>\u0421\u0442\u0430\u0432\u0438\u0442\u0441\u044f RC \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d Go, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u043c \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c; \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445:<\/p>\n<pre><code class=\"bash\">go install golang.org\/dl\/go1.27rc2@latestgo1.27rc2 download<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>simd<\/code> \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c. \u0418 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043b\u043e\u0431:<\/p>\n<pre><code class=\"bash\">imports simd: build constraints exclude all Go files in ...\/src\/simd<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u0433\u0434\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0435\u0448\u0430\u044e\u0442, \u0447\u0442\u043e \u00abSIMD \u0432 Go \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00bb, \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u043a\u043b\u0430\u0434\u043a\u0443. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0430\u043a\u0435\u0442 \u0441\u043f\u0440\u044f\u0442\u0430\u043d \u0437\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u043b\u0430\u0433\u043e\u043c. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0448\u044c <code>GOEXPERIMENT=simd<\/code>, \u0438 \u0432\u0441\u0451 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">GOEXPERIMENT=simd go1.27rc2 run .<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0424\u043b\u0430\u0433 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435, \u0438 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0430\u0445, \u0438 \u043f\u0440\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445. \u0417\u0430\u0431\u0443\u0434\u0435\u0448\u044c &#8212; \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u0442\u0430 \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e build constraints.<\/p>\n<h3>\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0446\u0438\u043a\u043b: \u0441\u0443\u043c\u043c\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 float32 \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445<\/h3>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c, \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u043c. \u0412\u043e\u0442 \u043d\u0430\u0438\u0432\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0438\u0437 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\/blob\/main\/1.27rc2\/sum.go\" rel=\"noopener noreferrer nofollow\">sum.go<\/a>, \u0435\u0451 \u0438 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0437\u0430 \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u0441\u0447\u0451\u0442\u0430:<\/p>\n<pre><code class=\"go\">\/\/ sum.gofunc sumScalar(xs []float32) float32 {var s float32for _, x := range xs {s += x}return s}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0413\u043e\u043d\u0438\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0430\u043c\u0438 \u0431\u0435\u043d\u0447\u0438 &#8212; \u0432 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\/blob\/main\/1.27rc2\/sum_test.go\" rel=\"noopener noreferrer nofollow\">sum_test.go<\/a>:<\/p>\n<pre><code class=\"bash\">GOEXPERIMENT=simd go1.27rc2 test -bench='Sum\/Scalar$\/n=1000000$' -benchmem .<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e: go test \u0440\u0435\u0436\u0435\u0442 \u0435\u0433\u043e \u043f\u043e \u0441\u043b\u044d\u0448\u0430\u043c, \u043a\u0430\u0436\u0434\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u0430\u0442\u0447\u0438\u0442 \u0441\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u043c\u0435\u043d\u0438 <code>BenchmarkSum\/Scalar\/n=1000000<\/code>. \u041d\u0430\u043f\u0438\u0448\u0435\u0448\u044c \u043a\u043e\u0440\u043e\u0447\u0435, \u0432\u0440\u043e\u0434\u0435 <code>-bench=Scalar\/n=1000000<\/code>, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c PASS \u0441 \u043d\u0443\u043b\u0451\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f. \u041e\u0431 \u044d\u0442\u043e\u0442 \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u0439 PASS \u044f \u0438 \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u043b\u0441\u044f, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f \u0431\u0435\u043d\u0447\u0438 \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043d\u0430 Mac:<\/p>\n<pre><code class=\"bash\">## \u0412\u044b\u0432\u043e\u0434 \u043d\u0430 MacBenchmarkSum\/Scalar\/n=1000000-11    1604    697574 ns\/op    5734 MB\/s## \u041e\u043d \u0436\u0435 \u043d\u0430 i9BenchmarkSum\/Scalar\/n=1000000-32    3396    349010 ns\/op    11461.00 MB\/s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0435\u043c\u044c\u0441\u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u0440\u0451\u0445\u0441\u043e\u0442 \u043f\u044f\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438: \u0434\u0435\u0441\u043a\u0442\u043e\u043f \u0432\u0434\u0432\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0435\u0449\u0451 \u0434\u043e \u0432\u0441\u044f\u043a\u043e\u0433\u043e SIMD, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0442\u0443\u0442 \u043d\u0435\u0442, P-\u044f\u0434\u0440\u043e i9 \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e 6 \u0413\u0413\u0446 \u0438 \u0431\u0435\u0440\u0451\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439. \u0421\u0443\u0444\u0444\u0438\u043a\u0441\u044b <code>-11<\/code> \u0438 <code>-32<\/code> \u0432 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 GOMAXPROCS \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d, \u0441\u0430\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439. \u0417\u0430\u043f\u0443\u0441\u0442\u0438 \u0443 \u0441\u0435\u0431\u044f &#8212; \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435, \u0442\u043e\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<h3>\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440: \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434, \u043e\u0431\u0435 \u043c\u0430\u0448\u0438\u043d\u044b<\/h3>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0441\u044e\u0434\u0443 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443. \u0417\u0430\u0432\u0435\u0441\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0438\u0434\u0442\u0438 \u043f\u043e \u0441\u043b\u0430\u0439\u0441\u0443 \u043a\u0443\u0441\u043a\u0430\u043c\u0438 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043a\u0443\u0441\u043a\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e. \u0412 \u043a\u043e\u043d\u0446\u0435 &#8212; \u0441\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0438 \u0434\u043e\u0431\u0438\u0442\u044c \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u0445\u0432\u043e\u0441\u0442. \u0412\u043e\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b:<\/p>\n<pre><code class=\"go\">\/\/ sum.gofunc sumSIMD(xs []float32) float32 {var acc simd.Float32s      \/\/ \u0432\u0435\u043a\u0442\u043e\u0440-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0432\u0441\u0435 \u043f\u043e\u043b\u043e\u0441\u044b = 0w := acc.Len()             \/\/ \u0441\u043a\u043e\u043b\u044c\u043a\u043e float32 \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440i := 0for ; i+w &lt;= len(xs); i += w {acc = acc.Add(simd.LoadFloat32s(xs[i:])) \/\/ \u0441\u043b\u043e\u0436\u0438\u0442\u044c w \u0447\u0438\u0441\u0435\u043b \u0440\u0430\u0437\u043e\u043c}  \/\/ ... \u0441\u0432\u043e\u0434 \u043f\u043e\u043b\u043e\u0441 \u0438 \u0445\u0432\u043e\u0441\u0442 - \u043d\u0438\u0436\u0435<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>simd.Float32s<\/code> &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 <code>float32<\/code> \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043d\u0430\u043f\u0435\u0440\u0451\u0434 \u0434\u043b\u0438\u043d\u044b. <code>LoadFloat32s<\/code> \u0431\u0435\u0440\u0451\u0442 \u0438\u0437 \u0441\u043b\u0430\u0439\u0441\u0430 \u0440\u043e\u0432\u043d\u043e <code>w<\/code> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0433\u0440\u0443\u0437\u0438\u0442 \u0438\u0445 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440, <code>Add<\/code> \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e, <code>Len()<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043b\u0435\u0437\u043b\u043e. \u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: <code>w<\/code> \u043d\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u043c\u044b \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0435\u0451 \u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435: \u044d\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u0432 <code>acc<\/code> \u043b\u0435\u0436\u0438\u0442 <code>w<\/code> \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u0443\u043c\u043c. \u0418\u0445 \u043d\u0430\u0434\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0435 \u0432\u043b\u0435\u0437\u0448\u0438\u0435 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440:<\/p>\n<pre><code class=\"go\">\/\/ sum.go (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 sumSIMD)lanes := make([]float32, w)acc.Store(lanes)           \/\/ \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043b\u0430\u0439\u0441var s float32for _, v := range lanes {  \/\/ \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439s += v}for ; i &lt; len(xs); i++ {   \/\/ \u0445\u0432\u043e\u0441\u0442: \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043a\u043e\u0440\u043e\u0447\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430s += xs[i]}return s}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ccc\/904\/cee\/ccc904ceee0719a782a7cd03f6e0b919.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ccc\/904\/cee\/ccc904ceee0719a782a7cd03f6e0b919.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ccc\/904\/cee\/ccc904ceee0719a782a7cd03f6e0b919.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0427\u0435\u043c\u0443 \u0440\u0430\u0432\u0435\u043d <code>w<\/code>? \u0421\u043f\u0440\u043e\u0441\u0438 \u0443 \u043f\u0430\u043a\u0435\u0442\u0430:<\/p>\n<pre><code class=\"go\">fmt.Println(simd.VectorBitSize(), simd.Float32s{}.Len())\/\/ Mac: 128 4\/\/ i9:  256 8<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0434\u0438\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043d\u0443\u044e \u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430; \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u043c <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\/blob\/main\/1.27rc2\/runtimecheck_test.go\" rel=\"noopener noreferrer nofollow\">runtimecheck_test.go<\/a>. \u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 Mac:<\/p>\n<pre><code class=\"bash\">BenchmarkSum\/SIMD\/n=1000000-11    7308    163353 ns\/op    24486 MB\/s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>700 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 163: \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e, \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430. \u0422\u0435\u043f\u0435\u0440\u044c i9:<\/p>\n<pre><code class=\"bash\">BenchmarkSum\/SIMD\/n=1000000-32    17768    69508 ns\/op    57547.05 MB\/s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>349 \u0441\u0442\u0430\u043b\u0438 69,5, \u0440\u043e\u0432\u043d\u043e 5x.<\/p>\n<p>\u0422\u0443\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438 \u0441\u0435\u0431\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u0439 \u0441\u0442\u0430\u0432\u043a\u0443. \u041d\u0430 Mac \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u043b\u043e\u0441\u044b \u0434\u0430\u043b\u0438 4,2x, \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0448\u0438\u0440\u0438\u043d. \u0423 i9 \u043f\u043e\u043b\u043e\u0441 \u0432\u043e\u0441\u0435\u043c\u044c, \u0430 \u0432\u044b\u0448\u043b\u043e 5x: \u043a\u0443\u0434\u0430 \u0434\u0435\u043b\u0438\u0441\u044c \u0435\u0449\u0451 \u0442\u0440\u0438 \u0438\u043a\u0441\u0430? \u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0439 \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0434\u0435\u0440\u0436\u0438 \u0435\u0451 \u0434\u043e \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<p>\u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u0440\u044b\u0442: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. \u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0431\u043e\u0440, \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/p>\n<h3>\u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440: FADD \u043f\u0440\u043e\u0442\u0438\u0432 VADDPS<\/h3>\n<p>\u0417\u0430\u0433\u043b\u044f\u043d\u0435\u043c, \u0432\u043e \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b <code>Add<\/code> \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435, \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434. Mac:<\/p>\n<pre><code class=\"bash\">GOEXPERIMENT=simd go1.27rc2 test -c -gcflags='-l' -o \/tmp\/t.test .go1.27rc2 tool objdump \/tmp\/t.test | grep 'FADD .*\\.S4'## FADD V1.S4, V0.S4, V0.S4<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>FADD<\/code> \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 float, <code>V0<\/code> \u0438 <code>V1<\/code> &#8212; 128-\u0431\u0438\u0442\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b Neon. <code>.S4<\/code> \u0437\u043d\u0430\u0447\u0438\u0442 \u00ab\u0447\u0435\u0442\u044b\u0440\u0435 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0447\u0438\u0441\u043b\u0430\u00bb: \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0430\u0440\u044b <code>float32<\/code> \u0440\u0430\u0437\u043e\u043c. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 <code>Len() == 4<\/code>: \u0442\u0435 \u0436\u0435 128 \u0431\u0438\u0442 \/ 32 \u0431\u0438\u0442\u0430 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0448\u0438\u0440\u0438\u043d.<\/p>\n<p>\u0422\u0435 \u0436\u0435 \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 i9:<\/p>\n<pre><code class=\"bash\">go1.27rc2 tool objdump \/tmp\/t.test | grep 'VADDPS Y'## VADDPS Y1, Y0, Y0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 Go &#8212; \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u043e\u0434\u043d\u043e\u0439 \u044f\u0437\u044b\u043a. <code>VADDPS<\/code> \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 float \u043d\u0430 x86, \u0430 <code>Y0<\/code> \u0438 <code>Y1<\/code> &#8212; 256-\u0431\u0438\u0442\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b AVX2: \u0432\u043e\u0441\u0435\u043c\u044c \u043f\u043e\u043b\u043e\u0441 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043a\u0430\u043a \u0438 \u043e\u0431\u0435\u0449\u0430\u043b <code>Len() == 8<\/code>. \u041c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0431\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0432\u043e\u0438\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/606\/ef2\/055\/606ef2055796ee29bb1e6d73c88dea30.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/606\/ef2\/055\/606ef2055796ee29bb1e6d73c88dea30.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/606\/ef2\/055\/606ef2055796ee29bb1e6d73c88dea30.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440: switch, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435<\/h3>\n<p>\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a <code>w := acc.Len()<\/code>. \u041f\u043e\u0447\u0435\u043c\u0443 \u0448\u0438\u0440\u0438\u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u0430 \u043d\u0435 \u0438\u0437 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u043d\u0435\u0441\u0451\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u0432\u0441\u0435 \u0448\u0438\u0440\u0438\u043d\u044b \u0441\u0440\u0430\u0437\u0443. \u041d\u0430 i9 \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0442\u0435\u043c \u0436\u0435 grep, \u043d\u043e \u0431\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u043e <code>Y<\/code>:<\/p>\n<pre><code class=\"bash\">go1.27rc2 tool objdump \/tmp\/t.test | grep VADDPS## VADDPS X1, X0, X0    \/\/ 128 \u0431\u0438\u0442, SSE:      4 x float32## VADDPS Y1, Y0, Y0    \/\/ 256 \u0431\u0438\u0442, AVX2:     8 x float32## VADDPS Z1, Z0, Z0    \/\/ 512 \u0431\u0438\u0442, AVX-512: 16 x float32<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0434\u043e\u0431\u044b\u0432\u0430\u043b \u044d\u0442\u0443 \u0442\u0440\u043e\u0439\u043a\u0443 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u0441 Mac \u0438 \u0440\u0430\u0437\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u043b \u043a\u0430\u043a \u0442\u0435\u043e\u0440\u0438\u044e; \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d\u0430 \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u043e\u0431\u0440\u0430\u043b \u0438\u0437 \u043c\u043e\u0435\u0439 <code>sumSIMD<\/code> \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0435\u0442\u043a\u0438: <code>@simd0<\/code> (\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u0430\u044f \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f), <code>@simd128<\/code>, <code>@simd256<\/code>, <code>@simd512<\/code>. \u0410 \u0441\u0432\u0435\u0440\u0445\u0443 \u043f\u043e\u043b\u043e\u0436\u0438\u043b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440, \u0438 \u044d\u0442\u043e \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e switch. \u0412\u043e\u0442 \u043e\u043d \u0432 objdump, \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u044f \u0432\u044b\u0440\u0435\u0437\u0430\u043b:<\/p>\n<pre><code class=\"bash\">CALL simd.VectorBitSize(SB)CMPQ AX, $0x80        \/\/ 128? -&gt; \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c Emulated -&gt; @simd0 \u043b\u0438\u0431\u043e @simd128CMPQ AX, $0x100       \/\/ 256? -&gt; CALL gosimd.sumSIMD@simd256CMPQ AX, $0x200       \/\/ 512? -&gt; CALL gosimd.sumSIMD@simd512<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438, \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u0420\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0447\u0442\u043e \u0442\u043e\u0442 \u0443\u043c\u0435\u0435\u0442; \u043d\u0430 \u043c\u043e\u0451\u043c i9 <code>VectorBitSize()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 256, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0438\u0432\u0451\u0442 \u0432\u0435\u0442\u043a\u0430 <code>@simd256<\/code>. \u0414\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u0432 Go \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0431\u0435\u0437 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c <code>go build<\/code> \u043c\u043e\u043b\u0447\u0430 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043f\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0443 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u0430\u043c \u0438\u0445 \u043a\u043e\u043c\u043c\u0443\u0442\u0438\u0440\u0443\u0435\u0442. \u041e\u0442 \u044d\u0442\u043e\u0439 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0441\u043b\u0435\u0433\u043a\u0430 \u0432 \u0432\u043e\u0441\u0442\u043e\u0440\u0433\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/98a\/f8b\/b90\/98af8bb909b9e5b7716e3dfa3b2b704e.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/98a\/f8b\/b90\/98af8bb909b9e5b7716e3dfa3b2b704e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/98a\/f8b\/b90\/98af8bb909b9e5b7716e3dfa3b2b704e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410 \u0432\u0435\u0442\u043a\u0430 <code>@simd512<\/code> \u043d\u0430 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 &#8212; \u043c\u0451\u0440\u0442\u0432\u044b\u0439 \u0433\u0440\u0443\u0437, \u0438 \u044d\u0442\u043e \u043d\u0435 \u0436\u0430\u0434\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0423 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 Intel \u0441 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0430 \u0441\u043e\u0440\u0442\u0430 \u044f\u0434\u0435\u0440, \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u044b\u0435 E-\u044f\u0434\u0440\u0430 AVX-512 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u041e\u0421 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u043d\u0430 P-\u044f\u0434\u0440\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 Intel \u0441\u043d\u0430\u0447\u0430\u043b\u0430 <a href=\"https:\/\/www.anandtech.com\/show\/17047\/the-intel-12th-gen-core-i912900k-review-hybrid-performance-brings-hybrid-complexity\/2\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u044f\u0442\u0430\u043b\u0430 AVX-512 \u0438\u0437 CPUID<\/a>, \u0430 \u0441 2022-\u0433\u043e <a href=\"https:\/\/www.tomshardware.com\/news\/intel-bios-update-disables-alder-lake-avx-512\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435<\/a>; 13-\u0435 \u0438 14-\u0435 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438.<\/p>\n<p>\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0432\u0441\u0435\u0440\u044c\u0451\u0437, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u00ab\u043c\u0451\u0440\u0442\u0432\u044b\u0439 \u0433\u0440\u0443\u0437\u00bb. \u041f\u0440\u044f\u043c\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 zmm-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c i9 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c Illegal instruction, \u0438 \u043f\u0443\u0442\u0438 \u043d\u0430\u0437\u0430\u0434 \u043d\u0435\u0442. \u0420\u0430\u043d\u043d\u0438\u043c Alder Lake \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u0438 \u0441\u0442\u0430\u0440\u044b\u0439 BIOS \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 E-\u044f\u0434\u0435\u0440, \u043d\u043e \u0434\u043b\u044f 13\/14 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u0434\u0430 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 AVX-512 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u043e\u0441\u044c (<a href=\"https:\/\/github.com\/zingaburga\/alderlake_avx512\/wiki\" rel=\"noopener noreferrer nofollow\">\u0445\u0440\u043e\u043d\u0438\u043a\u0430<\/a>). \u0421\u0430\u043c\u043e\u0435 \u043e\u0431\u0438\u0434\u043d\u043e\u0435: \u043d\u0430 <a href=\"https:\/\/www.tomshardware.com\/news\/core-i9-13900k-uncovered-in-new-die-shots\" rel=\"noopener noreferrer nofollow\">die shots<\/a> \u0431\u043b\u043e\u043a\u0438 AVX-512 \u0432 P-\u044f\u0434\u0440\u0430\u0445 Raptor Cove \u0432\u0438\u0434\u043d\u044b, \u0436\u0435\u043b\u0435\u0437\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043a\u0440\u0435\u043c\u043d\u0438\u0438, \u043d\u043e \u0444\u044c\u044e\u0437\u044b \u0432\u044b\u0436\u0436\u0435\u043d\u044b \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e. \u0428\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441 \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0433\u043e Intel \u043f\u043e\u043a\u0430 \u0442\u0435\u043e\u0440\u0438\u044f.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044f \u0447\u0443\u0442\u044c \u043d\u0435 \u0441\u043e\u0432\u0440\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041d\u0430 Mac \u044f \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0435 \u0442\u0443 \u0432\u0435\u0442\u043a\u0443, \u0430 \u0444\u043e\u043b\u0431\u044d\u043a <code>@simd0<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435. \u0423\u0432\u0438\u0434\u0435\u043b \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043d\u0430 arm64 \u0432\u0441\u0451 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f. \u0421\u043f\u0430\u0441\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430:<\/p>\n<pre><code class=\"go\">fmt.Println(simd.Emulated())\/\/ false - \u0438 \u043d\u0430 Mac, \u0438 \u043d\u0430 i9<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>Emulated()<\/code> \u0432\u0435\u0440\u043d\u0443\u043b <code>false<\/code>: \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0436\u0435\u043b\u0435\u0437\u043e, \u0430 \u044f \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435 \u043b\u0435\u0436\u0438\u0442, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u041c\u043e\u0440\u0430\u043b\u044c: \u0441\u043f\u043e\u0440\u0438\u0448\u044c \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439 \u0432\u0435\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u043f\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435.<\/p>\n<h3>\u041e\u0436\u0438\u0432\u043b\u044f\u0435\u043c \u043c\u0451\u0440\u0442\u0432\u0443\u044e \u0432\u0435\u0442\u043a\u0443: \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u043f\u043e\u0442\u0430\u0439\u043d\u0430\u044f \u0440\u0443\u0447\u043a\u0430<\/h3>\n<p>\u0412\u0435\u0442\u043a\u0443 <code>@simd512<\/code> \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b, \u043f\u0440\u0438\u0447\u0451\u043c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u0435. \u041f\u043e\u043c\u043e\u0433 <a href=\"https:\/\/www.intel.com\/content\/www\/us\/en\/download\/684897\/intel-software-development-emulator.html\" rel=\"noopener noreferrer nofollow\">Intel SDE<\/a>, \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u0441\u0430\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 Go, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 AVX-512-\u043a\u043e\u0434 \u0431\u0435\u0437 \u0436\u0435\u043b\u0435\u0437\u0430. \u041f\u043e\u0434 <code>sde64 -spr<\/code> (\u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e Sapphire Rapids) \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 <code>@simd512<\/code>: <code>VectorBitSize()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 512, <code>Len()<\/code> \u0434\u0430\u0451\u0442 16, \u0441\u0443\u043c\u043c\u0430 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439. \u0413\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (<code>sde64 -mix<\/code>) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <code>vaddps zmm<\/code> \u0440\u043e\u0432\u043d\u043e 62 500 \u0440\u0430\u0437, \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e 16 \u043f\u043e\u043b\u043e\u0441. \u0412\u0441\u0451 \u0447\u0435\u0441\u0442\u043d\u043e.<\/p>\n<p>\u0414\u043b\u044f \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d: \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 \u043f\u043e\u0434 \u043d\u0438\u043c \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435. \u041d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c 512-\u0431\u0438\u0442\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0438 \u043c\u043e\u0436\u043d\u043e, \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0430\u044f \u0438\u0437-\u0437\u0430 \u0441\u0442\u043e\u043b\u0430. \u0418 \u043b\u043e\u0432\u0443\u0448\u043a\u0430 \u0432 \u0442\u0435\u043c\u0443: \u043f\u043e\u0434 SDE <code>simd.Emulated()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>false<\/code>, \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u0442 \u0436\u0435\u043b\u0435\u0437\u0430, \u0432\u0435\u0434\u044c SDE \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442 CPUID. <code>Emulated()<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0447\u0438\u0441\u0442\u044b\u043c Go\u00bb, \u0430 \u043d\u0435 \u00ab\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u00bb.<\/p>\n<p>\u0412\u043d\u0438\u0437 \u043f\u043e \u0432\u0435\u0442\u043a\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u0431\u0435\u0437 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u043d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0440\u0443\u0447\u043a\u0430 <code>GODEBUG=simd=N<\/code>: <code>simd=128<\/code> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0432\u0437\u044f\u0442\u044c \u0432\u0435\u0442\u043a\u0443 <code>@simd128<\/code>, \u0430 <code>simd=0<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044e <code>@simd0<\/code>. \u042d\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u043e\u0442\u0440\u0435\u0437\u0432\u043b\u044f\u0435\u0442: 1,14 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043c\u0438\u043b\u043b\u0438\u043e\u043d, \u0432 \u0442\u0440\u0438 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0430\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u0430. \u0424\u043e\u043b\u0431\u044d\u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0434\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0410 \u0432\u043e\u0442 <code>simd=512<\/code> \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435 \u0431\u0435\u0437 AVX-512 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0430\u043d\u0438\u043a\u0443\u0435\u0442:<\/p>\n<pre><code class=\"bash\">panic: Requested GODEBUG=gosimd=512 is larger than the simd length (256) supported on this cpu<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0424\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0438\u0437, \u0432\u0432\u0435\u0440\u0445 &#8212; \u043d\u0438\u043a\u0430\u043a. \u0427\u0438\u0441\u043b\u043e \u0441 \u0440\u0443\u0447\u043a\u0438 <code>simd=128<\/code> \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u043a\u0446\u0438\u0438.<\/p>\n<h3>\u041e\u0442\u043a\u0443\u0434\u0430 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435: \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445<\/h3>\n<p>\u041f\u043e\u0440\u0430 \u0432\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0432\u043a\u0443 \u0438\u0437 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0437\u0430 \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043b\u0430\u0447\u0435\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435\u043c, \u044f \u0434\u0435\u0440\u0436\u0443 \u0432 \u0431\u0435\u043d\u0447\u0430\u0445 \u0442\u0440\u0435\u0442\u044c\u044e \u0432\u0435\u0440\u0441\u0438\u044e: \u0442\u043e\u0436\u0435 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u0443\u044e, \u043d\u043e \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<details class=\"spoiler\">\n<summary>sumScalar4: \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"go\">\/\/ sum.gofunc sumScalar4(xs []float32) float32 {var s0, s1, s2, s3 float32i := 0for ; i+4 &lt;= len(xs); i += 4 {s0 += xs[i]s1 += xs[i+1]s2 += xs[i+2]s3 += xs[i+3]}s := s0 + s1 + s2 + s3for ; i &lt; len(xs); i++ {s += xs[i]}return s}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e SIMD, \u043e\u0431\u044b\u0447\u043d\u044b\u0435 <code>float32<\/code>, \u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u0412\u0441\u0435 \u0442\u0440\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u0435\u0434\u0438\u0430\u043d\u044b \u0441\u0435\u0440\u0438\u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u043c\u0430\u0448\u0438\u043d\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar4<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Mac<\/p>\n<\/td>\n<td>\n<p align=\"left\">700 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">324 \u00b5s (2,2x)<\/p>\n<\/td>\n<td>\n<p align=\"left\">166 \u00b5s (4,2x)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">i9<\/p>\n<\/td>\n<td>\n<p align=\"left\">349 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">113 \u00b5s (3,1x)<\/p>\n<\/td>\n<td>\n<p align=\"left\">69,5 \u00b5s (5,0x)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u043e\u0441\u044c\u043c\u0438 \u0438\u043a\u0441\u043e\u0432 \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0435\u0442\u043a\u0435, \u0437\u0430\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0443 scalar4. \u0420\u0443\u0447\u043d\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0433\u043e SIMD \u0434\u0430\u044e\u0442 \u043d\u0430 Mac \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u00ab\u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e\u00bb \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430, \u0430 \u043d\u0430 i9 \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b: 3,1x \u0438\u0437 5.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u0438\u043d \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439? \u0412 \u0446\u0438\u043a\u043b\u0435 <code>s += x<\/code> \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e: \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e, \u043d\u0443\u0436\u043d\u0430 \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u043e\u0442 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0448\u0430\u0433\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430, \u0433\u0434\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u044f\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0445\u043e\u0442\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u044f\u0434\u0440\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043e\u043d\u0438 \u0443\u043c\u0435\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e. \u0427\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0440\u0432\u0443\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435, \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u044e\u0449\u0438\u043c \u0431\u043b\u043e\u043a\u0430\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u043c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f01\/b72\/8de\/f01b728de9d25a549eab751a04702e23.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f01\/b72\/8de\/f01b728de9d25a549eab751a04702e23.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f01\/b72\/8de\/f01b728de9d25a549eab751a04702e23.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0417\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0435\u0441\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0430\u043c \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043b\u044f float \u044d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u043d\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e: <code>(a + b) + c<\/code> \u0438 <code>a + (b + c)<\/code> \u043c\u043e\u0433\u0443\u0442 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0431\u0438\u0442\u044b \u0438\u0437-\u0437\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u043b\u0447\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442, \u0438 Go \u043d\u0430 \u044d\u0442\u043e \u043d\u0435 \u0438\u0434\u0451\u0442 \u0431\u0435\u0437 \u0442\u0432\u043e\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041f\u0438\u0448\u0435\u0448\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0431\u0435\u0440\u0451\u0448\u044c \u0432\u0435\u043a\u0442\u043e\u0440 &#8212; \u0434\u0430\u0451\u0448\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044f\u0432\u043d\u043e.<\/p>\n<p>\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443 \u043c\u0430\u0448\u0438\u043d \u0434\u043e\u0440\u043e\u0433\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f. \u041d\u0430 Mac \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0432\u0435\u0440\u0445 scalar4 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0451 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430: \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u043b\u043e\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432 \u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u043e\u0441\u0442. \u041d\u0430 i9 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043b\u0438\u0448\u044c 1,6x \u043f\u0440\u0438 \u0432\u043e\u0441\u044c\u043c\u0438 \u043f\u043e\u043b\u043e\u0441\u0430\u0445.<\/p>\n<p>\u0412\u043a\u043b\u0430\u0434 \u0448\u0438\u0440\u0438\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u0438 \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0440\u0443\u0447\u043a\u043e\u0439 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438. \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u043f\u043e\u043b\u043e\u0441\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 <code>@simd128<\/code> \u043d\u0430 i9 \u0434\u0430\u0451\u0442 134 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 69,5 \u0443 \u0440\u043e\u0434\u043d\u044b\u0445 \u0432\u043e\u0441\u044c\u043c\u0438 \u043f\u043e\u043b\u043e\u0441: \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u0435 \u0448\u0438\u0440\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 1,9x. \u0418 \u0437\u0430\u043c\u0435\u0442\u044c: \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u043f\u043e\u043b\u043e\u0441\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u0440\u0443\u0447\u043d\u044b\u043c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c, 134 \u043f\u0440\u043e\u0442\u0438\u0432 113 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434. \u041e\u0431\u0432\u044f\u0437\u043a\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430.<\/p>\n<p>\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0438 \u0432\u043e\u0441\u0435\u043c\u044c \u0440\u0443\u0447\u043d\u044b\u0445 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432, <code>sumScalar8<\/code> \u043b\u0435\u0436\u0438\u0442 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\/blob\/main\/1.27rc2\/sum.go\" rel=\"noopener noreferrer nofollow\">\u0432 \u0442\u043e\u043c \u0436\u0435 sum.go<\/a>. \u041d\u0430 i9 \u043f\u0440\u0438\u0440\u043e\u0441\u0442\u0430 \u043d\u0430\u0434 scalar4 \u043d\u0435\u0442: \u0447\u0435\u0442\u044b\u0440\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0443\u0436\u0435 \u043a\u043e\u0440\u043c\u044f\u0442 \u0431\u043b\u043e\u043a\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u0434\u043e\u0441\u044b\u0442\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u043b\u0438\u043c\u0438\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0430\u043c\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438 \u043e\u0431\u0432\u044f\u0437\u043a\u0430 \u0446\u0438\u043a\u043b\u0430. \u0410 Mac \u0432\u043e\u0441\u0435\u043c\u044c \u0446\u0435\u043f\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0436\u0435\u0432\u0430\u043b. \u0412 \u0441\u0432\u0435\u0436\u0435\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 scalar8 \u0441\u0440\u0435\u0437\u0430\u043b \u0432\u0440\u0435\u043c\u044f scalar4 \u0435\u0449\u0451 \u043f\u043e\u0447\u0442\u0438 \u0432\u0434\u0432\u043e\u0435: 180 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0442\u0438\u0432 346. \u0414\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430 &#8212; \u0443 \u0442\u043e\u0433\u043e 173. \u0420\u0430\u0441\u043a\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0430\u043b\u044f\u0440 \u043d\u0430 M3 Pro \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0433\u043e\u043d\u044f\u0435\u0442 SIMD. \u041f\u043e\u043b\u043e\u0441\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u043a\u0441\u044b \u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u0432\u043e\u0441\u044c\u043c\u0438; \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0446\u0435\u043f\u043e\u0447\u0435\u043a \u043f\u0440\u043e\u0436\u0443\u0451\u0442 \u044f\u0434\u0440\u043e &#8212; \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u0441\u0432\u043e\u0451.<\/p>\n<p>\u0421\u0442\u0430\u0432\u043a\u0430 \u0432\u0441\u043a\u0440\u044b\u0442\u0430: \u00ab8 \u043f\u043e\u043b\u043e\u0441 &#8212; \u0431\u0443\u0434\u0435\u0442 8x\u00bb \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438 \u0441\u043a\u0430\u043b\u044f\u0440, \u0438 \u0432\u0435\u043a\u0442\u043e\u0440 \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u0432 \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. SIMD \u0446\u0435\u043d\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0434\u043d\u0438\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u0440\u0432\u0451\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0443, \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0447\u043a\u0430\u043c\u0438. \u041d\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043c\u043e\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043f\u0440\u0438\u043d\u0451\u0441 \u0440\u0430\u0437\u0440\u044b\u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438.<\/p>\n<p>\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b (\u0440\u0430\u0441\u0447\u0451\u0442 \u043f\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440, \u043d\u0435 \u0437\u0430\u043c\u0435\u0440). P-\u044f\u0434\u0440\u043e Raptor Lake \u0443\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430 \u0442\u0430\u043a\u0442 \u043f\u043e 8 \u043f\u043e\u043b\u043e\u0441, \u044f\u0434\u0440\u043e M1 &#8212; \u0447\u0435\u0442\u044b\u0440\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043f\u043e 4 \u043f\u043e\u043b\u043e\u0441\u044b. \u0418 \u0442\u0430\u043c \u0438 \u0442\u0430\u043c \u0432\u044b\u0445\u043e\u0434\u0438\u0442 16 float32 \u0437\u0430 \u0442\u0430\u043a\u0442; \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u0432 \u043c\u043e\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0434\u0435\u043b\u0430\u044e\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438 \u043f\u043e\u0434\u0432\u043e\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0435 \u0436\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0442 \u0438 \u0430\u043f\u043f\u0435\u0442\u0438\u0442 \u043a \u0446\u0435\u043f\u043e\u0447\u043a\u0430\u043c: \u0434\u0432\u0430 \u043f\u043e\u0440\u0442\u0430 i9 \u043d\u0430\u0441\u044b\u0442\u0438\u043b\u0438\u0441\u044c \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438, \u0447\u0435\u0442\u044b\u0440\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 Mac \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u043b\u0438 \u0438 \u0432\u043e\u0441\u0435\u043c\u044c.<\/p>\n<h3>P-\u044f\u0434\u0440\u0430, E-\u044f\u0434\u0440\u0430 \u0438 \u043a\u0443\u0434\u0430 \u0441\u044f\u0434\u0435\u0442 \u0442\u0432\u043e\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a<\/h3>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0440\u0442 \u044f\u0434\u0435\u0440, \u043f\u0430\u043c\u044f\u0442\u044c \u0441\u043b\u0435\u0434\u043e\u043c. \u0423 14900KF 8 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 P-\u044f\u0434\u0435\u0440 (\u0434\u043e 6,0 \u0413\u0413\u0446) \u0438 16 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u044b\u0445 E (4,4 \u0413\u0413\u0446); AVX2 \u0443\u043c\u0435\u044e\u0442 \u043e\u0431\u0430, \u0432\u0435\u0442\u043a\u0430 <code>@simd256<\/code> \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u043c. \u041f\u0438\u043d\u0443\u044e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u044f\u0434\u0440\u0430:<\/p>\n<pre><code class=\"bash\">GOEXPERIMENT=simd taskset --cpu-list 8 go1.27rc2 test -bench='Sum\/.*\/n=1000000$' .GOEXPERIMENT=simd taskset --cpu-list 16 go1.27rc2 test -bench='Sum\/.*\/n=1000000$' .<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u044f\u0434\u0440\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar4<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd \u043a scalar<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">P, 6,0 \u0413\u0413\u0446<\/p>\n<\/td>\n<td>\n<p align=\"left\">352 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">110 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">68 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">5,2x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">E, 4,4 \u0413\u0413\u0446<\/p>\n<\/td>\n<td>\n<p align=\"left\">684 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">217 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">117 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">5,9x<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435: \u043d\u0435\u043f\u0438\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043d\u0430 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 &#8212; \u043b\u043e\u0442\u0435\u0440\u0435\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u043e\u043b\u0435\u043d \u0443\u0440\u043e\u043d\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u043d\u0430 E-\u044f\u0434\u0440\u043e \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u0430; \u0432 \u0447\u0443\u0436\u0438\u0445 \u0437\u0430\u043c\u0435\u0440\u0430\u0445 \u043f\u0438\u043d\u043e\u0432\u043a\u0430 \u0441\u0434\u0432\u0438\u0433\u0430\u043b\u0430 \u0447\u0438\u0441\u043b\u0430 <a href=\"https:\/\/strebkov.dev\/posts\/shard-your-locks\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0430 10-25%<\/a>. \u041c\u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e: \u043d\u0435\u043f\u0438\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u043b\u0438 \u0441 P-\u044f\u0434\u0440\u043e\u043c. \u0417\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u043e\u0435 \u0432\u0435\u0437\u0435\u043d\u0438\u0435 \u0432 CI \u044f \u0431\u044b \u043d\u0435 \u0441\u0442\u0430\u043b.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/751\/e18\/282\/751e18282574a39c1ba02dba7cd45e40.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/751\/e18\/282\/751e18282574a39c1ba02dba7cd45e40.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/751\/e18\/282\/751e18282574a39c1ba02dba7cd45e40.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0435: E-\u044f\u0434\u0440\u043e \u043d\u0430 \u0441\u043a\u0430\u043b\u044f\u0440\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0439 Mac, 684 \u043f\u0440\u043e\u0442\u0438\u0432 700 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0447\u0438\u043f\u043e\u0432. \u0417\u0430\u0442\u043e \u043d\u0430 SIMD \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 Mac \u0432 1,4 \u0440\u0430\u0437\u0430. \u0412\u043e\u0441\u0435\u043c\u044c \u043f\u043e\u043b\u043e\u0441 \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u044e\u0442 \u0434\u0430\u0436\u0435 \u0442\u043e, \u0447\u0442\u043e 256-\u0431\u0438\u0442\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e E-\u044f\u0434\u0440\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0438\u043b\u0438\u0442 \u043d\u0430 \u0434\u0432\u0435 128-\u0431\u0438\u0442\u043d\u044b\u0435: \u0442\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d Gracemont.<\/p>\n<p>\u0423 Mac \u043b\u043e\u0442\u0435\u0440\u0435\u044f \u0441\u0432\u043e\u044f. M3 Pro &#8212; \u0442\u043e\u0436\u0435 \u0433\u0438\u0431\u0440\u0438\u0434, 5 P-\u044f\u0434\u0435\u0440 \u0438 6 E-\u044f\u0434\u0435\u0440, \u043d\u043e <code>taskset<\/code> \u0432 macOS \u043d\u0435\u0442: \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e QoS-\u043a\u043b\u0430\u0441\u0441\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 <code>taskpolicy -c background<\/code> \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0444\u043e\u043d\u043e\u0432\u044b\u043c, \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0432\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u043d\u0430 E-\u044f\u0434\u0440\u0430. \u0412\u0435\u043a\u0442\u043e\u0440 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e, 717 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0442\u0438\u0432 173, \u0441\u043a\u0430\u043b\u044f\u0440 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a \u0436\u0435; \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 E-\u044f\u0434\u0440\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f ~4x. \u0422\u043e\u0442 \u0436\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, \u0442\u0430 \u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u0430, \u0434\u0440\u0443\u0433\u043e\u0439 QoS. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0448\u044c Go-\u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0444\u043e\u043d\u043e\u0432\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c &#8212; \u0432\u0441\u0435 \u0435\u0451 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u0435\u0434\u0443\u0442 \u043d\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u044b\u0445 \u044f\u0434\u0440\u0430\u0445.<\/p>\n<h3>\u0421\u0442\u0435\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u0438: i9 \u0443\u043f\u0451\u0440\u0441\u044f, Mac \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u043d\u0430 256 \u041c\u0411<\/h3>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b: \u043d\u0430 Mac \u0441\u0442\u0435\u043d\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b \u0434\u0430\u0436\u0435 \u043d\u0430 32 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430\u0445, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0436\u0430\u043b\u043e\u0441\u044c \u043e\u043a\u043e\u043b\u043e 4x. \u0418 \u043e\u0442\u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u043e\u0439 \u00ab\u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0440\u0435\u0430\u043b\u0435\u043d, \u043c\u0435\u0440\u044f\u0439 \u0441\u0430\u043c\u00bb, \u0447\u0435\u0441\u0442\u043d\u043e\u0439, \u043d\u043e \u0431\u0435\u0437\u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0435\u0437\u043e, \u0433\u0434\u0435 \u0441\u0442\u0435\u043d\u0443 \u0432\u0438\u0434\u043d\u043e. \u0422\u043e\u0442 \u0436\u0435 \u0431\u0435\u043d\u0447 \u043d\u0430 i9 \u0441 \u0440\u043e\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar4<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd \u043a scalar<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">352 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">111 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">68 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">5,1x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">8 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">32 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,89 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,30 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,03 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,8x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">32 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">128 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">11,7 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">6,23 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">5,44 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,1x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">64 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">256 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">23,4 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">12,6 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">10,8 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,2x<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>4 \u041c\u0411 \u0436\u0438\u0432\u0443\u0442 \u0432 \u043a\u044d\u0448\u0435: \u0442\u0430\u043c SIMD \u043a\u0430\u0447\u0430\u0435\u0442 57 \u0413\u0411\/\u0441 \u0438 \u0434\u0430\u0451\u0442 \u0441\u0432\u043e\u0438 5x. 32 \u041c\u0411 \u0443\u0436\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u0430, \u0432\u0435\u0434\u044c L3 \u0443 14900KF \u043a\u0430\u043a \u0440\u0430\u0437 36 \u041c\u0411, \u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0432\u0434\u0432\u043e\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u0438 \u0432\u0441\u0451 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f: SIMD \u0432\u044b\u0436\u0438\u043c\u0430\u0435\u0442 ~24 \u0413\u0411\/\u0441, scalar4 \u043e\u043a\u043e\u043b\u043e 20, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0442\u0430\u0435\u0442 \u0434\u043e \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432. \u041a\u0430\u043a\u0438\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c, \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0432\u0430\u0436\u043d\u043e: \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u044e\u0442 \u043f\u043e\u0434\u044a\u0435\u0437\u0436\u0430\u0442\u044c, \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e \u044f\u0434\u0440\u043e \u0438\u0437 DRAM \u043d\u0435 \u0432\u044b\u0442\u044f\u043d\u0435\u0442.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0436\u0430\u0442\u044c Mac \u0434\u043e \u0442\u0435\u0445 \u0436\u0435 256 \u041c\u0411. \u0421\u0432\u0435\u0436\u0438\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0430 M3 Pro:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar<\/p>\n<\/th>\n<th>\n<p align=\"left\">scalar4<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd<\/p>\n<\/th>\n<th>\n<p align=\"left\">simd \u043a scalar<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">776 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">346 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">173 \u00b5s<\/p>\n<\/td>\n<td>\n<p align=\"left\">4,5x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">8 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">32 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">6,0 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,83 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,43 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">4,2x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">32 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">128 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">24,1 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">11,0 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">5,46 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">4,4x<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">64 \u043c\u043b\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">256 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">46,3 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">22,0 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">10,9 ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">4,3x<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u0442\u0435\u043d\u044b \u043d\u0435\u0442. \u0422\u0435 \u0436\u0435 4,2-4,5x \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435, \u0438 SIMD \u0447\u0442\u043e \u0438\u0437 \u043a\u044d\u0448\u0430, \u0447\u0442\u043e \u0438\u0437 DRAM \u043a\u0430\u0447\u0430\u0435\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 ~23 \u0413\u0411\/\u0441.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/54e\/f73\/d07\/54ef73d07c705a2293ef14628ec08242.png\" width=\"2340\" height=\"1320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/54e\/f73\/d07\/54ef73d07c705a2293ef14628ec08242.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/54e\/f73\/d07\/54ef73d07c705a2293ef14628ec08242.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432\u0438\u0434\u043d\u0430 \u043f\u043e \u0446\u0438\u0444\u0440\u0430\u043c, \u0430 \u043d\u0435 \u043f\u043e \u0432\u0435\u0440\u0435 \u0432 \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u0448\u0438\u043d\u0443. Apple \u0437\u0430\u044f\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f M3 Pro <a href=\"https:\/\/support.apple.com\/en-us\/117736\" rel=\"noopener noreferrer nofollow\">150 \u0413\u0411\/\u0441<\/a> \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043c\u043e\u0439 i9 \u0432 \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u0435 DDR5 \u0443\u043c\u0435\u0435\u0442 ~90, \u043d\u043e \u0434\u0435\u043b\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u043e\u043b\u043e\u0441\u0435. \u041c\u043e\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0435\u0441\u0442 ~23 \u0413\u0411\/\u0441 &#8212; Mac \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0432\u043e\u0437\u0438\u0442 \u0438\u0437 DRAM \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u0433\u0430\u044f\u0441\u044c, \u0438 \u043a\u043e\u0434 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u043d\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u0430 i9 \u0430\u043f\u043f\u0435\u0442\u0438\u0442 SIMD \u0432 \u043a\u044d\u0448\u0435 &#8212; 57 \u0413\u0411\/\u0441, \u0430 DRAM \u043e\u0442\u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u044f\u0434\u0440\u0443 \u0442\u043e\u043b\u044c\u043a\u043e ~24: \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439 L3 \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0432\u043e\u0437.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043f\u0440\u0435\u0436\u043d\u0438\u0439, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0441 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e\u043c \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d: \u043c\u0435\u0440\u044f\u0439 \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0438 \u0441\u0432\u043e\u0451\u043c \u0436\u0435\u043b\u0435\u0437\u0435. \u0417\u0430 \u00ab5x\u00bb \u0438 \u00ab2x\u00bb \u0441\u0442\u043e\u0438\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u041d\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434 \u0434\u0435\u0440\u0436\u0438\u0442 4x \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u0442\u044b, \u0430 \u043d\u0435 \u0432 \u0431\u0430\u0439\u0442\u044b.<\/p>\n<h3>\u0413\u0434\u0435 SIMD \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0447\u0435\u0441\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c. SIMD &#8212; \u043d\u0435 \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e\u00bb, \u0438 \u043c\u0435\u0441\u0442, \u0433\u0434\u0435 \u043e\u043d \u043d\u0435 \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f, \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u0441 \u0434\u0432\u0443\u043c\u044f \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u041c\u0435\u043b\u043a\u0438\u0435 \u0441\u043b\u0430\u0439\u0441\u044b. \u0423 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0435\u0441\u0442\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u0432\u0445\u043e\u0434\u0430: \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440, \u0441\u0432\u043e\u0434 \u043f\u043e\u043b\u043e\u0441, \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u0445\u0432\u043e\u0441\u0442. \u041d\u0430 \u0442\u044b\u0441\u044f\u0447\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 i9 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 152 ns \u0443 simd \u043f\u0440\u043e\u0442\u0438\u0432 117 ns \u0443 scalar4, \u0440\u0443\u0447\u043d\u044b\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430. \u041d\u0430 Mac, \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u0430, simd \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u043b \u0438 \u0442\u0430\u043c: 156 \u043f\u0440\u043e\u0442\u0438\u0432 313 ns \u0443 scalar4. \u0414\u0430\u0436\u0435 scalar8 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0435 \u0434\u043e\u0433\u043d\u0430\u043b: 176 \u043f\u0440\u043e\u0442\u0438\u0432 166 ns \u0432 \u0441\u0432\u0435\u0436\u0435\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435. \u041e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0434\u0435-\u0442\u043e \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f, \u0433\u0434\u0435-\u0442\u043e \u043d\u0435\u0442; \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u0440\u0430 \u043d\u0435 \u0443\u0433\u0430\u0434\u0430\u0435\u0448\u044c.<\/p>\n<p>\u041e\u0431\u0432\u044f\u0437\u043a\u0430 \u0434\u043e\u0440\u043e\u0436\u0430\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0441\u043d\u0430\u0440\u044f\u0434\u0443 \u0431\u044b\u043b \u0435\u0449\u0451 \u0432 <a href=\"https:\/\/t.me\/bascodeCh\/105\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043f\u043e\u0441\u0442\u0435<\/a> &#8212; \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u0430\u044f \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u044c \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 i9, \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e 768 float32, \u043a\u043e\u0434 \u043d\u0430 archsimd (<a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\/blob\/main\/1.27rc2\/cosine_amd64.go\" rel=\"noopener noreferrer nofollow\">cosine_amd64.go<\/a>). \u0421\u043a\u0430\u043b\u044f\u0440 \u0432\u044b\u0434\u0430\u043b 332 ns \u043d\u0430 \u043f\u0430\u0440\u0443, \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 FMA \u0438 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0443\u043c\u043c\u0443 &#8212; 341 ns. \u041a\u043e\u0441\u0438\u043d\u0443\u0441 \u0442\u0430\u0449\u0438\u0442 \u0442\u0440\u0438 \u0441\u0443\u043c\u043c\u044b \u0437\u0430 \u043f\u0440\u043e\u0445\u043e\u0434 &#8212; \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0434\u0432\u0435 \u043d\u043e\u0440\u043c\u044b &#8212; \u0438 \u0438\u0445 \u0441\u0432\u043e\u0434 \u043f\u043b\u044e\u0441 \u0445\u0432\u043e\u0441\u0442 \u0441\u044a\u0435\u0434\u0430\u044e\u0442 \u0432\u0441\u044e \u0448\u0438\u0440\u0438\u043d\u0443. \u0427\u0438\u0441\u0442\u044b\u0439 dot product \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432 1,6 \u0440\u0430\u0437\u0430, \u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u043e\u043a\u0443\u043f\u0438\u043b\u0441\u044f \u043b\u0438\u0448\u044c \u043d\u0430 12 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432: 1,8 \u00b5s \u043f\u0440\u043e\u0442\u0438\u0432 5,1.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0430\u043c \u043d\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442. \u00ab\u041f\u0438\u0448\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u00bb &#8212; \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e Go, \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435: \u0430\u0432\u0442\u043e\u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0443\u043c\u043c\u044b float \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0441 \u043d\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0422\u0430\u043c, \u0433\u0434\u0435 \u0430\u0432\u0442\u043e\u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c (LLVM, GCC), \u043e\u043d\u0430 \u0445\u0440\u0443\u043f\u043a\u0430\u044f: \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u043d\u0435\u043c\u0443 <code>break<\/code> \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u043b\u0447\u0430 \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f; \u0425\u0430\u0448\u0438\u043c\u043e\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u00abvery poor at it\u00bb. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0451 \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>\u0425\u0432\u043e\u0441\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 &#8212; \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u043e\u043d\u043a\u0438\u0445 \u0431\u0430\u0433\u043e\u0432. \u0415\u0441\u043b\u0438 \u0434\u043b\u0438\u043d\u0430 \u043d\u0435 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e; \u0443 \u043d\u0430\u0441 \u044d\u0442\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439 <code>for<\/code> \u0432 \u043a\u043e\u043d\u0446\u0435. \u0421\u043e\u0431\u043b\u0430\u0437\u043d \u0437\u0430\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430: <code>Store<\/code> \u0432 \u0447\u0443\u0436\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u043d\u0438\u043a\u043e\u0439, \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u043f\u043e\u0440\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0425\u0432\u043e\u0441\u0442 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043e\u043c, \u0438 \u0442\u043e\u0447\u043a\u0430.<\/p>\n<p>\u0413\u0440\u0430\u043d\u0438\u0446\u0430 Go \u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u044a\u0435\u0441\u0442\u044c \u0432\u0435\u0441\u044c \u0432\u044b\u0438\u0433\u0440\u044b\u0448. \u042d\u0442\u043e \u043f\u0440\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0443\u0442\u044c \u0441 \u0440\u0443\u0447\u043d\u044b\u043c\u0438 asm-\u0432\u0441\u0442\u0430\u0432\u043a\u0430\u043c\u0438. \u0412 \u043e\u0434\u043d\u043e\u043c <a href=\"https:\/\/github.com\/golang\/go\/issues\/77647\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438<\/a> \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u043b \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0414\u041d\u041a, \u0438 SIMD-\u0432\u0435\u0440\u0441\u0438\u044f \u0432\u044b\u0448\u043b\u0430 \u0432 \u0440\u0430\u0437\u044b \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u0440\u0430\u0437, \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 Go-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440-Go \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u043b\u0430\u0442\u0438\u043b \u0437\u0430 <code>VZEROUPPER<\/code>; AVX2-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 SSSE3, \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0441\u043e\u0436\u0440\u0430\u043b\u0438 \u0432\u0441\u044e \u0448\u0438\u0440\u0438\u043d\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 <code>simd<\/code> \u044d\u0442\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442: \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 Go-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0438\u043d\u0442\u0440\u0438\u043d\u0437\u0438\u043a\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438. \u041d\u043e \u0443\u0440\u043e\u043a \u043e\u0431\u0449\u0438\u0439: \u043c\u0435\u043b\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u0433\u043e\u0440\u044f\u0447\u0435\u043c \u0446\u0438\u043a\u043b\u0435 \u0442\u0435\u0440\u044f\u0435\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u0445; \u0441\u043c. \u043f\u0443\u043d\u043a\u0442 \u043f\u0440\u043e \u043c\u0435\u043b\u043a\u0438\u0435 \u0441\u043b\u0430\u0439\u0441\u044b.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u0431\u0435\u0437 \u0442\u0435\u0431\u044f \u043d\u0435\u043f\u043b\u043e\u0445. \u0412 \u0442\u043e\u043c \u0436\u0435 HN-\u0442\u0440\u0435\u0434\u0435 \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u043b\u0438: \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0445\u0432\u0430\u043b\u0451\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0443\u0447\u043d\u043e\u0433\u043e SIMD \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0430\u043c \u0432\u044b\u0442\u044f\u043d\u0443\u043b 77% \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u044c, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043b\u0438 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0438\u043d\u043e\u0433\u0434\u0430 \u0441 \u043f\u0430\u0440\u043e\u0439 \u043b\u0438\u0448\u043d\u0438\u0445 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<h3>\u0411\u0440\u0430\u0442\u044c \u043b\u0438 \u044d\u0442\u043e \u0432 \u043f\u0440\u043e\u0434 \u0441\u0435\u0439\u0447\u0430\u0441<\/h3>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 &#8212; \u043d\u0435\u0442, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u00ab\u043d\u0435\u0442\u00bb \u0434\u0432\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439.<\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f: Go 1.27 \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u0448\u0435\u043b. \u042f \u0433\u043e\u043d\u044f\u044e go1.27rc2, \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0436\u0434\u0443\u0442 \u0432 \u0430\u0432\u0433\u0443\u0441\u0442\u0435 2026-\u0433\u043e (\u0434\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e); \u0432\u0441\u0451, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043d\u0438\u043c\u043a\u043e\u043c release candidate.<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f: \u00ab\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439\u00bb \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e. \u0424\u043b\u0430\u0433 <code>GOEXPERIMENT=simd<\/code> \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d; \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c SIMD \u043d\u0430 amd64 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (<a href=\"https:\/\/github.com\/golang\/go\/issues\/78979\" rel=\"noopener noreferrer nofollow\">#78979<\/a>) \u0432\u0438\u0441\u0438\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Hold, \u0432 1.27 \u043e\u043d\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e. API \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e: \u0443 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 <code>ShiftAll{Left,Right}<\/code> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441 <code>uint64<\/code> \u043d\u0430 <code>uint8<\/code>, \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e 1.26 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f. \u041d\u0430 arm64 \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e 128-\u0431\u0438\u0442\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b. \u0410 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 <code>archsimd<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043b\u044f\u0441\u043e\u043a: marselester <a href=\"https:\/\/marselester.com\/go-archsimd-preview.html\" rel=\"noopener noreferrer nofollow\">\u043b\u043e\u0432\u0438\u043b \u043b\u0438\u0448\u043d\u0438\u0435 bounds-check<\/a> \u0438 \u0432\u044b\u0447\u0438\u0449\u0430\u043b \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 <code>unsafe<\/code>.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0438\u0434\u0435\u0438 \u043f\u043e\u0434 \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c &#8212; \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435, \u0433\u0434\u0435 \u043f\u0430\u043c\u044f\u0442\u044c \u0431\u044c\u0451\u0442 \u043f\u043e \u0440\u0443\u043a\u0430\u043c &#8212; \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0443\u0442 \u0438 \u0440\u0435\u043b\u0438\u0437, \u0438 \u0441\u043c\u0435\u043d\u0443 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440.<\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>\u041a SIMD \u0441\u0442\u043e\u0438\u0442 \u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0442\u0440\u0438 \u0432\u0435\u0449\u0438: \u0435\u0441\u0442\u044c \u0433\u043e\u0440\u044f\u0447\u0438\u0439 \u0443\u0437\u043a\u0438\u0439 \u0446\u0438\u043a\u043b; \u0443\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e &#8212; \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0430 \u043d\u0435 \u043f\u0430\u043c\u044f\u0442\u044c; \u0438 \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e, \u0430 \u043d\u0435 \u0434\u043e\u0434\u0443\u043c\u0430\u043d\u043e.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d \u044f \u0431\u044b \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b \u00ab\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e\u00bb. \u041d\u0430 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u043c CPU \u043c\u0435\u0440\u044f\u0439 \u0441 \u043f\u0438\u043d\u043e\u0432\u043a\u043e\u0439, \u0438\u043d\u0430\u0447\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0448\u044c \u043f\u043e\u0433\u043e\u0434\u0443. \u041d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u044d\u0448\u0430: \u043c\u043e\u0438 5x \u0438 2,2x \u0432\u044b\u0434\u0430\u043b \u043e\u0434\u0438\u043d \u043a\u043e\u0434 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u0418 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u0433\u0434\u0435 \u043a\u043e\u0434\u0443 \u0436\u0438\u0442\u044c: \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0430 \u0442\u044b\u0441\u044f\u0447\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043a\u0443\u043f\u0430\u043b\u0441\u044f \u043d\u0430 Mac \u0438 \u043d\u0435 \u043e\u043a\u0443\u043f\u0430\u043b\u0441\u044f \u043d\u0430 i9, \u0430 \u0441\u0442\u0435\u043d\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e i9.<\/p>\n<p>\u0426\u0438\u0444\u0440\u044b \u043c\u0435\u0436\u0434\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0442\u0441\u044f &#8212; \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u043e\u0434, \u0438 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c Go 1.27. \u041e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u043e\u043a \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u0432 Neon \u0438 AVX2, \u0441\u0430\u043c\u0430 \u0432\u044b\u0431\u0440\u0430\u043b\u0430 \u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0430 \u043d\u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430. \u0412 \u043e\u0431\u0437\u043e\u0440\u0435 1.26 \u044f \u043f\u0438\u0441\u0430\u043b \u00ab\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 ARM64 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0435\u0449\u0451 \u0434\u043e \u0440\u0435\u043b\u0438\u0437\u0430. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0422\u0430\u043c, \u0433\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u0435 \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f, \u043b\u0443\u0447\u0448\u0438\u0439 \u00abSIMD\u00bb &#8212; \u0440\u0443\u0447\u043d\u044b\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b: \u0447\u0435\u0442\u044b\u0440\u0435 \u0448\u0442\u0443\u043a\u0438 \u043d\u0430 i9 \u0434\u0430\u044e\u0442 3x \u0438\u0437 5, \u0432\u043e\u0441\u0435\u043c\u044c \u043d\u0430 M3 Pro \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e. \u0418 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043b\u044e\u0431\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c.<\/p>\n<p>\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u0438 \u0431\u0435\u043d\u0447\u0438 \u0441 \u043e\u0431\u0435\u0438\u0445 \u043c\u0430\u0448\u0438\u043d \u043b\u0435\u0436\u0430\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\" rel=\"noopener noreferrer nofollow\">dsbasko\/sandbox-simd<\/a>: \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439, \u0441\u0442\u0430\u0432\u044c go1.27rc2, \u0433\u043e\u043d\u044f\u0439 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0436\u0435\u043b\u0435\u0437\u0435. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u0441\u0435 \u0440\u0443\u0447\u043a\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0432 README. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0446\u0438\u0444\u0440\u044b \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442. \u0412\u0435\u0442\u043a\u0443 <code>@simd512<\/code> \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0438\u0432\u043e\u0439 AVX-512 (\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 Xeon, AMD Zen 4 \u0438 5) \u0438 \u0441\u0432\u0435\u0436\u0438\u0435 M4 \u0446\u0435\u043d\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e. \u0427\u0442\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/golang\/go\/issues\/73787\" rel=\"noopener noreferrer nofollow\">proposal #73787<\/a> \u0438 <a href=\"https:\/\/github.com\/golang\/go\/issues\/78902\" rel=\"noopener noreferrer nofollow\">#78902<\/a>: \u0434\u0438\u0437\u0430\u0439\u043d \u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0440\u0443\u043a;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mitchellh.com\/writing\/everyone-should-know-simd\" rel=\"noopener noreferrer nofollow\">\u00abEveryone Should Know SIMD\u00bb<\/a> Mitchell Hashimoto: \u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u044d\u0441\u0441\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f, \u0438 \u043b\u0443\u0447\u0448\u0435\u0435 \u043e\u0431\u0449\u0435\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u043c\u0443;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0430\u043a\u0435\u0442 <code>simd\/archsimd<\/code>, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438, \u0430 \u043d\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h3>\n<ul>\n<li>\n<p>\u041a\u043e\u0434 \u0438 \u0431\u0435\u043d\u0447\u0438 \u0441\u0442\u0430\u0442\u044c\u0438: <a href=\"https:\/\/github.com\/dsbasko\/sandbox-simd\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/dsbasko\/sandbox-simd<\/a><\/p>\n<\/li>\n<li>\n<p>Go 1.27 release notes \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438: <a href=\"https:\/\/go.dev\/doc\/go1.27\" rel=\"noopener noreferrer nofollow\">https:\/\/go.dev\/doc\/go1.27<\/a> , <a href=\"https:\/\/go.dev\/dl\/\" rel=\"noopener noreferrer nofollow\">https:\/\/go.dev\/dl\/<\/a><\/p>\n<\/li>\n<li>\n<p>Go 1.26 release notes \u0438 \u0431\u043b\u043e\u0433: <a href=\"https:\/\/go.dev\/doc\/go1.26\" rel=\"noopener noreferrer nofollow\">https:\/\/go.dev\/doc\/go1.26<\/a> , <a href=\"https:\/\/go.dev\/blog\/go1.26\" rel=\"noopener noreferrer nofollow\">https:\/\/go.dev\/blog\/go1.26<\/a><\/p>\n<\/li>\n<li>\n<p>Proposals: \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/github.com\/golang\/go\/issues\/73787\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/golang\/go\/issues\/73787<\/a> , <a href=\"https:\/\/github.com\/golang\/go\/issues\/78902\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/golang\/go\/issues\/78902<\/a> ; \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <a href=\"https:\/\/github.com\/golang\/go\/issues\/78979\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/golang\/go\/issues\/78979<\/a><\/p>\n<\/li>\n<li>\n<p>Mitchell Hashimoto, \u00abEveryone Should Know SIMD\u00bb: <a href=\"https:\/\/mitchellh.com\/writing\/everyone-should-know-simd\" rel=\"noopener noreferrer nofollow\">https:\/\/mitchellh.com\/writing\/everyone-should-know-simd<\/a><\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 Hacker News: <a href=\"https:\/\/news.ycombinator.com\/item?id=49010648\" rel=\"noopener noreferrer nofollow\">https:\/\/news.ycombinator.com\/item?id=49010648<\/a><\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 Go \u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430: <a href=\"https:\/\/github.com\/golang\/go\/issues\/77647\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/golang\/go\/issues\/77647<\/a><\/p>\n<\/li>\n<li>\n<p>marselester, \u0440\u0430\u0437\u0431\u043e\u0440 archsimd: <a href=\"https:\/\/marselester.com\/go-archsimd-preview.html\" rel=\"noopener noreferrer nofollow\">https:\/\/marselester.com\/go-archsimd-preview.html<\/a><\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 AVX-512 \u043d\u0430 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0445 Intel: <a href=\"https:\/\/www.anandtech.com\/show\/17047\/the-intel-12th-gen-core-i912900k-review-hybrid-performance-brings-hybrid-complexity\/2\" rel=\"noopener noreferrer nofollow\">https:\/\/www.anandtech.com\/show\/17047\/the-intel-12th-gen-core-i912900k-review-hybrid-performance-brings-hybrid-complexity\/2<\/a> , <a href=\"https:\/\/www.tomshardware.com\/news\/intel-bios-update-disables-alder-lake-avx-512\" rel=\"noopener noreferrer nofollow\">https:\/\/www.tomshardware.com\/news\/intel-bios-update-disables-alder-lake-avx-512<\/a> ; \u0445\u0440\u043e\u043d\u0438\u043a\u0430 \u0438 \u0431\u0430\u0442\u0447\u0438: <a href=\"https:\/\/github.com\/zingaburga\/alderlake_avx512\/wiki\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/zingaburga\/alderlake_avx512\/wiki<\/a> ; die shots 13900K: <a href=\"https:\/\/www.tomshardware.com\/news\/core-i9-13900k-uncovered-in-new-die-shots\" rel=\"noopener noreferrer nofollow\">https:\/\/www.tomshardware.com\/news\/core-i9-13900k-uncovered-in-new-die-shots<\/a><\/p>\n<\/li>\n<li>\n<p>Intel SDE (\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440): <a href=\"https:\/\/www.intel.com\/content\/www\/us\/en\/download\/684897\/intel-software-development-emulator.html\" rel=\"noopener noreferrer nofollow\">https:\/\/www.intel.com\/content\/www\/us\/en\/download\/684897\/intel-software-development-emulator.html<\/a> ; Go-\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 AVX-512 \u043f\u043e\u0434 SDE: <a href=\"https:\/\/github.com\/golang\/go\/issues\/79931\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/golang\/go\/issues\/79931<\/a><\/p>\n<\/li>\n<li>\n<p>\u0420\u0443\u0447\u043a\u0430 GODEBUG=simd \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043f\u0430\u043a\u0435\u0442\u0430: <a href=\"https:\/\/go.googlesource.com\/go\/+\/refs\/heads\/master\/src\/simd\/midway_common.go\" rel=\"noopener noreferrer nofollow\">https:\/\/go.googlesource.com\/go\/+\/refs\/heads\/master\/src\/simd\/midway_common.go<\/a><\/p>\n<\/li>\n<li>\n<p>\u041c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: Golden Cove <a href=\"https:\/\/chipsandcheese.com\/p\/popping-the-hood-on-golden-cove\" rel=\"noopener noreferrer nofollow\">https:\/\/chipsandcheese.com\/p\/popping-the-hood-on-golden-cove<\/a> , Gracemont <a href=\"https:\/\/chipsandcheese.com\/p\/gracemont-revenge-of-the-atom-cores\" rel=\"noopener noreferrer nofollow\">https:\/\/chipsandcheese.com\/p\/gracemont-revenge-of-the-atom-cores<\/a> , Apple M1 Firestorm <a href=\"https:\/\/dougallj.github.io\/applecpu\/firestorm-simd.html\" rel=\"noopener noreferrer nofollow\">https:\/\/dougallj.github.io\/applecpu\/firestorm-simd.html<\/a><\/p>\n<\/li>\n<li>\n<p>\u041f\u0438\u043d\u043e\u0432\u043a\u0430 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u043d\u0430 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0445 CPU: <a href=\"https:\/\/strebkov.dev\/posts\/shard-your-locks\/\" rel=\"noopener noreferrer nofollow\">https:\/\/strebkov.dev\/posts\/shard-your-locks\/<\/a><\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u043c\u044f\u0442\u044c Apple M3 Pro (150 \u0413\u0411\/\u0441, \u0441\u043f\u0435\u043a\u0430 MacBook Pro 14&#8243;): <a href=\"https:\/\/support.apple.com\/en-us\/117736\" rel=\"noopener noreferrer nofollow\">https:\/\/support.apple.com\/en-us\/117736<\/a><\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0437\u043e\u0440\u044b Go 1.26 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435: \u043c\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/articles\/995906\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/articles\/995906\/<\/a> , Avito <a href=\"https:\/\/habr.com\/ru\/companies\/avito\/articles\/1000616\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/companies\/avito\/articles\/1000616\/<\/a><\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0439 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043f\u043e\u0441\u0442 \u0441 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u043e\u0439 \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u044c\u044e \u043d\u0430 archsimd (\u0437\u0430\u043c\u0435\u0440\u044b \u043d\u0430 i9-14900KF): <a href=\"https:\/\/t.me\/bascodeCh\/105\" rel=\"noopener noreferrer nofollow\">https:\/\/t.me\/bascodeCh\/105<\/a><\/p>\n<\/li>\n<\/ul>\n<\/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=\"https:\/\/habr.com\/ru\/articles\/1062972\/\">https:\/\/habr.com\/ru\/articles\/1062972\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0414\u044f\u0434\u044f \u0425\u0430\u0448\u0438\u043c\u043e\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f. \u0420\u0435\u0447\u044c \u043f\u0440\u043e \u0435\u0433\u043e \u044d\u0441\u0441\u0435 \u00abEveryone Should Know SIMD\u00bb: SIMD \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a; \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u0430\u043c \u043d\u0430 Zig, \u043d\u043e \u0441\u0443\u0442\u044c \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442. \u041c\u043e\u0439 \u044f\u0437\u044b\u043a &#8212; Go, \u0438 \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u043c \u043e\u0431\u0437\u043e\u0440\u0435 Go 1.26 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e \u043d\u043e\u0432\u044b\u0439 SIMD-\u043f\u0430\u043a\u0435\u0442 \u0433\u0440\u0443\u0441\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443: \u00ab\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 ARM64 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445\u00bb.\u0411\u0443\u0434\u0443\u0449\u0435\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u044f \u0436\u0434\u0430\u043b: \u0432 go1.27rc2 \u043f\u0430\u043a\u0435\u0442 simd \u0441\u0442\u0430\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c, \u0438 \u043e\u0434\u0438\u043d Go-\u043a\u043e\u0434 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 Neon \u043d\u0430 Apple Silicon \u0438 \u0432 AVX2 \u043d\u0430 Intel. \u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043e\u0431\u0435 \u043c\u0430\u0448\u0438\u043d\u044b: Mac \u043d\u0430 M3 Pro, \u0433\u0434\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044d\u0442\u0438\u0445 \u0431\u0435\u043d\u0447\u0435\u0439, \u0438 Linux-\u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043d\u0430 i9-14900KF. \u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435: \u043e\u0434\u0438\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a, \u0434\u0432\u0430 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0434\u0432\u0435 \u043f\u0430\u0447\u043a\u0438 \u0437\u0430\u043c\u0435\u0440\u043e\u0432. \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u043e\u0439; \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043e\u043d \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 dsbasko\/sandbox-simd.TL;DR\u0412 Go 1.27 \u043f\u0430\u043a\u0435\u0442 simd \u0441\u0442\u0430\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Go, \u043e\u0434\u0438\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043d\u0430 arm64 \u0438 amd64. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u043e\u043c GOEXPERIMENT=simd.\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. Mac (M3 Pro): Neon, 4 \u043f\u043e\u043b\u043e\u0441\u044b float32, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f FADD.S4. i9-14900KF: AVX2, 8 \u043f\u043e\u043b\u043e\u0441, VADDPS, \u043f\u043b\u044e\u0441 \u043c\u0451\u0440\u0442\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 AVX-512 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435: Intel \u0432\u044b\u0436\u0433\u043b\u0430 \u0435\u0433\u043e \u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 12-14 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439. \u0412\u0435\u0442\u043a\u0443 \u044f \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b, \u0447\u0435\u0440\u0435\u0437 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440.\u0421\u0443\u043c\u043c\u0430 []float32: \u043d\u0430 Mac \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 4,2-4,5x \u043e\u0442 4 \u041a\u0411 \u0434\u043e 256 \u041c\u0411; \u0443 i9 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u043e\u0442 5x \u0432 \u043a\u044d\u0448\u0435 \u0434\u043e 2,2x \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 256 \u041c\u0411, \u0430 \u043d\u0430 \u0442\u044b\u0441\u044f\u0447\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0440\u0443\u0447\u043d\u044b\u043c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c.8 \u043f\u043e\u043b\u043e\u0441 \u043d\u0435 \u0434\u0430\u043b\u0438 8x, \u0438 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0443\u0440\u043e\u043a: \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u0440\u0430\u0437\u0440\u044b\u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0430 \u043d\u0435 \u0448\u0438\u0440\u0438\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430.Go \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u043d\u0435 \u0443\u043c\u0435\u043b \u0432 SIMD. \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043c\u043e\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445SIMD &#8212; \u044d\u0442\u043e Single Instruction, Multiple Data: \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u0430\u0447\u043a\u0443. \u0418\u0434\u0435\u044f \u0441\u0442\u0430\u0440\u0430\u044f, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0435\u0441\u0442\u044c \u0434\u0430\u0432\u043d\u043e, \u043d\u043e \u0432 Go \u0434\u043e \u043d\u0438\u0445 \u0431\u044b\u043b\u043e \u043d\u0435 \u0434\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f.\u0414\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u043b\u044c. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c: \u043f\u0438\u0448\u0435\u0448\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430 C++ \u0441 \u0438\u043d\u0442\u0440\u0438\u043d\u0437\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0448\u044c, \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0448\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0448\u044c \u0435\u0433\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 Go-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u041e\u0434\u0438\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u043f\u0438\u0441\u0430\u043b \u0444\u0438\u043d\u0430\u043b \u044d\u0442\u043e\u0433\u043e \u043a\u0432\u0435\u0441\u0442\u0430 \u0432 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 Hacker News \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u00abI never got my function to work in go despite the C++ code working fine\u2026 not really a production ready option for Go\u00bb (HN). \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 C++ \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0430\u0431\u043e\u0447\u0438\u0439 Go.\u0412 Go 1.26 (\u0444\u0435\u0432\u0440\u0430\u043b\u044c 2026) \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 simd\/archsimd, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 amd64. \u0412\u0441\u0435, \u043a\u0442\u043e \u043d\u0430 Apple Silicon, \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0437\u0430 \u0431\u043e\u0440\u0442\u043e\u043c: \u0432 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u0444\u0438\u0447 1.26 \u043e\u0442 Avito \u0431\u043e\u043b\u044c \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u044f\u043c\u043e, \u00ab\u0434\u043b\u044f ARM \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443\u00bb. \u042f \u0432 \u0441\u0432\u043e\u0451\u043c \u043e\u0431\u0437\u043e\u0440\u0435 \u043e\u0442\u0434\u0435\u043b\u0430\u043b\u0441\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439 \u043f\u0440\u043e \u00ab\u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb. \u0410 \u0432 1.27 \u043f\u0440\u0438\u0435\u0445\u0430\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 simd, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0436\u0435\u043b\u0435\u0437\u043e \u0441\u0430\u043c; \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0445\u0440\u0430\u043d\u044f\u0442 proposal #73787 \u0438 #78902.\u0417\u0432\u0443\u0447\u0438\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e: \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e SIMD, \u0438 \u0432\u0434\u0440\u0443\u0433 \u0441\u0440\u0430\u0437\u0443 \u00ab\u043e\u0434\u0438\u043d \u043a\u043e\u0434 \u043d\u0430 \u0432\u0441\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b\u00bb. \u0422\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c, \u0438 \u0443 \u043c\u0435\u043d\u044f \u0434\u0432\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0432\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043b\u0438\u043a\u0431\u0435\u0437\u0430: \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430, \u0438 \u043a\u0443\u0434\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u0435 \u0432\u0441\u0442\u0430\u0451\u0442 SIMD. \u0411\u0435\u0437 \u043d\u0438\u0445 \u0446\u0438\u0444\u0440\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0444\u043e\u043a\u0443\u0441\u043e\u043c.\u041b\u0438\u043a\u0431\u0435\u0437: \u043a\u0430\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430\u0415\u0441\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u0442\u0430\u043a\u0442\u044b \u0434\u043b\u044f \u0442\u0435\u0431\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0431\u0443\u0434\u043d\u0438 &#8212; \u0441\u043c\u0435\u043b\u043e \u043b\u0438\u0441\u0442\u0430\u0439 \u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 go1.27rc2, \u0442\u0443\u0442 \u043b\u0438\u043a\u0431\u0435\u0437 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0436\u0435 Go \u043d\u0435 \u0441\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f.\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 Go. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 &#8212; \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0440\u043e\u0432\u043d\u044f \u00ab\u0432\u043e\u0437\u044c\u043c\u0438 \u0447\u0438\u0441\u043b\u043e \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438\u00bb, \u00ab\u0441\u043b\u043e\u0436\u0438 \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430\u00bb, \u00ab\u0441\u0440\u0430\u0432\u043d\u0438\u00bb, \u00ab\u043f\u043e\u043b\u043e\u0436\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u00bb. \u0427\u0442\u043e \u0431\u044b \u043d\u0438 \u0434\u0435\u043b\u0430\u043b \u0442\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0434\u043b\u044f \u044f\u0434\u0440\u0430 \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0442\u0430\u043a\u0438\u0445 \u0448\u0430\u0433\u043e\u0432.\u0421\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u0441\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445, \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u044f\u0434\u0440\u0430. \u0418\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0441\u0447\u0451\u0442 \u0438\u0434\u0451\u0442 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0437\u0430\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u043d\u0438 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u044f\u0434\u0440\u0430; \u043f\u043e\u0445\u043e\u0434 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u0438\u0445 \u0444\u043e\u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043d\u0430 \u0441\u043e\u0442\u043d\u0438 \u0442\u0430\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u0442 &#8212; \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0442\u0438\u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u0430\u043a\u0438\u0445 \u0442\u0438\u043a\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u044b; \u0437\u0430 \u0442\u0430\u043a\u0442 \u044f\u0434\u0440\u043e \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, 32 \u0438\u043b\u0438 64 \u0431\u0438\u0442\u0430. \u041d\u0430\u0448 \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u0446\u0438\u043a\u043b s += x \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0436\u0435\u043b\u0435\u0437\u0430: \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043b\u0430\u0439\u0441\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443-\u0441\u0443\u043c\u043c\u0435, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443. \u0412 \u043f\u0441\u0435\u0432\u0434\u043e\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u0445:LOAD  r1 &lt;- xs[i]   \/\/ \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043b\u0430\u0439\u0441\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440FADD  s  &lt;- s + r1  \/\/ \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443-\u0441\u0443\u043c\u043c\u0435\/\/ &#8230;\u0438 \u0442\u0430\u043a \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u041e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e &#8212; \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0439: \u0441\u043a\u0430\u043b\u044f\u0440 &#8212; \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0432\u0435\u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u0443, \u043f\u0430\u0447\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438\u043c\u044f sumScalar \u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0438\u0436\u0435.\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u043f\u043e\u043b\u043e\u0441\u044b &#8212; \u0432\u0441\u044f \u0441\u0443\u0442\u044c SIMD\u0420\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0432 \u044f\u0434\u0440\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0431\u043e\u0440, \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435. \u0422\u0430 \u0436\u0435 \u044f\u0447\u0435\u0439\u043a\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0448\u0438\u0440\u0435: \u0443 Neon \u043d\u0430 Apple Silicon 128 \u0431\u0438\u0442. float32 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 32 \u0431\u0438\u0442\u0430, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u0430\u043a\u0438\u0445 \u0447\u0438\u0441\u043b\u0430 \u0432\u0441\u0442\u0430\u044e\u0442 \u0431\u043e\u043a \u043e \u0431\u043e\u043a. \u042d\u0442\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438, \u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 lanes.\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u0440\u0430\u0437\u0443 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043b [1, 2, 3, 4] \u0432 \u043e\u0434\u0438\u043d \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 [10, 20, 30, 40] \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u0434\u0430\u043b \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043b\u0435\u0436\u0438\u0442 [11, 22, 33, 44]. \u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u043e\u0439 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0420\u043e\u0432\u043d\u043e \u044d\u0442\u043e \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0435: Single Instruction, Multiple Data &#8212; \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445.\u0428\u0438\u0440\u0438\u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:\u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439\u0416\u0435\u043b\u0435\u0437\u043e\u0428\u0438\u0440\u0438\u043d\u0430float32 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044eNeonarm64, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Apple Silicon128 \u0431\u0438\u04424SSEamd64128 \u0431\u0438\u04424AVX2amd64256 \u0431\u0438\u04428AVX-512\u0447\u0430\u0441\u0442\u044c amd64512 \u0431\u0438\u044216\u041c\u043d\u0435 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438: Neon \u043d\u0430 Mac \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438 \u0438 AVX2 \u043d\u0430 i9 \u0441 \u0432\u043e\u0441\u0435\u043c\u044c\u044e. AVX-512 \u043d\u0430 \u043c\u043e\u0451\u043c i9-14900KF \u043d\u0435\u0442, \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u0442\u043e\u043f\u043e\u0432\u044b\u0439 \u043a\u0430\u043c\u0435\u043d\u044c \u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f: Intel \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0430 \u0435\u0433\u043e \u0443 \u0432\u0441\u0435\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043a\u0438. \u0417\u0430 \u044d\u0442\u0438\u043c \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e \u0434\u0432\u0430 \u0441\u043e\u0440\u0442\u0430 \u044f\u0434\u0435\u0440, \u0434\u043e\u0439\u0434\u0451\u043c \u0434\u043e \u043d\u0435\u0451 \u0443 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430.\u041f\u0440\u0430\u0432\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f: \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0441, \u0447\u0435\u043c \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043d\u0435 \u0441\u043b\u043e\u0436\u0438\u0442\u044c. \u0420\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u0435: Mitchell Hashimoto, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b Ghostty, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0434\u043b\u044f AVX2 \u043d\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 8x, \u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u00abmore like a 5x\u00bb. \u041a\u0443\u0434\u0430 \u0443\u0442\u0435\u043a\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0430, \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445.\u0418 \u044d\u0442\u043e \u043d\u0435 \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0430. \u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0447\u0438\u0442\u0430\u0435\u0448\u044c \u0441\u0442\u0430\u0442\u044c\u044e. Go \u0438\u043c\u0438 \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f: \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u0447\u0442\u0438 25 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a x86-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u043d\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e Go-\u043a\u043e\u0434\u0430 \u0434\u043e \u044d\u0442\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0431\u044b\u043b\u043e \u043d\u0435 \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f.SIMD &#8212; \u0444\u0438\u0447\u0430 \u0436\u0435\u043b\u0435\u0437\u0430, \u0430 \u043d\u0435 \u044f\u0437\u044b\u043a\u0430; \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0434\u043e\u0442\u044f\u043d\u0435\u0442\u0441\u044f \u043b\u0438 \u044f\u0437\u044b\u043a. \u0421 1.27 \u0434\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0449\u0443\u043f\u0430\u0435\u043c.\u0421\u0442\u0430\u0432\u0438\u043c go1.27rc2: \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0434\u043d\u0438 \u043d\u0430 macOS \u0438 Linux\u0421\u0442\u0430\u0432\u0438\u0442\u0441\u044f RC \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0443\u043b\u0447\u0435\u0439\u043d Go, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u043c \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c; \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445:go install golang.org\/dl\/go1.27rc2@latestgo1.27rc2 download\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c simd \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c. \u0418 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043b\u043e\u0431:imports simd: build constraints exclude all Go files in &#8230;\/src\/simd\u042d\u0442\u043e \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u0433\u0434\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0435\u0448\u0430\u044e\u0442, \u0447\u0442\u043e \u00abSIMD \u0432 Go \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00bb, \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u043a\u043b\u0430\u0434\u043a\u0443. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0430\u043a\u0435\u0442 \u0441\u043f\u0440\u044f\u0442\u0430\u043d \u0437\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u043b\u0430\u0433\u043e\u043c. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0448\u044c GOEXPERIMENT=simd, \u0438 \u0432\u0441\u0451 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f:GOEXPERIMENT=simd go1.27rc2 run .\u0424\u043b\u0430\u0433 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435, \u0438 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0430\u0445, \u0438 \u043f\u0440\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445. \u0417\u0430\u0431\u0443\u0434\u0435\u0448\u044c &#8212; \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u0442\u0430 \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e build constraints.\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0446\u0438\u043a\u043b: \u0441\u0443\u043c\u043c\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 float32 \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c, \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u043c. \u0412\u043e\u0442 \u043d\u0430\u0438\u0432\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0438\u0437 sum.go, \u0435\u0451 \u0438 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0437\u0430 \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u0441\u0447\u0451\u0442\u0430:\/\/ sum.gofunc sumScalar(xs []float32) float32 {var s float32for _, x := range xs {s += x}return s}\u0413\u043e\u043d\u0438\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u0430\u043c\u0438 \u0431\u0435\u043d\u0447\u0438 &#8212; \u0432 sum_test.go:GOEXPERIMENT=simd go1.27rc2 test -bench=&#8217;Sum\/Scalar$\/n=1000000$&#8217; -benchmem .\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e: go test \u0440\u0435\u0436\u0435\u0442 \u0435\u0433\u043e \u043f\u043e \u0441\u043b\u044d\u0448\u0430\u043c, \u043a\u0430\u0436\u0434\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u0430\u0442\u0447\u0438\u0442 \u0441\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u043c\u0435\u043d\u0438 BenchmarkSum\/Scalar\/n=1000000. \u041d\u0430\u043f\u0438\u0448\u0435\u0448\u044c \u043a\u043e\u0440\u043e\u0447\u0435, \u0432\u0440\u043e\u0434\u0435 -bench=Scalar\/n=1000000, \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c PASS \u0441 \u043d\u0443\u043b\u0451\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f. \u041e\u0431 \u044d\u0442\u043e\u0442 \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u0439 PASS \u044f \u0438 \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u043b\u0441\u044f, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f \u0431\u0435\u043d\u0447\u0438 \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443.\u0412\u044b\u0432\u043e\u0434 \u043d\u0430 Mac:## \u0412\u044b\u0432\u043e\u0434 \u043d\u0430 MacBenchmarkSum\/Scalar\/n=1000000-11    1604    697574 ns\/op    5734 MB\/s## \u041e\u043d \u0436\u0435 \u043d\u0430 i9BenchmarkSum\/Scalar\/n=1000000-32    3396    349010 ns\/op    11461.00 MB\/s\u0421\u0435\u043c\u044c\u0441\u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u0440\u0451\u0445\u0441\u043e\u0442 \u043f\u044f\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438: \u0434\u0435\u0441\u043a\u0442\u043e\u043f \u0432\u0434\u0432\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0435\u0449\u0451 \u0434\u043e \u0432\u0441\u044f\u043a\u043e\u0433\u043e SIMD, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0442\u0443\u0442 \u043d\u0435\u0442, P-\u044f\u0434\u0440\u043e i9 \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e 6 \u0413\u0413\u0446 \u0438 \u0431\u0435\u0440\u0451\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439. \u0421\u0443\u0444\u0444\u0438\u043a\u0441\u044b -11 \u0438 -32 \u0432 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 GOMAXPROCS \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d, \u0441\u0430\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439. \u0417\u0430\u043f\u0443\u0441\u0442\u0438 \u0443 \u0441\u0435\u0431\u044f &#8212; \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435, \u0442\u043e\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0434\u0440\u0443\u0433\u0438\u0435.\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440: \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434, \u043e\u0431\u0435 \u043c\u0430\u0448\u0438\u043d\u044b\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0441\u044e\u0434\u0443 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443. \u0417\u0430\u0432\u0435\u0441\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0438\u0434\u0442\u0438 \u043f\u043e \u0441\u043b\u0430\u0439\u0441\u0443 \u043a\u0443\u0441\u043a\u0430\u043c\u0438 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043a\u0443\u0441\u043a\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e. \u0412 \u043a\u043e\u043d\u0446\u0435 &#8212; \u0441\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0438 \u0434\u043e\u0431\u0438\u0442\u044c \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u0445\u0432\u043e\u0441\u0442. \u0412\u043e\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b:\/\/ sum.gofunc sumSIMD(xs []float32) float32 {var acc simd.Float32s      \/\/ \u0432\u0435\u043a\u0442\u043e\u0440-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0432\u0441\u0435 \u043f\u043e\u043b\u043e\u0441\u044b = 0w := acc.Len()             \/\/ \u0441\u043a\u043e\u043b\u044c\u043a\u043e float32 \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440i := 0for ; i+w &lt;= len(xs); i += w {acc = acc.Add(simd.LoadFloat32s(xs[i:])) \/\/ \u0441\u043b\u043e\u0436\u0438\u0442\u044c w \u0447\u0438\u0441\u0435\u043b \u0440\u0430\u0437\u043e\u043c}  \/\/ &#8230; \u0441\u0432\u043e\u0434 \u043f\u043e\u043b\u043e\u0441 \u0438 \u0445\u0432\u043e\u0441\u0442 &#8212; \u043d\u0438\u0436\u0435simd.Float32s &#8212; \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 float32 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043d\u0430\u043f\u0435\u0440\u0451\u0434 \u0434\u043b\u0438\u043d\u044b. LoadFloat32s \u0431\u0435\u0440\u0451\u0442 \u0438\u0437 \u0441\u043b\u0430\u0439\u0441\u0430 \u0440\u043e\u0432\u043d\u043e w \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0433\u0440\u0443\u0437\u0438\u0442 \u0438\u0445 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440, Add \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e, Len() \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043b\u0435\u0437\u043b\u043e. \u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: w \u043d\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u043c\u044b \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0435\u0451 \u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435: \u044d\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u0442\u044c\u0438.\u041f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0430 \u0432 acc \u043b\u0435\u0436\u0438\u0442 w \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u0441\u0443\u043c\u043c. \u0418\u0445 \u043d\u0430\u0434\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0435 \u0432\u043b\u0435\u0437\u0448\u0438\u0435 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440:\/\/ sum.go (\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 sumSIMD)lanes := make([]float32, w)acc.Store(lanes)           \/\/ \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043b\u0430\u0439\u0441var s float32for _, v := range lanes {  \/\/ \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439s += v}for ; i &lt; len(xs); i++ {   \/\/ \u0445\u0432\u043e\u0441\u0442: \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043a\u043e\u0440\u043e\u0447\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430s += xs[i]}return s}\u0427\u0435\u043c\u0443 \u0440\u0430\u0432\u0435\u043d w? \u0421\u043f\u0440\u043e\u0441\u0438 \u0443 \u043f\u0430\u043a\u0435\u0442\u0430:fmt.Println(simd.VectorBitSize(), simd.Float32s{}.Len())\/\/ Mac: 128 4\/\/ i9:  256 8\u041e\u0434\u0438\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043d\u0443\u044e \u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430; \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u043c runtimecheck_test.go. \u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 Mac:BenchmarkSum\/SIMD\/n=1000000-11    7308    163353 ns\/op    24486 MB\/s700 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 163: \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e, \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430. \u0422\u0435\u043f\u0435\u0440\u044c i9:BenchmarkSum\/SIMD\/n=1000000-32    17768    69508 ns\/op    57547.05 MB\/s349 \u0441\u0442\u0430\u043b\u0438&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-488548","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488548","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=488548"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488548\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}