(решено) GoTo или repeat until?

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 10.09.2015 15:55:24

Лекс Айрин писал(а):Вы таки не правы. физическая многопоточность (параллельные процессоры) есть.... а вот пямять на них всех одна.

То есть много-поточность существует только для 64 кб ... Например если 4 ядра, то 64 кб разложатся по 16 и посчитаются в 4-ре раза быстрее. Но блок более 64 кб, будет ждать очереди к памяти процессора. Правильно? Значит многопоточность миф? Или художники заблуждаются?

:!: Важно понимать, что подача в процессор кусочками не более 64 кб, противоречит понятию многопоточность в понимании многопоточности художниками, т.к. это НЕ параллельное вычисление, а последовательное...
:arrow: Последовательное вычисление, кусочками по 64 кб. <== Все данные правильно установлены художниками или есть нюансы?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: (решено) GoTo или repeat until?

Сообщение Лекс Айрин » 10.09.2015 16:27:48

vitaly_l, смотря что конкретно именно ВЫ понимаете под многопоточностью.

У каждого ядра свой кеш (самый маленький), у процессора свой (побольше) и есть еще один кеш. самый большой.
так как процессор не может обработать больше 64/256 бит, то массовая загрузка необходимых данных в кеш будет редкой.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 10.09.2015 16:39:08

Лекс Айрин писал(а):смотря что конкретно именно ВЫ понимаете под многопоточностью.

Многопоточность и параллельность, в моём понимании - это как ДВА ФИЗИЧЕСКИХ ПРОЦЕССОРА на одной мат. плате.
Тогда 100% - вычисления идут параллельно. А в случае, мат. платы с одним ФИЗИЧЕСКИМ процессором в котром 2..32 ядра, существует некая ЭМУЛЯЦИЯ многопоточности и параллельности, которая реально приводит к более быстрым вычислениям, но поток вычислений не параллельный, просто кусочки по 64-256 кб обрабатываются в 2..32 раза быстрее. Но общий поток вычислений - последовательный, в отличии от мат. платы с двумя процессорами по 2..32 ядра, т.к. там например один процессор может обрабатывать картинку a.bmp, а второй процессор параллельно обрабатывает b.bmp и процессы независимы друг от друга, как будто их делают на разных компьютерах.
:!: :arrow: :?: Всё правильно или художники опять напортачили и заблуждаются?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: (решено) GoTo или repeat until?

Сообщение Cheb » 10.09.2015 16:54:25

Но ниточка расчётов, по прежнему остаётся ниточкой в самом процессоре и на самом деле все рассчёты В ПРОЦЕССОРЕ, независимо от кол-ва процессоров - не параллельны, а последовательны.

Бред.
Многоядерные процессоры - это именно несколько процесоров на одном кристалле, сросшиеся некоторыми внутренними органами.
Заявленное имеет место для HyperThreading - такая интеловская фича, когда процессор вдвое завышает в отчётах число имеющихся ядер. Например, мой ноутбук двухъядерный, а Винда и все программы считают его четырёхъядерным.

Потоки будут заниматься тайм-шерингом когда на всех активных перестанет хватать ядер проца.

Речь идет об этом классе: TSomeName = class ... end; <= Правильно?

Да.
Очень странный вопрос :?
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: (решено) GoTo или repeat until?

Сообщение Лекс Айрин » 10.09.2015 16:59:16

vitaly_l, если бы не было общей памяти и необходимости в ее использовании, то выполнение было бы полностью параллельным для физических ядер (или отдельно разведенных процессоров). Но так как это невозможно, то приходится немного притормаживаться. Это не проблема процессора -- это проблема доступа к памяти. Так что полностью параллельное выполнение это бред. Все равно процессор должен периодически притормаживать, пока не получит нужных данных.

Для виртуальных ядер это, конечно же асинхронное выполнение кода. Но, насколько я помню, технология виртуальных ядер не получила должного развития. Я даже не помню, исключили ее или нет из новых процессоров.
Кстати, если переменная в кеше изменяется, то это должно вызывать ее сброс в память. Собственно, по этому предпочитают хранить промежуточные данные в регистрах процессора. (чтобы исключить обращение к памяти) Таким образом, обработка двух bmp файлов не может вестись полностью в кеше. Даже если они туда помещаются.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: (решено) GoTo или repeat until?

Сообщение Cheb » 10.09.2015 17:02:00

Всё правильно или художники опять напортачили и заблуждаются?

Перестань заниматься бредонесением, или я уйду из этой темы.

Ядра - это физические процессоры, только слегка сросшиеся.

Кеш бывает 1-го, второго и 3-его уровня.
1 уровня - 64Кб, у каждого ядра свой, но, ЕМНИП, с механизмом синхронизации кешей у ядер. Если два ядра начнут работать с одним местом в памяти, это плохо отразится на быстродействии, начнутся сличения и синхронизаци кэшей.

2 уровня - 256Кб, то же самое, но медленнее (на более дешёвой памяти)

3 уровня - 2..8 Мб, общий на все ядра.

Подробнее читай про архитектуру процессоров сам. Интернет большой.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 10.09.2015 17:26:28

Cheb писал(а):1 уровня - 64Кб, у каждого ядра свой, но, ЕМНИП, с механизмом синхронизации кешей у ядер.
2 уровня - 256Кб, то же самое, но медленнее (на более дешёвой памяти)
3 уровня - 2..8 Мб, общий на все ядра.

Хорошо, берём во внимание все три памяти: и 1-уровня, и 2-уровня, и 3-уровня, соответственно остаётся ещё 4-уровня - это память PC (она ещё медленнее) и 5-уровня - это HDD или FDD диск(самые медленные).

Минуя первые три уровня памяти - данные могут попасть к ядрам процессора? Или вначале всегда (из 4 или 5) загружаются в 1,2,3-уровня память? Соответственно кусочек больше чем 2..8 Мб (см. 3-уровень), процессор параллельно не способен обработать. Соответственно организовывается ПОСЛЕДОВАТЕЛЬНАЯ очередь из кусочков 2..8 Мб, и такая очередь не параллельная. А параллельные вычисления, это грубо говоря, когда существуют МИНИМУМ два стека порядка действий. Такое возможно только на разных машинах. А здесь один стек на 32 ядра или 2 стека если на мат плате два процессора. Поэтому, вычисления псевдо-параллельные и имеют какой-то приоритет, потому что, перед 4-мя ядрами - находится один стек (человеческая аналогия: одна очередь в четыре кабинета). И именно поэтому, машина с процессором 4-ре ядра, априори медленнее чем аналог на мат. плате с двумя процессорами по два ядра (хотя мощность и параметры: 1 процессора 4-ре ядра, указана равноценной 2-м по 2-ядра)

:?: :arrow: Разве не так? Я ошибаюсь?


Добавлено спустя 1 час 11 минут 11 секунд:
Таким образом достоверно установлено, малышка: GoTo - может затормозить работу процессора, только в том случае, если скачет с перезагрузкой больших объёмов данных.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: (решено) GoTo или repeat until?

Сообщение Cheb » 11.09.2015 15:12:47

Соответственно организовывается ПОСЛЕДОВАТЕЛЬНАЯ очередь из кусочков 2..8 Мб, и такая очередь не параллельная.

Нифига. Эти 2..8 Мб состоят из множества кусочков (надо смотреть, какого объёма) и обслуживают ядра по принципу "кто первый пришёл-того и тапки". Образно говоря, общая куча.
По аналогии, вапример, виртуальная память организована страницами по 4 килобайта, и такими же кусками скидывается на диск когда физической памяти не хватает (у 64-битных систем чуточку сложнее). Когда Паскаль просит Виндовс дать память для кучи, Виндовс делает это в целом числе 4-килобайтных страниц. А уже менеджер памяти паскаля разбивает эти страницы на более мелкие кусочки, напрмер, для строки из трёх букв.

Если несколько ядер активно ломятся к памяти - они начнут толкаться локтями, замедляя друг друга. При этом не ломящиеся к памяти продолжат работать на полную мощность.

Минуя первые три уровня памяти - данные могут попасть к ядрам процессора? Или вначале всегда (из 4 или 5) загружаются в 1,2,3-уровня память?

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

с процессором 4-ре ядра, априори медленнее чем аналог на мат. плате с двумя процессорами по два ядра
Разве не так? Я ошибаюсь?

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

Сейчас самые навороченые системы начинают использовать архитектуру где у каждого процессора на аплате - своя память, а другие процессоры могут лазить в неё, но это медленно.
Но! Требуется новые операционные системы и языки программирования для работы этого, и по любому это уже суперкомпьютеры по заоблачным ценам.
Паскаль же поддерживает 99.999% обычных компьютеров, у которых, кстати, контроллер шины памяти теперь встроен в процессор, так что два таких на одну материнку уже не посадишь (или я тут ошибаюсь?)

- может затормозить работу процессора, только в том случае,

Слишком чёрно-белое мышление. Никто ничего не заморозит, самое свинское поведение одной программы лишь замедлит всё раз этак в пять - десять.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 11.09.2015 15:55:20

Cheb писал(а):Образно говоря, общая куча.

Общая куча - это стек? Правильно? Стек последовательный или параллельный?
Полагаю первое. А вот уже после стека(кучи) - включается параллельная обработка.
Всё это доказывает что, Вы - абсолютно правы, про чанки. А относительно параллельности, у нас разное понимание, но я с Вами согласен.

Художникам, осталось только научиться готовить грамотный блендер для данных, и вуаля: возможно мощности процессора хватит.
Спасибо, хорошего дня и настроения!


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: (решено) GoTo или repeat until?

Сообщение Cheb » 11.09.2015 18:07:46

куча - это стек? Правильно?

Иди отседова нафиг, учить терминологию. Изображение
И не возвращайся, пока не перестанешь бредоносить и путать стеки (stack) с кучами (heap).
Cheb out. Изображение
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 11.09.2015 18:21:23

Cheb писал(а):Нифига. Эти 2..8 Мб состоят из множества кусочков (надо смотреть, какого объёма) и обслуживают ядра по принципу "кто первый пришёл-того и тапки". Образно говоря, общая куча.

Так стек последовательный или параллельный? Значит процесс в стеке параллельный или последовательный? Минуя стек, данные могут попасть к процессорам? А зачем Вы мне тогда кучу подсовываете? Куча(динамически распределяемая память) вообще роли не играет на параллельность процесса. И в куче, кстати тоже всё последовательно. Только память 64 кб. у array [2..32] процессоров - параллельна, а всё остальное последовательно.


.
Последний раз редактировалось vitaly_l 11.09.2015 22:54:59, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: (решено) GoTo или repeat until?

Сообщение скалогрыз » 11.09.2015 21:28:51

vitaly_l писал(а):Значит процесс в стеке параллельный или последовательный

ты же художник!
ты не должен думать о бренном металле! который ещё и меняет свой функционал от железячки к железячке!
ты должен думать о красоте и элегантности алгоритма!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 11.09.2015 22:34:12

скалогрыз писал(а):ты же художник!

Да я даже рисовать-то не умею...
а Вы "заставляете" думать: "о красоте и элегантности алгоритма!"...
О стихах, точнее о рифмах, я уже думал... и к чему это привело?

Видео драйвер слетел и не хочет показывать...
Дурацкий WFV, в файл картинку сохранить без проблем .
Видео записать, тоже просто. Но снять один кадр, НЕ отображая его на дисплее...
второй день рою... а ведь они (в MSDN) как-то делают.
Вот они не думали: "о красоте и элегантности алгоритма", т.к. на три функции 333 процедуры и все почти одинаковые, а нужной нет...


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: (решено) GoTo или repeat until?

Сообщение скалогрыз » 11.09.2015 22:47:13

два основных навыка для программиста:
1) уметь читать документацию
2) уметь читать и отлаживать чужой код.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: (решено) GoTo или repeat until?

Сообщение vitaly_l » 11.09.2015 22:53:50

скалогрыз писал(а):два основных навыка для программиста:
1) уметь читать документацию
2) уметь читать и отлаживать чужой код.

Спасибо - эти советы, мне помогут в трудную секунду.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru