Sanmayce Ответов: 4

Выполняет ли Intel 3-го поколения (и далее) этот код с ошибками?


Мое нынешнее понимание заключается в том, что в некоторых случаях (когда происходит массовое чтение/запись YMM) Intel 2-го поколения выполняет их неправильно, когда регистры YMM заменяются соответствующими 4 QWORD, то это работает, тестовый случай:

/*
; 'Tsubame' decompression loop, 96-15+6=135 bytes long, 40 instructions:
; mark_description "Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 15.0.0.108 Build 20140";
; mark_description "-TP -O3 -QxSSE4.1 -D_N_YMM -D_N_prefetch_4096 -D_N_HIGH_PRIORITY -FAcs";

.B16.3::                        
  00015 41 0f 18 8b 00 
        10 00 00         prefetcht0 BYTE PTR [4096+r11]         
  0001d 41 8b 13         mov edx, DWORD PTR [r11]               
  00020 89 d1            mov ecx, edx                           
  00022 83 e1 03         and ecx, 3                             
  00025 75 34            jne .B16.7 
.B16.4::                        
  00027 0f b6 d2         movzx edx, dl                          
  0002a 85 d2            test edx, edx                          
  0002c 74 0a            je .B16.6 
.B16.5::                        
  0002e c4 c1 7e 6f 43 
        01               vmovdqu ymm0, YMMWORD PTR [1+r11]      
  00034 c5 fe 7f 00      vmovdqu YMMWORD PTR [rax], ymm0        
.B16.6::                        
  00038 89 d1            mov ecx, edx                           
  0003a 41 b9 01 00 00 
        00               mov r9d, 1                             
  00040 ba 00 00 00 00   mov edx, 0                             
  00045 41 0f 44 d1      cmove edx, r9d                         
  00049 c1 e9 03         shr ecx, 3                             
  0004c c1 e2 04         shl edx, 4                             
  0004f 03 d1            add edx, ecx                           
  00051 ff c1            inc ecx                                
  00053 48 03 c2         add rax, rdx                           
  00056 4c 03 d9         add r11, rcx                           
  00059 eb 38            jmp .B16.8 
.B16.7::                        
  0005b c1 e1 03         shl ecx, 3                             
  0005e 41 b9 ff ff ff 
        ff               mov r9d, -1                            
  00064 41 d3 e9         shr r9d, cl                            
  00067 44 23 ca         and r9d, edx                           
  0006a 83 e2 0c         and edx, 12                            
  0006d 41 c1 e9 04      shr r9d, 4                             
  00071 f7 da            neg edx                                
  00073 83 c2 10         add edx, 16                            
  00076 49 f7 d9         neg r9                                 
  00079 4c 03 c8         add r9, rax                            
  0007c c1 e9 03         shr ecx, 3                             
  0007f f7 d9            neg ecx                                
  00081 83 c1 04         add ecx, 4                             
  00084 c4 c1 7e 6f 01   vmovdqu ymm0, YMMWORD PTR [r9]         
  00089 c5 fe 7f 00      vmovdqu YMMWORD PTR [rax], ymm0        
  0008d 48 03 c2         add rax, rdx                           
  00090 4c 03 d9         add r11, rcx                           
.B16.8::                        
  00093 4d 3b d8         cmp r11, r8                            
  00096 0f 82 79 ff ff 
        ff               jb .B16.3 
*/


Поскольку у меня есть только Core 2 и i5 2540M, я не могу попробовать, работает ли следующая функция декомпрессии на 3??? и следующие процессоры Intel работают правильно, поэтому я прошу кого-нибудь запустить эту командную строку и поделиться, не "провалился" ли он:

D:\Tsubame\buggy_AVX_compile>Nakamichi_Tsubame_YMM_PREFETCH_4096_Intel_15.0_64bit_SSE41.exe alice29.txt
Nakamichi 'Tsubame', written by Kaze, based on Nobuo Ito's LZSS source, babealicious suggestion by m^2 enforced, muffinesque suggestion by Jim Dempsey enforced.
Note: Conor Stokes' LZSSE2(FASTEST Textual Decompressor) is embedded, all credits along with many thanks go to him.
Limitation: Uncompressed 8192 MB of filesize.
Current priority class is HIGH_PRIORITY_CLASS.
Allocating Source-Buffer 0 MB ...
Allocating Target-Buffer 32 MB ...
Allocating Verification-Buffer 0 MB ...
Compressing 152,089 bytes ...
-; Each rotation means 64KB are encoded; Done 100%
NumberOfFullLiterals (lower-the-better): 4
NumberOf(Tiny)Matches[Tiny]Window (4): 157
NumberOf(Short)Matches[Tiny]Window (8): 52
NumberOf(Medium)Matches[Tiny]Window (12): 11
RAM-to-RAM performance: 11 KB/s.
Compressed to 73,071 bytes.
Source-file-Hash(FNV1A_YoshimitsuTRIAD) = 0x1366,78ee
Target-file-Hash(FNV1A_YoshimitsuTRIAD) = 0x8cec,be70
Decompressing 73,071 (being the compressed stream) bytes ...
RAM-to-RAM performance: 1152 MB/s.
Verification (input and output sizes match) OK.
Verification (input and output blocks mismatch) FAILED!


Командная строка, которая меня интересует:

D:\Tsubame\buggy_AVX_compile>Nakamichi_Tsubame_YMM_PREFETCH_4096_Intel_15.0_64bit_SSE41.exe alice29.txt


Набор тестов, zip-файл 241KB, исполняемые файлы & source & testdatafile[^]

Я задал тот же вопрос на форуме Intel, но, к сожалению, это никого не волнует:

YMMWORD != 4xQWORD[^]

Что я уже пробовал:

Ноутбук Toshiba i5-2540M, Windows 7, Intel C Optimizer v15. 0

4 Ответов

Рейтинг:
12

jfriedman

Хорошо для меня на Core i7 3960x, Windows 7

Накамити "Цубаме", написанный Кадзе, основанный на источнике Lzss Нобуо Ито, babealicious suggestion by m^2 enforced, muffinesque suggestion by Jim De
- настаивал МПСИ.
Примечание: lzsse2 Конора Стокса(самый быстрый текстовый декомпрессор) встроен, все кредиты вместе со многими благодарностями идут ему.
Ограничение: несжатый размер файла 8192 Мб.
Текущий приоритетный класс-HIGH_PRIORITY_CLASS.
Выделение исходного буфера 0 МБ ...
Выделение целевого буфера 32 МБ ...
Выделение проверочного буфера 0 МБ ...
Сжатие 152 089 байт ...
- ; Каждое вращение означает, что 64 КБ кодируются; сделано 100%
NumberOfFullLiterals (меньше-лучше): 4
Количество(Миниатюрный)Соответствует Окно[Крошечный] (4): 157
NumberOf (Short)Matches [Tiny]Window (8): 52
NumberOf (Medium)Соответствует [Tiny]Window (12): 11
Производительность RAM-to-RAM: 18 КБ/с.
Сжато до 73 071 байта.
Исходный файл-хэш(FNV1A_YoshimitsuTRIAD) = 0x1366, 78ee
Target-file-Hash(FNV1A_YoshimitsuTRIAD) = 0x8cec, be70
Распаковка 73 071 (являющегося сжатым потоком) байта ...
Производительность RAM-to-RAM: 1664 МБ/с.
Проверка (совпадение входных и выходных размеров) ОК.
Проверка (совпадение входных и выходных блоков) ОК.

LZSSE2: сжатие с помощью LZSSE2 (уровень 17) 152 089 байт ...
LZSSE2: сжатый до 56 526 байт.
LZSSE2: оперативная память в оперативной памяти производительность: 7072 кб/сек.
LZSSE2: распаковка 56 526 байт (будучи сжатым потоком)...
LZSSE2: производительность RAM-to-RAM: 18560 МБ/с.
LZSSE2: проверка (совпадение входных и выходных размеров) ОК.
LZSSE2: проверка (совпадение входных и выходных блоков) ОК.

LZSSE2 vs Nakamichi 'Tsubame', плотнее: 0.77:1
LZSSE2 vs Nakamichi 'Tsubame', быстрее: 11.15:1


Sanmayce

Тьфу, забыл свою привычку отдавать честь песней людям, которые мне помогли, увидев ваши тексты так похожи на Золотой извержение / Бони-М хит "билет в один конец", я приветствую вас одним дорогим мне хитом от двух потрясающих французских ди-джеев, несущих дух печали-оставления-прекрасных-вещей / людей-позади:

Корпорация воровства-это конец?
https://www.youtube.com/watch?v=4WbxYzAG2I4

Ура!

Рейтинг:
1

Dave Kreskowiak

Дело не в том, что им все равно, а в том, что им все равно. Они заботятся о своих машинах.

Никто в здравом уме не будет скачивать странный код из интернета от кого-то, кого он не знает, и запускать его.


Рейтинг:
0

OriginalGriff

И здесь вам, вероятно, тоже не повезет.
Очень, очень маловероятно, что кто-то здесь собирается скачать EXE-файл из неизвестного источника и выполнить его: мы понятия не имеем, что он может сделать, мы не знаем вас, и это вполне может быть вымогатель или что-то подобное.
Мне очень жаль, но вам придется найти друга или коллегу, чтобы запустить свой тест - в современном мире вряд ли кто-то в интернете захочет запустить ваше приложение!


Sanmayce

>... в современном мире маловероятно, что кто-то в интернете захочет запустить ваше приложение!

Нет, я человек веры, сказано "Просите и получите", угадайте что, не только в христианстве, но и на 700 лет раньше в Китае.

Думаю, ваша рациональность защитит вас от вредоносного программного обеспечения, однако в ней есть некоторая холодность, которая также помешает вам помочь нуждающемуся программисту.

Сказать "мы вас не знаем" тоже холодно, я являюсь членом CodeProject и пользовался помощью других коллег-членов в моих предыдущих тестированиях, так что это не вопрос какой-то подозрительной активности, а скорее доброй воли, в конце концов, исходный код и строка компиляции даны в этом zip-файле, так что даже пользователи GCC могут скомпилировать его и сообщить о результате, если им не хватает превосходного оптимизатора Intel. Недавно я прочитал о GCC 7 dev, показывающем некоторые невидимые повышения в таких фрагментах декомпрессии, если быть точным, удивительный декомпрессор zstd Yann показал примерно 20% - ное повышение скорости по сравнению с cl Microsoft.

В прошлом году, AFAIR, я предложил CP иметь / предложить машину (например, 5960x), предназначенную для помощи участникам в их тестах скорости. Да, проблемы с безопасностью всегда есть, но наличие резервной копии (зеркальной копии) установленной ОС и пакетов значительно облегчит переустановку, просто говоря.

OriginalGriff

Вера-это чудесная вещь. But...it это не ответ на все.
Вы должны знать, что есть злонамеренные люди, которые (через веру, или жадность, или и то, и другое) с радостью попытаются заставить вас установить их приложения. Некоторые из этих парней целятся в больницы ради слонов!
Теперь у меня довольно солидная резервная копия, так что если бы я запустил ее и она включала вымогателей, я бы перезагрузился с последней резервной копии и потерял несколько часов работы. But...it-на это у меня уйдет полдня.
Во что бы то ни стало имейте веру - но подкрепляйте ее разумными предосторожностями!

"Сказать "мы вас не знаем" тоже холодно, я член CodeProject"
Как и 12 000 000 других-и я точно знаю, что некоторые из них злонамеренны! Вы должны * увидеть* некоторые сообщения, которые пытаются попасть сюда. Вернее, не стоит - потому что добровольцы вроде меня чертовски стараются не пускать их!

Короче говоря: защитите себя. Не посещайте случайные сайты, не запускайте случайные приложения, часто делайте резервные копии и держите их в автономном режиме. В противном случае, это не случай "если" у вас будут проблемы, это "когда".

Рейтинг:
0

Sanmayce

@jfriedman
Большое спасибо, парень!

Вы сами видите, как трудно мне тестировать фрагменты, которые нуждаются в процессорах, которые я не могу себе позволить купить, интернет хуже реальной жизни - неверие-это норма, назовите меня наивным даже глупым, но просить о помощи в некоторых тестах и получать "вы с ума сошли, чтобы спрашивать такие вещи" показывает, насколько безудержен страх того, что кто-то повредит их данным, а не как "ненормально" просить о помощи.

Вы выделили жирным шрифтом нужные строки, милая, ваша 3-го поколения Intel показывает, что интенсивное компании емм сама выбирает/магазины с перекрытием работать правильнов отличие от моего мобильного 2-го поколения. Так как у меня мало денег, и я не мог просить друзей о дополнительных услугах, у некоторых нет процессоров 3-го уровня и выше, некоторые помогали мне несколько раз, и я не хочу быть наглым, чтобы беспокоить их, я чувствовал себя немного подавленным, теперь я видите, что 256-битные невыровненные операции чтения / записи с перекрытиями выполняются некорректно на i5-2540M, этот ноутбук был куплен моим братом у Newegg и оснащен 16 ГБ оперативной памяти - он дал мне его для подготовки моего текстового текста с тяжелой декомпрессией. вскрытие, и я был счастлив, пока не произошла эта ошибка в AVX, поскольку вы можете видеть, что аналоги QWORD и XMM работают должным образом, в любом случае я чувствовал себя обманутым, потому что я не мог завершить / представить свои тесты с кодом AVX по сравнению с остальными сверхбыстрыми исполнителями, у меня было перейти с операциями 4xQWORD вместо 1xYMM - это была идея!

The crippled showdown/benchmark сделан с помощью 4xQWORDs и размещен в моем блоге:
The 88 benchmark | Sanmayce' s dumps[^]

На мой взгляд, Toshiba или Intel, если уж на то пошло, должны свободно заменить мой глючный ноутбук на другой с аналогичными характеристиками, но с процессором 3-го или лучшего поколения. Они сделали продукт, который не работает! Если бы у меня было больше денег, я бы купил новый, не производя шума, но быть безденежным-это не весело.

Еще раз большое спасибо.
Я предполагаю, что эта ошибка исправлена навсегда, то есть 4-е, 5-е и 6-е поколения тоже в порядке.
Я вернусь в Intel, там Тим Принс-ветеран в разработке компиляторов и эксперт по моджоям Intel пытался мне помочь, но почему-то этого не произошло, во всяком случае, чтобы закончить свой пост, я приведу одну мудрость, висящую на стене в рамке, о Наполеоне, которую я искал, когда был в армии.,
- Согласованность-это высшая добродетель!"
Мне нравится думать, что я неуклонно преследую цели, не "бросая" их.


Dave Kreskowiak

Учитывая, что я все еще восстанавливаю 9 из своих 11 машин на работе из-за вируса нулевого дня, который поразил небольшую группу из нас на прошлой неделе, да, я оправдан, говоря, что смешно просить незнакомцев загрузить неизвестный код из ненадежного источника и слепо выполнить его.