Изучение SSE/SSE2 и оптимизация asm

Я знаком с языком C/C ++ и сборкой x86/x64, но теперь мне нужно изучить графические оптимизации (SSE/SSE2 и asm-оптимизации в целом), какие ресурсы/книги/ссылки я могу использовать для изучения этих тем? Я много раз искал через Интернет

7
Как примечание стороны, возиться с asm - обычно плохая идея (по крайней мере, если причина - просто оптимизация), особенно для SSE. Используйте intrinsics, которые намного проще в использовании, независимы от платформы (как независимые от платформы, как вы можете получить с SSE) и, что более важно, более эффективны, поскольку компилятор, пожалуй, намного лучше оптимизируется, чем вы. Не пытайтесь перехитрить ваш компилятор (или, если хотите, а затем попробуйте очень сложно ).
добавлено автор Christian Rau, источник
В более общем плане: agner.org/optimize много подробностей о том, как их оптимизировать. Для немного более полной таблицы латентности команд см. instlatx64.atw.hu
добавлено автор harold, источник
@ChristianRau действительно я бы сказал, что SSE - одна из лучших причин - компиляторы едва оптимизируют внутренний код (очевидные вещи касаются всего), поэтому вам нужно написать его в самый раз, а затем надеяться и молиться, чтобы компилятор не делал глупостей ошибка в распределении регистров (в последнее время это улучшилось). Затем вы получаете код, который все еще оптимизирован для конкретной платформы, и в качестве бонуса его труднее читать, чем сборки, со всеми этими спам-префиксами. Единственное преимущество, которое я вижу, это то, что вы можете его встроить.
добавлено автор harold, источник
В прошлом семестре я дал несколько лекций по оптимизации ЦП, включая SIMD, и, вероятно, вы будете использовать слайды лекций. cc.gatech.edu/grads/m/mdukhan3
добавлено автор Marat Dukhan, источник

1 ответы

Марко,

Ниже приведен трехточечный ответ:

  1. Если вы хотите изучить набор быстрых трюков, есть книги, доступные под общим названием алгоритмических головоломок. Следующие два я использовал и обеспечил отличную задачу, чтобы отточить ваши навыки. Book1 - это коллекция некоторых очень интересных трюков. Я также наслаждался этим Book2 .

Должности профессора Агнера, я думаю, последнее слово на эту тему, и они должны читать.

  1. Если вы ищете особенности оптимизации или использования 64-битного набора инструкций, мой опыт заключается в том, чтобы поддерживать Intel Manual Vol 2 под рукой. Вы можете задать конкретный вопрос на этом форуме и получить отличные решения. Если вы хотите начать с немного более базового уровня, есть отличный набор учебных пособий по youtube от WhatsACreel - охват и объяснения превосходны. Он переводит вас на AVX/AVX2, установленный более 60 нечетных сессий, начиная с основ.

  2. Я не профессиональный программист. Я профессионал в области управления бизнесом, но пишу 64-битные коды ассемблера для академических учреждений/людей, чьи кандидаты застряли или страдают/некоторые из таких людей в этом случае/в свободное время , Я считаю, что x64 чрезвычайно мощная, красиво компактная и делает то, что не может попробовать и язык. Итак, если кто-то пытается отговорить вас от написания на x64, ссылаясь на сложность или что-то еще, пожалуйста, покажите им разборку кода, сгенерированного любым компилятором по своему выбору :-) (должно напугать их достаточно) или просто нежно игнорировать их.

Всего наилучшего,

2
добавлено
Кроме того, нет необходимости быть настолько формальным, кроме как с немцами (тогда вы должны использовать полное имя г-на профессора Доктора).
добавлено автор Z boson, источник
Необычно назвать профессоров университетов только своими именами. Что бы подумал об этом профессор Дональд?
добавлено автор Pascal Cuoq, источник