LINUX.ORG.RU
ФорумTalks

[СПВ] Планировщики

 


0

1

Пусть в режиме реального времени в вычислительную сеть, состоящую из компьютеров разной производительности, поступают задачи определённого типа (пусть A, B, C). Необходимо распределить задачи по компьютерам так, чтобы минимизировать общее время выполнения.

В общем, суть моей идеи заключается в том, чтобы составить набор тестовых приложений по замеру времени выполнения базовых операций (арифметических операций, тригонометрических функций с различными типами данных, функции работы с памятью и пр.), на паре машин сделать несколько тестовых замеров каждого типа задач и построить обучающую выборку для нейросети. Цель нейросети: ответить на вопрос «а за сколько времени решится задача типа A (B или C), если тестовые приложения отработали за...» — т.е. сделать прогноз времени выполнения приложения на неизвестном окружении (априорное оценивание), основываясь на времени выполнения тестовых приложений. Естественно, сеть дообучается по мере поступления новых статистических данных. Благодаря получаемым оценкам времени выполнения задачи, можно загружать каждый компьютер по-отдельности, а когда все заняты — складывать задачи в очереди к каждому компьютеру с составлением Gnatt-диаграммы и её оптимизацией по мере заполнения очередей поступающими задачами.

Прощу поругать идею и её целесообразность. Если подобные наработки уже имеются — можно ткнуть носом.

Что за дурацкая мода на нейронные сети? Тулят их куда надо и не надо...
Научную новизну прилепляем, да? :)

adriano32 ★★★
()
Ответ на: комментарий от stevejobs

а как получить оценку времени выполнения программы на компе, который только подключили и замерили?

Я думаю, что если будет выброшена нейросеть, то рассыпется весь алгоритм.

... или я что-то упустил?

DarkAmateur ★★★★
() автор топика
Ответ на: комментарий от adriano32

Не совсем. Задача аппрокимации и интерполяции функций, не имеющий чёткого математического представления в виде формулы как раз основная задача НС.

DarkAmateur ★★★★
() автор топика
Ответ на: комментарий от DarkAmateur

Если задачи A, B, C - цельные, то есть каждая из них выполняется на одном компе, то объясни почему нельзя измерять скорость выполнения собственно этих задач A, B, C, а не измерять искусственно вводимые мелкие задачи и вводить какую-то оценочную меру эквивалентного количества таких мелких задач в задаче A, B, C?

Я просто на захитах диплома на нашей специальности насмотрелся нейронных сетей, куда их только не тулили... Самый крупный фейл был, когда нейронную сеть впендюрили в АСУ какой-то там непомню уже __печью__. Понял почему она там не нужна?

adriano32 ★★★
()
Ответ на: комментарий от adriano32

Приведу ход своих мыслей:

1. Вычислительная сеть — не один компьютер.

2. По своей сути, вычислительная сеть — динамичная система. Следовательно, суммарная мощность как всей сети, так и отдельного компьютера заранее не известна. Также неизвестно аппаратнопрограммное окружение, в котором будет выполняться программа (AMD / Intel / ARM, Windows / Linux / QNX / ReactOS / Solaris — все это накладывает свой отпечаток на время выполнения исследуемого приложения, даже опции компилера).

3. Проводить прямые замеры — накладно и неэффективно => необходимо свести к минимуму. Согласно пункту 2. провести полный спектр замеров практически невозможно.

4. Следовательно, необходимо найти «оценочную меру эквивалентного количества таких мелких задач» (tn) и построить некую функцию T(t1,t2,...,tn).

5. Самый простой способ её построить — НС.

DarkAmateur ★★★★
() автор топика
Ответ на: комментарий от DarkAmateur

Да, считается, что тестовые приложения и приложения A, B, C собраны идентичными инструментами сборки с одинаковыми опциями.

DarkAmateur ★★★★
() автор топика
Ответ на: комментарий от DarkAmateur

> Я думаю, что если будет выброшена нейросеть, то рассыпется весь алгоритм.

а я так и не понял, почему это нельзя свести к алгоритму :)

Следовательно, суммарная мощность ... отдельного компьютера заранее не известна.


вычислительная мощность отдельного компьютера (во флопсах) вполне известна, плюс если нужна смысловая оценка (но зачем?) - ее все так же можно посчитать на основе тех «задач разного типа», раз уж у тебя есть конечный набор этих задач

Следовательно, суммарная мощность как всей сети, так и отдельного компьютера заранее не известна.


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

какбе происходит замена постоянной думалки нейросети, на единичную думалку умного человека, пишущего вычислялку ;)

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.