LINUX.ORG.RU

Метапрограммирование - проблемы и пути их решения.

 , ,


12

6

Пичал я тут на днях токенайзел для C++-кода, но всё это меня добило я решил поделится.

Проблема - мне надо было вычислять сложные значения для таблицы в компилтайме, да можно на сишке сделать через жопу(енумы) и макросы, но мне стало лень. Да можно сгинерить, но мне тоже лень.

Шблонную магию плюсов я не люблю, ибо она ущербна чуть более, чем полностью и тут я вспомнил, что оказывается в плюсах хотели ввести компилтайм функции, аля constexpr и подумалось мне - во, плюсы затащат и как всегда я в очередной раз убедился в ущербности плюсов и так и не понял логики тех, кто это запилил.

Чтобы не быть голословным пишем что-то типа

constexpr uint64_t f(uint64_t a, uint64_t b) {
  return a + b; 
}
Всё ок, но пишем что-то сложнее, аля:

uint64_t m[] = {0, 1, 2, 3, 4};
constexpr uint64_t f(uint64_t a, uint64_t b) {
  return m[a] + m[b]; 
}

Бида( или это моё неосиляторство плюсов?), дак зачем они запилили эту фичу, если она может лишь галимую примитивщину? Шаблоны ещё ущербней. В чем приемущество? Зачем?

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

Т.е. я не хочу каких-то макропроцессоров и скриптовых языков - я хочу, чтобы, если я написал constexpr - оно должно до последнего пытаться собрать то, что я написал и уже только тогда, когда оно реально это не сможет - отвалиться.

У меня есть 3 пути: терпеть, пилить свой язык и конпелятор самому( что долго и нудно) и ваш совет.

Ответ на: комментарий от AIv

Пациент тут вообще недавно вонял, что плавучка не нужна. Представляешь, как это животное будет решать такую задачу на fixed point?

anonymous
()
Ответ на: комментарий от superhackkiller1997

gcc написан очень просто, тупо и прозрачно. Если тебе трудно его понять, то это просто говорит о твоем низком профессионализме и крайне низком уровне интеллекта.

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

Ну он же признался: «ибо моё мышление ограничено тем, что я имею.» (ц)

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

Насчет всего остального долго ржал.

А ну да, а ну да. Детский сад вторая группа. Непредсказуемые ветвления+овердесяток инструкций на символ - я вижу в тебя оптимизаторскую жилку. Адачи в написании чего-то сложнее хелворда.

Вы ничего не поняли, из того что написано по той ссылке. Вообще.

Я читаю - градус ущербности и анскильности перешагнул порог предела - я дропнул.

Оптимизация алгоритма (в т.ч. с учетом особенностей работы ЦПУ) дает прирост куда больший (порядки), чем оптимизация реализации алгоритма. Всегда. БПФ порвет обычный Фурье. Поиск делением пополам на питоне порвет в клочья поиск перебором на асме, какой бы мегагуру его не писал.

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

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

Ну да, мне не интересны мистические числодробилки уровня неосиляторства.

Вот Вам сходу две задачки.

Мне твоя портянка ниочем не говорит - напиши или найди мне влобовую реализацию. А так же то, что надо счить и то, что должно получиться и описание почему оно должно так получиться.

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

Вот давай я тебе объясню, почему этот околонаучный сброд обречён на ниудачу, почему числодробилки прикладного уровня работают на пределе их мечтаний.

Хотя ладно ты слишком анскиллед в софтварной части, чтобы это понять. Вот видишь его постановку задачи, прям как у тебя, аля «нам надо посчитать» - для чего надо и кто это будет юзать - ему не интересно. Почему с таким-то шагом - ему тоже не интересно. А всё почему? Потомучто не он себе ставит задачи - он безвольный исполнитель с мышлением ограничем своей бумажкой.

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

Вот и получилось как у тебя, побалаболил, конкретики 0, а зато профессианал. Ах да, почему фикседпоинтом не решить?

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

Почему-то ваши выхлопы такие глупые, что я просто поражаюсь - они говорит запили то, незнаю что. Второй говорит - запили то, незнаю что.

Когда же дело доходит до «что тебе конкретно надо» - в ход идут «ты идиот, нихрена не знаешь».

Вон тебе пример из соседнего треда - пациент предложил мне запилить авл-дерево, а вот зачем, что он будет и как хранить и для чего оно ему нужно - он ответить не может.

Тутошный пример - почитай, а как он будет юзать и для чего - он ответить не может - это первый признак бесполезности.

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

Заметь, оно не должно тормазить так же, как остальные 99.(9)% ЯП. Мне не надо ради этого строить вм, или вообще уберать разделение компил и рантайма, как в твоём пхп и 80% других ЯП.

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

вот это:

Моя логика: Я могу в компилтайме юзать всё, даже не константы, значения которых доступны конпелятору, даже если в компилтайме они меняются. Функции делить не надо, ибо конпелятор должен выполнять мой код, а потом уже мне говорить о том, что это сделать нельзя.

называется «логика PHP»

А вот это:

Заметь, оно не должно тормазить так же, как остальные 99.(9)% ЯП.

называется «наивные мечты маленького мальчика».

Мне не надо ради этого строить вм, или вообще уберать разделение компил и рантайма, как в твоём пхп и 80% других ЯП.

я уже понял, что все ЯП === говно. И жду нового, модного, молодёжного. Который ты несомненно написал.

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

жду нового, модного, молодёжного. Который ты несомненно написал.

Животик же надорвёт.

anonymous
()
Ответ на: комментарий от superhackkiller1997

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

Ну да, мне не интересны мистические числодробилки уровня неосиляторства.

а что тебе интересно?

Мне твоя портянка ниочем не говорит

почему я не удивлён?

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

называется «логика PHP»

Называется я не осилил пхп.

называется «наивные мечты маленького мальчика».

Нет, ничего сложного в этом нет. Твой скилл слишком на дне, чтобы это понять.

я уже понял, что все ЯП === говно. И жду нового, модного, молодёжного. Который ты несомненно написал.

Модный и молодёжный он не будет никогда, а максимум, что он вызовет у тебя - это попоболь и ненависть, ибо ты слишком анскелен и он будет на 99% состоять из уб.

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

называется «логика PHP»

Называется я не осилил пхп.

мне жаль тебя.

Нет, ничего сложного в этом нет. Твой скилл слишком на дне, чтобы это понять.

ну давай готовый код, посмотрим в работе.

Модный и молодёжный он не будет никогда, а максимум, что он вызовет у тебя - это попоболь и ненависть, ибо ты слишком анскелен и он будет на 99% состоять из уб.

пока твои потуги вызывают лишь усмешку.

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

а что тебе интересно?

Есть 2 мира числодробилок - это считание неизвестно чего и неизвестно как, как делает пациент выше. Их комьюнити на 95% состоит из анскиллед «учёных», которые сишку асилили где-то на твоём уровне.

А есть мир реальных, прикладных числодробилок. Которые считают реальные вещи и для реального мира. Комьюнити которых больше, чем на 30% состоит из людей, которые осилили сишку и архитектуру.

Выбири кокий мир мне интересен?

почему я не удивлён?

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

Первая основа перфоманса - это запил снизу вверх, т.е. всё исходит от особенностей нижнего уровня и основу перфоманса даёт именно учёт этих особенностей.

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

Пример, ибо ты не поймёшь - вот ты пилишь определятор ключевых слов для ЯП - какие твои действия? 95% лалок, типа тебя заюзают какой-нибудь хешмассив или ещё хуже какое-нибудь дерево. А почему вы его заюзали? Вы анскиллед. Нормальные человек человек запилет табличку, которая за 2-3комменды даст тебе да/нет, либо хотябы для хешмассива заюзает перфектхеш.

Вон там анонимус( такой же анскиллед, как и ты - сишка уровня 1курса недовуза) ржал над фикседпоинтоп, а почему? Они - дети кас"ов и сапр"ов - у них мозг воспалён чуть более, чем полностью. У них даже в мозгу( только когда с реализацией так припекло, что по другому никак) мысли, что нужно ограничеться потребностями того, для чего ты это считаешь не возникает.

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

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

Ты думаешь у тебя есть хоть один шанс? Ты будешь слит столько раз, сколько захочешь, пока твоё жалкое самомение не уйдёт на такое дно, что ты кроме «ололо - ты лох» ничего вякнуть не сможешь.

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

Мне твоя портянка ниочем не говорит

Что надо считать я написал. Любой бол-мен вменяемый студент (я не говорю про мегагуру вроде Вас, у меня аж дух захватывает от того, с каким гигантом мысли мне тут посчастливилось общаться) сделает обе задачи максимум за день (это если он забыл синтаксис ЯП). Если есть вопросы по постановке - задавайте, если нет делайте. Но в общем то никого не удивит, что все Ваши громкие заявление про то насколько Вы круты, насколько Вы выше всех остальных здесь присутствующих - это не более чем заявления 16ти летнего пацанчика пытающегося поднять ЧСВ.

- напиши или найди мне влобовую реализацию. А так же то, что надо счить и то, что должно получиться и описание почему оно должно так получиться.

Может мне потом ее еще за Вас соптимизировать? Лобовая реализация занимает 20-30 строк кода (если не экономить), что для первой задачи, что для второй. Вперед, герой! Или уже слейтесь отсюда.

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

А есть мир реальных, прикладных числодробилок. Которые считают реальные вещи и для реального мира. Комьюнити которых больше, чем на 30% состоит из людей, которые осилили сишку и архитектуру.

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

Пример, ибо ты не поймёшь - вот ты пилишь определятор ключевых слов для ЯП - какие твои действия? 95% лалок, типа тебя заюзают какой-нибудь хешмассив или ещё хуже какое-нибудь дерево. А почему вы его заюзали? Вы анскиллед. Нормальные человек человек запилет табличку, которая за 2-3комменды даст тебе да/нет, либо хотябы для хешмассива заюзает перфектхеш.

Гыыыы... в этом месте меня настигло просветление! Вас не учили (ах да, Вы ж тока школу закончили), что имеет смысл оптимизировать только то, что тормозит, и что минимизировать надо не время работы программы а время разработки + время работы программы? Для чего Вы пытаетесь ускорить поиск по ключевым словам интересно? ИДЕ что бы быстрее хайлайтило Ваш код?

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

Гыыыы... в этом месте меня настигло просветление! Вас не учили (ах да, Вы ж тока школу закончили), что имеет смысл оптимизировать только то, что тормозит, и что минимизировать надо не время работы программы а время разработки + время работы программы? Для чего Вы пытаетесь ускорить поиск по ключевым словам интересно? ИДЕ что бы быстрее хайлайтило Ваш код?

Ты тудумаешь я не разгатал твой примитивный шаблон мышления с первого взгляда? Ты не думал, почему я привожу тебе уже в 10-й раз пример шланга? Вот погугли на чём зафейлились грандиозные идеи шланга.

Даже банальная оптимизация распознования ключевых слов даст чуть ли не единицу милисекунд на портянку, если не пару. А таких оптимизацией сотни - вот посчитай.

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

Ещё раз напишу - время разработки для меня не принципиально, ибо я клал на твой «пилюзаедумир» и для меня это не аргумент.

Пока ты писал ту портянку на ифе - я писал 3строчки и сгинерил табличку, а тебе надо запилить для твоего ифа его обвязку и в конечном итоге даже строчек больше, но ты об этом не думаешь.

Ты так же не подумал, во что привратятся твои ифы, ибо в яп типов допопы - будешь 10+ифов ставить и их компоновать? Очередной индус, который рассуждает о разработке, будучи тотальшейшим недалёкодумающим анскиллед.

И да, это не оптимизации - это провальный подход. Ты должен пилить так, как ЛУЧШЕ подходит для данного случая, чему тебя конечно же не учили в недовузе.

Для 95% пилилщиков твоего масштаба конечный автомат + массивчик хандлеров - это верх совершенства и вы будете изрыгать тонны шаблонно-стльного месива, вместо 5строк.

Все твои время разработки + время работы работают только в рамках 95% анскиллед аудитории, когда пилильщик понимает лишь примитивщину и слаб, чтобы быстро осилить что-то. Для более-менее вменяемых скиллбейсед ребят - это не увеличивает время разработки( ибо я об этом думал меньше часа, остальное время я читал стандар и делал 2.6фейспалма в секунду из-за его ущербности).

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

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

Что надо считать я написал. Любой бол-мен вменяемый студент (я не говорю про мегагуру вроде Вас, у меня аж дух захватывает от того, с каким гигантом мысли мне тут посчастливилось общаться) сделает обе задачи максимум за день (это если он забыл синтаксис ЯП). Если есть вопросы по постановке - задавайте, если нет делайте. Но в общем то никого не удивит, что все Ваши громкие заявление про то насколько Вы круты, насколько Вы выше всех остальных здесь присутствующих - это не более чем заявления 16ти летнего пацанчика пытающегося поднять ЧСВ.

Навать какаху на бомжелибе и даблах может любой ущербан - мне это не интересно. Ты что такой глупый, а?

МНЕ НЕ НУЖНА ЗАДАЧА ТИПА «СДЕЛАЙ ТО, НЕЗНАЮ ЧТО». Для чего ты это считаешь? Что юзает твои расчёты? Мне не интересны абстрактные недозадачки уровня недовуза.

И да, мне не нужно поднимать своё ЧСВ, ибо я итак царь.

Может мне потом ее еще за Вас соптимизировать? Лобовая реализация занимает 20-30 строк кода (если не экономить), что для первой задачи, что для второй. Вперед, герой! Или уже слейтесь отсюда.

Как турдно говорить с глупыми лалками. Посчитай мне площать круга с радиусом 1, пойми почему эта задача без контекста не имеет смысла и почему твой выхлоп фуфло.

Про 20-30строк я писал выше.

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

Профессионал возьмет и сделает. А сосунок будет искать себе оправдания, что мол «код вызывает два фейспалма в секунду», и потому он этот код править не может. Этим профессионал от ничтожного сосунка и отличается. Профессионалом тебе не стать никогда.

anonymous
()
Ответ на: комментарий от superhackkiller1997

И да, мне не нужно поднимать своё ЧСВ, ибо я итак царь.

Вообще-то ты невежественный клоун и тупое ничтожество. И тут не найдется ни одного, кто с этим утверждением был бы не согласен.

anonymous
()
Ответ на: комментарий от drBatty

И жду нового, модного, молодёжного

И танцевального: «Тили-тили... Трали-вали... Это вам не... тили-тили» (с)

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

А есть мир реальных, прикладных числодробилок.

Или приведи конкретный пример, или ты клоун и балаболка.

Которые считают реальные вещи и для реального мира.

Приведи примеры «реальных вещей для реального мира». Например, computational chemistry - это «реальная вещь для реального мира», или так, анскиллд изимодная херня (я правильно твой детсадовский арго воспроизвожу, а, сосунок?).

anonymous
()
Ответ на: комментарий от superhackkiller1997

Почему-то ваши выхлопы такие глупые, что я просто поражаюсь - они говорит запили то, незнаю что. Второй говорит - запили то, незнаю что.

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

Тяжело тебе жить с IQ ниже среднего, да?

anonymous
()
Ответ на: комментарий от superhackkiller1997

Расскажи-ка публике, смешное ничтожество, как это сопромат связан с ЧПУ?

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

Вообще-то ты невежественный клоун и тупое ничтожество. И тут не найдется ни одного, кто с этим утверждением был бы не согласен.

Я не согласен. Супер хакер настолько толст, что это даже тонко. По стилю очень сильно напоминает великаго Дениску Попова.

anonymous
()
Ответ на: комментарий от superhackkiller1997

Ещё раз напишу - время разработки для меня не принципиально

По ходу поциент еще ни разу не работал.

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

И да, мне не нужно поднимать своё ЧСВ, ибо я итак царь.

я хотя-бы понял, нафейхуя на ЛОРе игнор. Это список царей итаке.

drBatty ★★
()

У меня есть 3 пути: терпеть, пилить свой язык и конпелятор самому

вместо того, чтобы угомониться и заполнять массив во время выполнения? Ну или на худой конец заполнять его отдельной программой и записывать в blah_blah.h Это тебе лень, а писать свой компилятор не лень?

Ты упорот.

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

Мне б конечно хотелось увидеть в Вашем исполнении параллельную версию кода.

дык оно как раз отлично параллелится. Правда я не знаю, как оно на плюсах реализуемо :) Это для каждого узла сетки надо новый поток создавать, как-то так.

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

А есть мир реальных, прикладных числодробилок. Которые считают реальные вещи и для реального мира. Комьюнити которых больше, чем на 30% состоит из людей, которые осилили сишку и архитектуру.

ты просто невменяемое школиё походу. нет никаких «реальных» и «нереальных» числодробилок. То же уравнение теплопроводности, что тут Alv вкинул - основа всех программ FEM.

и работает оно только благодаря «анскиллед» ученым, которые соизволили придумать и проанализировать нужные алгоритмы.

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

Не надоело балаболить?

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

МНЕ НЕ НУЖНА ЗАДАЧА ТИПА «СДЕЛАЙ ТО, НЕЗНАЮ ЧТО». Для чего ты это считаешь? Что юзает твои расчёты? Мне не интересны абстрактные недозадачки уровня недовуза.

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

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

Напишите хотя бы простое решение в лоб, а то никто на ЛОРе не видел ни единой строчки Вашего кода, кроме каких то бредовых примеров - и мы продолжим этот разговор. Но пока Вы этого не сделаете, я как все остальные здесь присутвующие, буду считать Вас 16ти летнем треплом, Царем балаболов.

Итак пример числодробилки и пример кода. Очень жду.

Посчитай мне площать круга с радиусом 1, пойми почему эта задача без контекста не имеет смысла и почему твой выхлоп фуфло.

Если человек не в состоянии посчитать площадь круга (без контекста) то с ним бесполезно говорить об аналитической геометрии. Вы нихрена не знаете в предметной области, Вы не умеете программировать, и Вы демонстрируете фантастическое ЧСВ. Попробуйте доказать обратное хотя бы мне - я очень толерантен.

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

Слушай, с таким персонажем никакого цирка не надо. Жванецкий, Зощенко, Луи де Финес и Ко отдыхают, нервно курят в сторонке и не знают куда деть руки как нашкодившие детишки.

За 15 лет преподавания уж какие у меня студиозусы попадались - думал что уже разучился удивляться... но ничего подобного я никогда не видел, это экспонат для кунсткамеры.

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

дык оно как раз отлично параллелится.

ЧТо бы подсистема памяти справлялась, при большом размере задачи, оно хреново параллелиться.

Это для каждого узла сетки надо новый поток создавать, как-то так.

Это на GPGPU что ли? Я в них не очень, но там все на синхронизациях заткнется, данными то надо обмениваться... хотя м.б. и ничего будет. Но опять таки, большая задача будет аццки тупить из за памяти. А маленькие не интересны;-)

Да мне бы от ТС-а хоть какого нить решения добиться, но не надеюсь.

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

Это для каждого узла сетки надо новый поток создавать, как-то так.

Это на GPGPU что ли? Я в них не очень, но там все на синхронизациях заткнется, данными то надо обмениваться...

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

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

Все правильно. Теперь представьте, что две полные матрицы занимают как раз всю доступную память, и вспомните про темп доступа к памяти (надо ведь обращаться к соседям, а при трад. организации данных 2 соседа из четырех лежат очень далеко). При том, что на шаге действий очень мало (2* и 4+), проц в основном будет не считать а ждать данные. В один поток этого невидно - память справляется, а вот когда молотишь в много потоков...

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

Он скорее под луговскава косит, такой же недоумок.

anonymous
()
Ответ на: комментарий от AIv

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

потом, количество процессоров даже на GPU намного меньше, чем размер матрицы. Ну допустим по максимуму 10000. это вроде в кэш влезет даже. А вот как устроен кэш я не знаю. Он разрешает одновременный доступ к памяти?

dikiy ★★☆☆☆
()

И при чём здесь си? Вот нафига ты его в теги добавил? Ты совсем уже? 1997 - год рождения штоле? В сях такая штука заведомо делается руками, или m4, в виде статического массива структур со всякой фигнёй внутри. Пиши-код-рф и всё такое. Кодогенераторы для девочек.

Шаблоны ещё ущербней.

Я бы ответил, но мне воспитание не сильно позволяет.

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

потом, количество процессоров даже на GPU намного меньше, чем размер матрицы. Ну допустим по максимуму 10000. это вроде в кэш влезет даже.

Ок, Вы эту тыщу обработали. А как со следующей быть?;-) Пока она до кэша доберется, будет ой как долго...

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

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

ну насчет организации - можно положить ячейки в шахматном порядке,

Лучше по Z-кривой (см. фрактал Лебега или числа Мортона).

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

Ок, Вы эту тыщу обработали. А как со следующей быть?;-) Пока она до кэша доберется, будет ой как долго...

сначала загрузить в кэш, а потом обрабатывать.

но вообще конечно NUMA решает :)

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

так она грузится будет дольше, чем первая тыща посчитается:-)

но вообще конечно NUMA решает :)

скорее мешает;-)

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

так она грузится будет дольше, чем первая тыща посчитается:-)

не страшно. упрется все равно все в пропускную способность памяти. то есть в архитектуру. Больше все равно не выжать.

но вообще конечно NUMA решает :)

скорее мешает;-)

нифига. Вот смотри: есть кластер. У каждого процессора своя память. Грузим туда соответствующие куски, они считают там себе каждый, через каждую итерацию придется только синхронизировать ячейки, которые на «разрезах» лежат.

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

не страшно. упрется все равно все в пропускную способность памяти. то есть в архитектуру. Больше все равно не выжать.

как ни странно - выжать. Можно сделать так, что бы упиралось во флопсы.

нифига. Вот смотри: есть кластер. У каждого процессора своя память. Грузим туда соответствующие куски, они считают там себе каждый, через каждую итерацию придется только синхронизировать ячейки, которые на «разрезах» лежат.

домайн-декомпозишион, все так делают, ага. Дальше имеем разбалансировку загрузки (все встает колом из за одного узла), а при увеличении числа узлов накладные расходы на пересылку съедают весь профит. Рисуем кривую в координатах число_узлов-ускорение, говрим что на скажем 16ти узлах получили насыщение - ну на них и будем считать.

Если я скажу, что можно получить 100% ускорение на любом числе процессоров - поверите?;-)))

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

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

Почему ты такой глупенький, а? Я не могу делать что-то не зная для чего оно. Это основа моего метода запили и моего интереса.

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

А всё исходит из постановки задачи. Ты мне кинул задачку уровня недовуза, что она м не даст? Я ничего не знаю. Я не знаю для чего считаю, я не знаю что считаю для кого и как. Это убивает а) моё желание что-то пилить, б) мне просто не интересно страдать фигнёй.

Именно поэтому я лах и программистом мне никогда не быть и им я себя не считаю, я просто школьник, которому интересно пилить что-то. Я дропаю любую задачу в которой объективно мне не хватает информации, либо я знаю, что я при нормальной постановке сделаю его в разы лучше.

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

Да дело не в том, что они не актуальны, дело в том, что:

Давай я разберу ту твою ссылку:

Уравнения Власова-Максвелла (метод PIC) для плазмы в Холловских двигателях, взаимодействия сверхмощного лазерного импульса с веществом;

Для чего? Что это даст, в каком виде и для чего надо - ничего нет. Да, ты начнёшь говорить - иди кури матчасть, но дело не в этом - погонял ты туда-сюда даблы, получил ты свои циферки - что дальше? Для чего ты их получил? Почему тебе нужны именно такие циферки, а не другие? Мне это не ясно, никто не объяснил - я не могу нормально пилить.

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

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

Моделирования чего идля чего? Какое моделирование? Ещё раз повторю, мне не надо объяснять как ваши задачки полезны - мне надо объяснять на уровне идиота, Аля «вот мы получаем таку циферку - она должна быть такой-то и такой-то, ибо она для того-то и быть она должна такой потому-то. И потом не слить со мной разговор о том, что она должна быть такой». И когда я уже пому какие циферки вам РЕАЛЬНО нужны - я уже буду думать как это запилить на том, на чём это надо считать.

Напишите хотя бы простое решение в лоб, а то никто на ЛОРе не видел ни единой строчки Вашего кода, кроме каких то бредовых примеров - и мы продолжим этот разговор. Но пока Вы этого не сделаете, я как все остальные здесь присутвующие, буду считать Вас 16ти летнем треплом, Царем балаболов.

95% сдесь присудствующих слили споры о матчасти и всех околотутошных темах просто в щи, а какбэ мнение глупых сливателей и балаболов меня не очень-то и волнует.

Что такое реальные числодробилки я уже описал.

Если человек не в состоянии посчитать площадь круга (без контекста) то с ним бесполезно говорить об аналитической геометрии. Вы нихрена не знаете в предметной области, Вы не умеете программировать, и Вы демонстрируете фантастическое ЧСВ. Попробуйте доказать обратное хотя бы мне - я очень толерантен.

Приблеженную площать на дублах и M_PI - да, но суть не в этом. А теперь расширим задачу - посчитать площать миллиардов кругом и поймём, почему задачи вида «посчитай площать миллиардов кругом и заоптимизируй её» лишена вменяемом смысла без указания того, для чего эта площать будет юзаться.

Да, конечно очень интересно заюзать даблы и M_PI, а потом думать почему тормазит, а потом думать почему мы так считали для того, чтобы посчитать площать нужного нам листа для рисования этих кругов, когда лист нам могут отрезать с точность в сантиметрах.

Хотя авось M_PI и дублов нам мало? По постановки задачи этого не видно? Мб мне вообще надо реализовать софтфлоат с терабайтом на число?

Вобщем я уже достаточно объяснил в чем фейл ваших задач и почему я не могу их пилить.

Вы нихрена не знаете в предметной области

В вашей - возможно.

Вы не умеете программировать

В масштабах, исключая пхп-обезъянок, на уровне десятков.

Вы демонстрируете фантастическое ЧСВ. Попробуйте доказать обратное хотя бы мне - я очень толерантен.

А почему вы думаете, что если для вас «ты анскиллед» == «я скиловей тебя раз в 100500, жалкий лах», то это мои проблемы? Если я на кого-то говорю «анскиллед», тоя называю причины тому, да и называл я так лишь единицы человек, которые явно сливались, но продолжали балаболить.

У меня ЧСВ в вашем понимании этого понятия. У меня достаточно объективный взглят на себя и на окружающий мир, поэтому я могу объективно оценивать уровень своего понимания и уровень понимание кого-то со стороны, ибо никакого смысла понтоваться мне нет, то, что я буду понтовей какой-то лалки на лоре - мне ничего не даст.

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

У меня нет никакого желания делать что-то, что выглядит понтово для кого, поэтому мне и не надо ничего на ларе, кроме авось я найду вменяемых людей в этом мире.

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

Понимаешь, я уже говорил - мне не интересно решение проблемы. Мне интересно решить её вменяемо, поэтому да запилить массив во время выполнения мне больше лень, чем запилить конпелятор.

Да, я упорот, я не спорю.

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