Информация об изменениях

Сообщение Re: покритикуйте идею от 22.07.2024 5:50

Изменено 22.07.2024 5:53 swame

Re: покритикуйте идею
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Рассмотрим следующую ситуацию


PD>Надо пропустить достаточно большое количество задач, каждая из которых выполняет большое количество арифметических операций. Иных действий в задачах нет.Все данные для всех задач уже размещены в ОП. Всего задач N, причем К типов , каждого типа nk задач.


PD>Задачи независимы и выполнять их можно в любом порядке.


Условия какие — то сферические.

PD>Цель — пропустить все задачи за минимальное астрономическое время.

PD>Отнесем каждую задачу к одному из этих классов на основе интуитивных соображений. Вполне возможно, что это отнесение окажется неверным, это не беда(см. ниже).

PD>Выберем 4 задачи разных классов и запустим их под управлением собственного менеджера в отдельных потоках, при этом установим потокам affinity mask таким образом, чтобы каждый поток мог выполняться только на "своем" ядре.


PD>Через некоторое время (квант времени) менеджер определяет для каждой задачи счетчики производительности (количество кеш-промахов, количество переданных байт из RAM и др.) , анализирует их и выясняет, не мешают ли задачи друг другу. Если выяснится, что задачи мешают друг другу, значит , их первичная классификация была произведена неверно. В этом случае менеджер изменяет отнесение задачи к классу и приостанавливает одного из "конкурентов" , запуская следующую задачу, которая вроде бы по классификации не должна конкурировать за ресурсы с той задачей, что осталась.


PD>Вопросы же такие.


PD>1. Сама идея имеет право на существование ? Я тут ничего важного не пропустил, что может помешать ей реализоваться ?


Задача думаю имеет право, но на практике думаю такой менеджер выиграет десяток — другой процентов производительности по сравнению с рэндомным запуском.

А оптимизация и подбор самих алгоритмов , или оптимизация количества вычислений (например исключить какие — то ненужные, или повторяющиеся), может дать большую экономию.
Если код уже не какой то супероптимизированный.
Re: покритикуйте идею
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Рассмотрим следующую ситуацию


PD>Надо пропустить достаточно большое количество задач, каждая из которых выполняет большое количество арифметических операций. Иных действий в задачах нет.Все данные для всех задач уже размещены в ОП. Всего задач N, причем К типов , каждого типа nk задач.


PD>Задачи независимы и выполнять их можно в любом порядке.


Условия какие — то сферические.

PD>Цель — пропустить все задачи за минимальное астрономическое время.

PD>Отнесем каждую задачу к одному из этих классов на основе интуитивных соображений. Вполне возможно, что это отнесение окажется неверным, это не беда(см. ниже).

PD>Выберем 4 задачи разных классов и запустим их под управлением собственного менеджера в отдельных потоках, при этом установим потокам affinity mask таким образом, чтобы каждый поток мог выполняться только на "своем" ядре.


PD>Через некоторое время (квант времени) менеджер определяет для каждой задачи счетчики производительности (количество кеш-промахов, количество переданных байт из RAM и др.) , анализирует их и выясняет, не мешают ли задачи друг другу. Если выяснится, что задачи мешают друг другу, значит , их первичная классификация была произведена неверно. В этом случае менеджер изменяет отнесение задачи к классу и приостанавливает одного из "конкурентов" , запуская следующую задачу, которая вроде бы по классификации не должна конкурировать за ресурсы с той задачей, что осталась.


PD>Вопросы же такие.


PD>1. Сама идея имеет право на существование ? Я тут ничего важного не пропустил, что может помешать ей реализоваться ?


Задача имеет право, но на практике думаю такой менеджер выиграет десяток — другой процентов производительности по сравнению с рэндомным запуском.

А оптимизация и подбор самих алгоритмов , или оптимизация количества вычислений (например исключить какие — то ненужные, или повторяющиеся), может дать большую экономию.
Если код уже не какой то супероптимизированный.