📚 ВычисленияМыслитель™ был разработан с учетом того, что структура вычислений во время выполнения является сложной и неоднородной. Оборудование, подобное графическому процессору, оказывается здесь неэффективным, поскольку оно предназначено для вычислений по коду одного и того же программного фрагмента тысячами арифметических ядер одновременно. Вместо этого проект в Мыслителе может содержать тысячи различных функций, каждая из которых вычисляется в своей локальной области сети. Вполне возможно, что такая конструкция может хорошо работать с аппаратным ускорением на ПЛИС. Тем не менее, программа обещает обрабатывать данные практически параллельно. Строго говоря, на современных процессорах невозможны точно параллельные вычисления. Части программного кода по своему расписанию попадают в доступные вычислительные ядра, проходя через схемы оптимизации и многоуровневые кэши. Вычисленные числа возвращаются обратно в основную память той же дорогой. Это очень сложный процесс при внимательном рассмотрении. Поскольку Мыслитель является приложением Java¹, его параллельные вычисления
основаны на технологии
В среде выполнения Мыслителя по умолчанию всегда имеется доступная служба Каждый процессор Мыслителя работает по принципу², напоминающему обслуживание официантом в ресторане. Он принимает «заказы» от выделенных вычислительных точек, помещает их в очередь и возвращает результат в порядке выполнения. Эту стандартную политику можно изменить, если используется класс процессора по умолчанию. Заказы, что естественно, могут дублироваться в очереди. Настройки процессора позволяют объединять одни и те же заказы в один до тех пор, пока не встретится другой заказ. Или все дублированные заказы можно удалить из всей очереди. Эти отклонения могут значительно улучшить производительность, если такая политика приемлема с точки зрения логики модели. Другая функция позволяет отложить момент фактической обработки до тех пор, пока не произойдет определенное событие: истечет тайм-аут или в очереди накопится достаточно заказов. Это позволяет компенсировать часто встречающееся на практике десинхронизированное поступление значений в аргументы функции.
Настольный вариант Мыслителя создает модель времени выполнения со всеми наблюдаемыми элементами. Когда конкретный элемент получает
новое значение или меняет свой статус, все слушатели элемента немедленно получат это обновление. График временной шкалы
на вкладке «Анализатор» и всплывающее окно «Свойства» являются примерами таких слушателей. Для особых случаев применения
Мыслитель может генерировать ненаблюдаемую модель времени выполнения с целью повышения общей производительности обработки. В любом случае,
эта модель по-прежнему может взаимодействовать с внешним миром через специальные классы Java, прикрепленные к элементу
Примечания:
|