Компиляция X64 Regular, AVX, AVX2, AVX512
Для всех вариантов предельное значение компиляции 536870898. (При этом при запуске возникают ошибки.)
Для всех вариантов предельное значение, при котором нет ошибок при исполнении 536860000.
Запустил с максимальным SIZE, по три раза:
X64 Regular: 16/sizeof(flt) KF 0 16:30:14.643 AVXtest (EURUSD,H1) Vector size: 4 float FQ 0 16:30:15.369 AVXtest (EURUSD,H1) 14227.67578125 base result OG 0 16:30:15.445 AVXtest (EURUSD,H1) 14226.1552734375 array result FP 0 16:30:15.743 AVXtest (EURUSD,H1) 14226.1552734375 vector result JE 0 16:30:15.743 AVXtest (EURUSD,H1) 287 base time, ms DO 0 16:30:15.743 AVXtest (EURUSD,H1) 76 array time, ms DK 0 16:30:15.743 AVXtest (EURUSD,H1) 298 vector time, ms RL 0 16:30:21.419 AVXtest (EURUSD,H1) Vector size: 4 float CH 0 16:30:22.150 AVXtest (EURUSD,H1) -9492.333984375 base result NM 0 16:30:22.226 AVXtest (EURUSD,H1) -9492.5576171875 array result DH 0 16:30:22.525 AVXtest (EURUSD,H1) -9492.5576171875 vector result HR 0 16:30:22.525 AVXtest (EURUSD,H1) 290 base time, ms DF 0 16:30:22.525 AVXtest (EURUSD,H1) 76 array time, ms HP 0 16:30:22.525 AVXtest (EURUSD,H1) 298 vector time, ms GE 0 16:30:26.226 AVXtest (EURUSD,H1) Vector size: 4 float RP 0 16:30:26.951 AVXtest (EURUSD,H1) 6692.3427734375 base result OF 0 16:30:27.028 AVXtest (EURUSD,H1) 6692.2900390625 array result LQ 0 16:30:27.326 AVXtest (EURUSD,H1) 6692.2900390625 vector result IH 0 16:30:27.326 AVXtest (EURUSD,H1) 288 base time, ms RL 0 16:30:27.326 AVXtest (EURUSD,H1) 76 array time, ms RN 0 16:30:27.326 AVXtest (EURUSD,H1) 298 vector time, ms avx: 32/sizeof(flt) EJ 0 16:31:02.467 AVXtest (EURUSD,H1) Vector size: 8 float MM 0 16:31:03.195 AVXtest (EURUSD,H1) 6811.158203125 base result DJ 0 16:31:03.247 AVXtest (EURUSD,H1) 6811.61181640625 array result GL 0 16:31:03.439 AVXtest (EURUSD,H1) 6811.61181640625 vector result HQ 0 16:31:03.439 AVXtest (EURUSD,H1) 289 base time, ms FS 0 16:31:03.439 AVXtest (EURUSD,H1) 52 array time, ms RG 0 16:31:03.439 AVXtest (EURUSD,H1) 191 vector time, ms IS 0 16:31:06.010 AVXtest (EURUSD,H1) Vector size: 8 float IF 0 16:31:06.739 AVXtest (EURUSD,H1) 4359.78076171875 base result RS 0 16:31:06.791 AVXtest (EURUSD,H1) 4359.43408203125 array result KE 0 16:31:06.983 AVXtest (EURUSD,H1) 4359.43408203125 vector result ON 0 16:31:06.983 AVXtest (EURUSD,H1) 289 base time, ms MJ 0 16:31:06.983 AVXtest (EURUSD,H1) 52 array time, ms HL 0 16:31:06.983 AVXtest (EURUSD,H1) 192 vector time, ms IH 0 16:31:09.907 AVXtest (EURUSD,H1) Vector size: 8 float LM 0 16:31:10.632 AVXtest (EURUSD,H1) -5756.41552734375 base result II 0 16:31:10.684 AVXtest (EURUSD,H1) -5757.03515625 array result QO 0 16:31:10.877 AVXtest (EURUSD,H1) -5757.03515625 vector result LG 0 16:31:10.877 AVXtest (EURUSD,H1) 287 base time, ms PQ 0 16:31:10.877 AVXtest (EURUSD,H1) 52 array time, ms IE 0 16:31:10.877 AVXtest (EURUSD,H1) 192 vector time, ms avx2: 32/sizeof(flt) HN 0 16:32:02.179 AVXtest (EURUSD,H1) Vector size: 8 float NK 0 16:32:02.908 AVXtest (EURUSD,H1) 2310.371826171875 base result LN 0 16:32:02.961 AVXtest (EURUSD,H1) 2310.376953125 array result KG 0 16:32:03.154 AVXtest (EURUSD,H1) 2310.376953125 vector result OM 0 16:32:03.154 AVXtest (EURUSD,H1) 290 base time, ms MG 0 16:32:03.154 AVXtest (EURUSD,H1) 52 array time, ms HS 0 16:32:03.154 AVXtest (EURUSD,H1) 192 vector time, ms DG 0 16:32:06.155 AVXtest (EURUSD,H1) Vector size: 8 float GQ 0 16:32:06.880 AVXtest (EURUSD,H1) 6267.859375 base result IG 0 16:32:06.932 AVXtest (EURUSD,H1) 6269.2490234375 array result JR 0 16:32:07.123 AVXtest (EURUSD,H1) 6269.2490234375 vector result LK 0 16:32:07.123 AVXtest (EURUSD,H1) 286 base time, ms RM 0 16:32:07.123 AVXtest (EURUSD,H1) 51 array time, ms OH 0 16:32:07.123 AVXtest (EURUSD,H1) 191 vector time, ms OM 0 16:32:10.900 AVXtest (EURUSD,H1) Vector size: 8 float HN 0 16:32:11.626 AVXtest (EURUSD,H1) -8199.912109375 base result CO 0 16:32:11.678 AVXtest (EURUSD,H1) -8199.361328125 array result QI 0 16:32:11.870 AVXtest (EURUSD,H1) -8199.361328125 vector result MP 0 16:32:11.870 AVXtest (EURUSD,H1) 287 base time, ms ED 0 16:32:11.870 AVXtest (EURUSD,H1) 52 array time, ms PF 0 16:32:11.870 AVXtest (EURUSD,H1) 192 vector time, ms avx512: 64/sizeof(flt) HQ 0 16:33:03.846 AVXtest (EURUSD,H1) Vector size: 16 float NG 0 16:33:04.573 AVXtest (EURUSD,H1) -5511.55615234375 base result LP 0 16:33:04.626 AVXtest (EURUSD,H1) -5511.64404296875 array result DQ 0 16:33:04.817 AVXtest (EURUSD,H1) -5511.64404296875 vector result KI 0 16:33:04.817 AVXtest (EURUSD,H1) 289 base time, ms QL 0 16:33:04.817 AVXtest (EURUSD,H1) 52 array time, ms FN 0 16:33:04.817 AVXtest (EURUSD,H1) 190 vector time, ms KH 0 16:33:08.589 AVXtest (EURUSD,H1) Vector size: 16 float IM 0 16:33:09.319 AVXtest (EURUSD,H1) 10511.90234375 base result FK 0 16:33:09.372 AVXtest (EURUSD,H1) 10511.546875 array result OM 0 16:33:09.564 AVXtest (EURUSD,H1) 10511.546875 vector result QG 0 16:33:09.564 AVXtest (EURUSD,H1) 289 base time, ms HQ 0 16:33:09.564 AVXtest (EURUSD,H1) 53 array time, ms GD 0 16:33:09.564 AVXtest (EURUSD,H1) 191 vector time, ms RR 0 16:33:14.022 AVXtest (EURUSD,H1) Vector size: 16 float DF 0 16:33:14.746 AVXtest (EURUSD,H1) -709.4554443359375 base result GP 0 16:33:14.799 AVXtest (EURUSD,H1) -709.44091796875 array result LG 0 16:33:14.990 AVXtest (EURUSD,H1) -709.44091796875 vector result HO 0 16:33:14.990 AVXtest (EURUSD,H1) 287 base time, ms HI 0 16:33:14.990 AVXtest (EURUSD,H1) 52 array time, ms LM 0 16:33:14.990 AVXtest (EURUSD,H1) 191 vector time, ms
ради любопытства запустил под wine 64 в mac os 15.7
Компилится в AVX512 без проблем, но не запускается, по вполне логичным причинам, не поддерживает это чипы М
Скомпилил X64 вывод
2025.09.21 19:51:22.435 AVXtest (EURUSD,H4) Vector size: 16 float 2025.09.21 19:51:26.212 AVXtest (EURUSD,H4) 5106.2451171875 base result 2025.09.21 19:51:26.269 AVXtest (EURUSD,H4) 5106.72265625 array result 2025.09.21 19:51:26.475 AVXtest (EURUSD,H4) 5106.72265625 vector result 2025.09.21 19:51:26.475 AVXtest (EURUSD,H4) 339 base time, ms 2025.09.21 19:51:26.475 AVXtest (EURUSD,H4) 57 array time, ms 2025.09.21 19:51:26.475 AVXtest (EURUSD,H4) 205 vector time, ms
Спасибо. Странные результаты. По идее, должно было получиться 4х, 8х, 16Х. Здесь же везде ~6х.
536860000 это 2Гб получается ограничение
Хотя бы разобрались как код ускоритьУ вас тоже 6х?
Vector size: 16 float -489.3933410644531 base result -489.3485107421875 array result -489.3485107421875 vector result 440 base time, ms 223 array time, ms 376 vector time, ms Vector size: 4 float -8507.5224609375 base result -8507.57421875 array result -8507.57421875 vector result 445 base time, ms 217 array time, ms 376 vector time, ms
Не зависит от x64 или AVX (512 - нет). И почти не зависит от размера вектора.
Лучший размер такой.
Vector size: 64 float -2280.896484375 base result -2280.907470703125 array result -2280.907470703125 vector result 450 base time, ms 183 array time, ms 479 vector time, ms
Спасибо за пример.
avx512
Это не имеет ничего общего с AVX или векторизацией.
Это пример развертывания цикла (внутреннего цикла) , этот код можно было бы лучше записать так:
for(int i = 0; i < SIZE; i += vs) { //for(int j = 0; j < vs; j++) // accVec[j] += arr[i + j]; accVec[0] += arr[i]; accVec[1] += arr[i + 1]; accVec[2] += arr[i + 2]; accVec[3] += arr[i + 3]; }
Различная сумма в развернутом цикле возникает из-за особенности арифметики fp, называемой "распространением ошибок" ("propagation of errors"), (see https://www.wikiwand.com/en/articles/Rounding_error#Accumulation_of_roundoff_error)
Совет : чтобы получить одинаковую сумму независимо от порядка сложения, используйте алгоритм суммирования Хана (use Khan summation algo) - https://www.wikiwand.com/en/articles/Kahan_summation_algorithm- www.wikiwand.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования




Требуются добровольцы с avx512
Нужно скомпилировать и запустить скрипт в 4 режимах
Поделиться результатами
Дефолтные значения оптимальные
можно SIZE выставить по максимуму (пока получится скомпилировать)