Что такое модернизация кода?

 

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

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

Вы должны задуматься о данном начальном аспекте модернизации программного кода.

Векторизация

Важной составляющей обеспечения должной производительности параллельной обработки данных на современных аппаратных средствах является использование всех преимуществ команд векторизации, которые также называют наборами команд SIMD (Single Instruction Multiple Data). Здесь вы также можете узнать, как оптимизировать скалярные и последовательные операции с использованием нужной точности, типов констант и соответствующих флагов функций, а также погрешностей.

Многопоточность

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

От мультиядерных до многоядерных вычислений

Возможность расширения особенно важна для интенсивных и высоко параллельных приложений. Сводите к минимуму изменения и повышайте производительность с заменой одного типа архитектуры Intel® (процессор Intel® Xeon®) целевых систем запуска другим (сопроцессор Intel® Xeon Phi™).

Оптимизация памяти

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

Non-Uniform Memory Access (NUMA) и MCDRAM

Порой, когда вам необходима мощь многоядерных серверных процессоров или мультиядерных процессоров Intel Xeon Phi, модули системной памяти DIMM и MCDRAM не соответствуют нуждам ваших вычислительных систем многовекторной обработки данных, что ведет к их неэффективности. Узнайте, как изменить характеристики доступа к данным ваших приложений, чтобы кэш-память 1 и 2 уровня обеспечивала необходимую скорость пересылки данных (более 10000 ГБ/с). Исключите возможность появления задержек пересылки данных от 400+ ГБ/с для MCDRAM или 90+ ГБ/с для модулей DIMM.