Это не совсем автономная программа, просто мне интересно было сделать
тест для S&M. У меня есть модули, оптимизированные под AMD K7/8/10 и
Intel P4/Core2, но они работают на FPU командах. Альтернативные программы (например Prime95 и другие)
работали на SSE, что вызывало постоянные конфликты. В частности, какая программа больше нагревает процессор
и какая лучше обнаруживает ошибки? Как говорится, пинали-пинали и допинали. Пришлось-таки наступить
на свою жабу и собрать программу именно на SSE. Здесь практически не используются другие команды,
основной цикл построен исключительно на SSE.
CST пранировался как временный тестовый модуль, потом его можно будет встроить в S&M
... если эффект будет. Сами понимаете, лепить в программу декоративные модули только 'для галочки' несерьезно.
Описание работы.
Программа нагружает процессор SSE командами. При этом использутся алгоритм трансформации матриц (перемножение).
В программе 3 теста, которые выполняются последовательно. Для каждого из трех можно выбрать свой
размер матрицы, количество вычислений и количество повторений теста на один проход. Если не нужны все
три теста, то любой их них можно отключить, поставив 0 как размер матрицы.
Все настройки делаются через файл cst.ini. С одной стороны, это не очень удобно, с другой - не особо и актуально, а вот сложность
тестовой программы явно излишне утяжелится GUI. Да и не нужно это, достаточно один раз подстроить под себя и забыть.
Внешний вид.

Окно программы имеет несколько полей:
Processor - немного информации о процессоре.
Название процессора.
CPU ID - код идентификации процессора в виде "Фирма" "Семейство-Модель-Версия" "хКоличество ядер".
Clock* - частота процессора. Звездочка поставлена не случайно - при сниженном множителе
програма не будет это видеть и предполагать максимальный множитель. В результате можно получить
очень 'веселенькую' цифру. Если использовать драйвер, (есть такое), то эту несуразицу
легко устранить ... но зачем это в данной программе? Ставить драйвер только ради правильного
показа частоты процессора явная глупость, поэтому просто смиритесь, если увидите частоту процессора
значительно больше реальной.
SSE - поддерживемые режимы SSE. Т.к. это крайне важно для моей программы, то
это вынесено на окно. Первые версии расчитаны только на процессоры с поддержкой sSSE3 и не будут
работать, если в процессоре не реализовано это расширение.
Memory - информаци о системной памяти.
Total - сколько всего памяти. Может быть чуть-чуть меньше из-за ограничений BIOS (точно теряется 1Mb)
или не_чуть, если памяти больше 3Gb и используется Windows редакции "x86" без поддержки 4Gb. Сюда относятся
все не_серверные версии Windows х86 (...W2K, XP, Vista, w7...).
Available - свободная, пока незанятая память.
Accessable - какой регион памяти можно адресовать из программы. Существует масса ограничений, поэтому
это число, как правило, меньше 2Gb даже в Windows с поддержкой "3Gb" на процесс.
Число после запятой - максимальный размер матрицы, которая может быть создана на
данном компьютере.
Used by test - сколько используется под тест. Если это число приближается к "Accessable" или
количество свободной памяти становится очень маленьким, то это означает, что тест съел всю возможную память,
но не смог сгенерировать матрицу того размера, что указано в настройках теста(ов). Учтите это
при настройке тестов. Может будет лучшим вариантом увеличить количество повторов и уменьшить размер самой матрицы.
Tests - раздел тестов.
Их три - Test 1, Test 2, Test 3. В каждом есть 3 поля.
1. информация о конфигурации теста вида:
- размер матрици
- количество повторов
- количество повторений теста
2. производительность выполнения операции, в GFlops. Число примерно подогнано к действительности,
но может немного врать. Его надо использовать для выбора настроек теста - чем больше производительность, тем выше нагрузка на процессор и его нагрев.
3. процент выполненности теста.
Status - раздел служебной информации о тестировании.
Time - время от начала тестирования.
Cycle - номер повтора выполнения тестов.
Error - код ошибки. Обычно там пусто. :)
Нижняя часть окна не особо интересная и вряд-ли вызовет затруднения. Кнопка "Exit" выбрана
по умолчанию, поэтому для выхода из программы достаточно нажать Enter или пробел.
"Send Bug Report" - какой-то рудимент. Надо-бы его убрать.
Настройка.
Програма настраивается через файл cst.ini.
Раздел [CST setup], параметры:
Priority - приоритет програмы. Может иметь 3 значения:
-1 - пониженный приоритет, не будет мешать работать на компьютере, но из-за
нагрузки на процессор других програм снижается эффективность.
0 - обычный приоритет. Может мешать.
1 - повышенный приоритет. Ставить не советую, работать за компьютером невозможно.
UseCache - использовать кеширование результатов. При этом первый проход теста
уже считается результативным. Теоретически, может вызывать сбой, если в него поместится неверный результат.
Крайне маловероятно. Но если так, то достаточно удалить из каталога программы файлы
вида i6***x*.bin, при последующем запуске програма их сама создаст и заполнит.
0 - отключено кеширование
1 - включено
CheckMode - режим генерации шаблонов. Разрешены два режима:
0 (обычный)
1 (повышенной чуствительности).
CheckType - тип генерации щаблона, может иметь значение от 0 до 3:
0 - постоянный шаблон
1 - переменный шаблон
2 - более агрессивная версия первого типа.
Разделы [Test1], [Test2], [Test3], параметры:
Matrix - размер матрицы. Может быть от 0 (тест выключен) до 15.
Repeat - количество повторений вычисления матриц до проверки на корректность результата.
Число больше 0. Не ставьте слишком много, растет время.
Cycles - количество повторений цикла вычисление-проверка. Число должно быть больше 0.
Особенности.
В программе есть некоторые особенности, которые хорошо бы учитывать.
1. Размер матрицы стоит выбирать из акцента тестирования. Маленькие бОльшей частью
умещаются в кешь 1-2 уровня процессора и мало зависят от системной памяти (при Repeat>1).
Матрицы среднего размера больше нагружают кешь второго уровня и память. Самые большие матрицы скорее
ориентированы на системную память.
2. Чем больше размер матрицы, тем меньше накладные расходы на начало-конец вычислений строк-столбцов.
Поэтому с ростом размера матрицы растет и степень нагрузки на процессор. Но это только в том случае, когда
нет повторений вычисления. Если Repeat выставить больше 1, то старт-стопные задержки нивелируются, это хорошо
видно по возрастанию GFlops и бОльшей температуре процессора.
3. При Repeat>1 падает обнаруживающая способность из-за вытеснения информационных бит в результате вычислений.
Эффект выражен слабо и ошибки находятся при Repeat>300, но об этом стоит помнить.
4. Количество повторов может быть только нечетным. Поэтому Repeat=2 сразу становится Repeat=3.
В индикации настроек это не отражается, зачем пугать? :)
5. Не все размеры матриц одинаковы по эфективности обнаружения сбоев. Попробуйте перебрать.
Зависеть может от чего угодно - от размера L1, L2, (L3?), производительности подсистемы памяти....
6. В версии 0.03 есть внутренняя проблема, которая выражается в взаимном захвате и ожидании тредов.
Очень неприятная проблема, проявляется в загрузке только 1 ядра, низкой производительности тестирования и невозможности
выйти из программы по кнопке "Exit". Возникает редко, природа эффекта и лекарство выясняются.
Sorry! (на то и 'тестовая' версия)
Что, где, ...???
В программе нет закладки "About", поэтому здесь.
Программа предоставляется на принципах AS-IS без какой-либо ответственности.
CST(c)
Пользуйтесь программами мониторинга (например SpeedFan)
и смотрите за температурой компонентов компьютера. Перегреться может не только процессор, но
и преобразователь питания этого процессора, системная память или северный (южный) мост.
Текущая версия: 0.11b.