У меня мало вопросов о программировании на C ++. Я хотел бы знать, возможно ли запись в память асинхронным способом (последовательный код)? Но позвольте мне прояснить мой вопрос.
Я ищу улучшения для алгоритма, и кажется, что узким местом моего кода является запись в память. Я хотел бы написать в памяти и все еще продолжать вычислять. Возможно ли это сделать с одним процессором? Как использовать ALU и одновременно использовать блок записи? Зная, я не использую результат в следующем вычислении. Это написано в векторном результате.
Спасибо, что нашли время ответить, либо читать.
И да и нет. Компилятор оптимизирует запись в память, так что ваш процессор может делать что-то во время записи блоков памяти. Это форма скрытие латентности. Это ответ «да».
Часть «нет» заключается в том, что, к сожалению, с точки зрения кода, мы не можем сделать это с помощью одного потока.
Ввод / вывод является узким местом во многих, многих программах, поэтому вам просто нужно оптимизировать и справиться с ними.
Это не вопрос C ++ или чего-то еще, это просто вопрос поддержки процессора: C ++ не может предложить вам такую возможность, если базовое оборудование не в состоянии ее поддерживать.
В инструкции x86 такого средства нет, но AFAIK в более новых версиях PPC. Если вы хотите пойти по аппаратному маршруту, вы должны сначала проверить, какое оборудование вы используете в настоящее время: Задержка памяти сильно различается для разных процессоров x86.
Вы можете оптимизировать запись в память.