Project

General

Profile

Ассемблер. Реализация POPCNT для MC P1

Added by sprin about 11 years ago

Здравствуйте.

Решил реализовать для MC P1 алгоритм реализации команды POPCNT, которая может быть использована для эффективного поиска в огромном объёме данных.
Она работает посредством подсчета количества бит множества в объекте данных.
Пример приложений, которые получат преимущества от использования этой инструкции: выявление генома, распознавание почерка, медицина и быстрое вычисление хэмминговского расстояния и заполнения.

Ресурсы:

программно-ориентированные ускорители (набор команд)
SSE4 - Википедия
chessprogramming.wikispaces.com собраны основные алгоритмы и ссылки по теме POPCNT.
Benchmarking CRC32 and PopCnt instructions


Алгоритмы реализовал (с учётом возможностей MC P1) по 4 варианта для входных значений размерностью 32 бит и 64 бит.

mc_POPCNT32_v1, mc_POPCNT64_v1 - The PopCount routine
mc_POPCNT32_v2, mc_POPCNT64_v2 - Lookup (Подстановка из таблицы на 256 элементов готовых значений)
mc_POPCNT32_v3, mc_POPCNT64_v3(+b) - Lookup (Подстановка из таблицы на 256 элементов готовых значений)
mc_POPCNT32_v4, mc_POPCNT64_v4 - HAKMEM 169


В теории, если все команды будут выполняться за 1 такт, то можно посчитать минимальное время выполнения функции, что я и сделал:

Графики (если все команды будут выполняться за 1 такт)

Show


На практике результаты не проверялись.


Replies (51)

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet almost 11 years ago

Переписали, но результат изменился незначительно. Сейчас занимаемся написанием листингов по popcnt для нашего процессора для достижения максимальной скорости. Создателя тестов для процессора Intel пригласили присоединиться к нашей дискуссии. Может быть он сможет пояснить как Intel тратит всего 6 тактов на итерацию и можно ли отталкиваться от этого результата при сравнении с нашим процессором.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by sprin almost 11 years ago

krufter_multiclet wrote:

Ну вот запустил на своём процессоре:
Т.е. получается для теста Table при 262151 итерации 561225 тактов. Откуда получаем, что на одну итерацию требуется чуть больше 2 тактов. С этим результатом мы несогласны. Мы считаем, что время в тесте измеряется неправильно.
Мы видим приведение 64-х разрядного числа к 32-х разрядному, в результате чего можем получить неверный результат по тесту процессора Intel.

1. Там за 1 цикл обрабатывается 4 байта, поэтому: 561225 / (262151 / 4) = 8,56...

2. Согласен, но там не настолько долго идёт расчёт, чтобы было переполнение.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by EviLOne almost 11 years ago

Здравствуйте, krufter_multiclet, в данной ветке вы сетуете для повышения производительности увеличить вычислительную нагрузку в параграфе, так понимаю для лучшего распараллеливания между клетками. Тогда интересует следующий вопрос, как можно просчитать производительность каждой клетки в отдельности или при выходе оной из строя? Существуют или планируются какие аппаратно/программные методы отключения клеток, так как при проектировании высоконадежных систем с центральным процессором R или L ядрами этот вопрос более чем актуальный.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet almost 11 years ago

Если вы перейдёте на работу одной, двумя или тремя клетками, то просто получится, что команды будут уходить в соответствующее количество клеток.
Сейчас я доделываю табличку по тесту popcnt и исходники, пока не хочу выкладывать кусками, на следующей неделе обязательно выложу целиком. Пока могу сказать, что за счёт увеличения нагрузки на параграф удавалось получить меньше 4-х тактов на расчёт 32-х бит, но это на процессоре Р2(т.е. мультиклеточный процессор за счёт увеличения нагрузки на параграф обгоняет Интел в 2 раза на тесте popcnt). На Р1 удавалось пока выжать только 12 тактов, но это не предел. Совмещение всего кода в одном параграфе(т.е. проверка на конец теста по Iteration.Count) на Р2 даёт уменьшение времени на 15%. Постараюсь привести в табличке время выполнения на 1-й, 2-х и 3-х клетках тест popcnt. Реконфигурация на клетки в процессоре R1 программная(за один параграф в большинстве случаев), в L1 будет аппаратная. Протестировать отладочную плату с P2 или R1 теоретически вы сможете в конце марта 2014г. Когда выйдет L1 я пока точно сказать не могу.

P.S. особая благодарность пользователю sprin, тест popcnt и наши модификации этого теста внесли положительный вклад в процессор R1 в самый последний момент.
P.P.S. также на следующей неделе постараюсь выложить советы по оптимизации кода

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet almost 11 years ago

Тесты popcnt провёл, в начале следующей недели оформлю и выложу с подробным анализом.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet almost 11 years ago

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

Результаты тестирования можно свести в следующую таблицу(количество тактов на один цикл расчёта 32-х бит):
Алгоритм Мультиклет P1 Мультиклет P2 Pentium Dual Core 5700 3.0GHz
Table 9,9 7,4 8,6
BitHacks н/д 4,0 9,5

Т.е. можно сделать вывод, что процессор Мультиклет P2 на тесте "table" быстрее процессора Intel на 15%, а на тесте BitHacks процессор Мультиклет Р2 быстрее чем Intel более чем в 2 раза. Но разумеется следует учитывать, что тест popcnt для мультиклеточного процессора был достаточно просто преобразован для параллельных вычислений.

В приложении в pdf файле приведены значения в скобках, например для одиночного теста popcnt это (15+10+14+36) - это количество тактов на выполнение параграфов Get_start_time -> code_begin -> code_loop -> code_main

Для перевода количества тактов на один цикл в 32 бита значение для (например) 4 итераций - 90 тактов делилось на 4 и получалось 22,5 тактов.
Наилучшие показатели были продемонстрированы при 8 итерациях с операцией инкремента в одном параграфе.

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

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

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

тест_popcnt.pdf (51.2 KB) тест_popcnt.pdf результаты теста
test_list.7z (26 KB) test_list.7z исходный код тестов

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by sprin almost 11 years ago

Здравствуйте.

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

Это всё конечно хорошо, но с задержкой по чтение/запись из памяти в маленьком параграфе надо что-то думать. + Задержка между параграфами тоже не маленькая. Хотя для первой реализации в кремнии неплохо.

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

Надеюсь, со временем, узкие места будут устранены в последующих изделиях. Желаю успехов.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet almost 11 years ago

На самом деле задержек между параграфами нет, срабатывает команда перехода и всё. Если в коде программы не выставлен бит PSW отмены контроля чтения и записи, то в параграфе типа(для процессора Р1):

test:
    rd
    ...
    rd
    ...
    wr
    ...
    wr
    jmp test
complete

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

В процессоре Р1 была первая в мире версия реализации мультиклеточной архитектуры. Разумеется можно быстрее. В процессоре Р2 были убраны несколько блоков и переделана работа других(в общем это совершенно новый процессор, а не модификация старого, но с поддержкой ассемблерного кода, везде где это возможно, код на Си претерпит изменения лишь в настройке периферии и в некоторых небольших моментах), как результат увеличение производительности в среднем на 30%. И конечно же можно ещё в разы быстрее, но это уже вопросы оптимизации архитектуры и её обтачивания, которые требуют времени.

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

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

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

krufter_multiclet wrote:

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

Результаты тестирования можно свести в следующую таблицу(количество тактов на один цикл расчёта 32-х бит):
Алгоритм Мультиклет P1 Мультиклет P2 Pentium Dual Core 5700 3.0GHz
Table 9,9 7,4 8,6
BitHacks н/д 4,0 9,5

Т.е. можно сделать вывод, что процессор Мультиклет P2 на тесте "table" быстрее процессора Intel на 15%, а на тесте BitHacks процессор Мультиклет Р2 быстрее чем Intel более чем в 2 раза. Но разумеется следует учитывать, что тест popcnt для мультиклеточного процессора был достаточно просто преобразован для параллельных вычислений.

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

krufter_multiclet, говоря, что мультиклет выигрывает у интела, вы хитрите. Понятно, что (а) это разговор на форуме (б) другого интела у вас может и не быть... Хотя кого я обманываю, (а) это форум на официальном сайте где любые слова от ников *_multiclet носят официальный характер в глазах простого люда (б) мой ноутбук 2 года назад уже был на Haswell-чипе с AVX2.
Ну да ладно. Pentium Dual Core e5700 - что же с ним не так 2 года назад было в моих глазах? То что к тому моменту он 2 года уже как End Of Life был, именно поэтому я не могу своим коллегам сказать радостно "А вот смотрите чо!..." потому как они мне ответят "Так с того момента расклады по тактам поменялись чуть ли не кардинально" и будут почти правы. Вот если бы на тот момент - в 2013 году - вы бы взяли бы хотя бы SandyBridge...... :-(

Второй момент. Смотрю Makefile для Intel :-) А где же ж опции оптимизации?!? ;-)
Повторяю, я не придираюсь, но это первый вопрос, который у меня возник при взгляде на табличку - как был протестирован Интел? ;-)
Итак, третий момент - тестирование

krufter_multiclet wrote:

У нас получилось на нашем процессоре от Intel для 262151000 циклов время 0m3.436s, откуда получаем 20 тактов на цикл при частоте 1,6 ГГц.
Правильно ли мы протестировали Intel?

Делением миллисекунд на такты? Неа :-) Так не точно получается. Для грубой оценки достаточно, но перфекционисты будут недовольны: лишние такты могут в милисекунды попасть, неаккуратно, в общем...
Для подобных штук существуют Hardware Performance Counters
Википедия, кратко (или в мануале, если интересно подробно)
https://en.wikipedia.org/wiki/Hardware_performance_counter
Как, например, из коммандлайн конкретно "такты считать",
Что знаю, то показываю - вот, например, в Солярке есть команда (просто Интел и Солярка дружат в этом месте, а вот линукс - не всегда):
http://docs.oracle.com/cd/E19455-01/806-0624/6j9vek52o/index.html
Посчитать количество тактов и инструкций, которые потребует выполнение команды/программы `sleep 10`
cputrack -c pic0=Cycle_cnt,pic1=Instr_cnt sleep 10

Правда, ваш E5700 не поддерживает их, ну так он и устарел уже 4 года назад :-)

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

Скопирую еще раз табличку для наглядности

Результаты тестирования можно свести в следующую таблицу(количество тактов на один цикл расчёта 32-х бит):

Алгоритм Мультиклет P1 Мультиклет P2 Pentium Dual Core 5700 3.0GHz
Table 9,9 7,4 8,6
BitHacks н/д 4,0 9,5

Т.е. можно сделать вывод, что процессор Мультиклет P2 на тесте "table" быстрее процессора Intel на 15%, а на тесте BitHacks процессор Мультиклет Р2 быстрее чем Intel более чем в 2 раза. Но разумеется следует учитывать, что тест popcnt для мультиклеточного процессора был достаточно просто преобразован для параллельных вычислений.

Для интереса и собственного развлечения оттестировал пример на Хасвеле У себя на личном ноуте
Программа для "Table" взята на предыдущей странице обсуждения (чуть- чуть модифицирована, чтобы оптимизация особо не шалила, а все-таки оставляла нужный код: например возвращаемое значение нужно все-таки поиспользовать - записать в память, и таки лучше не в локальную, а то если оно не используется, то и вычислять-то особо его не надо, тем более, что функция сайд-эффектов не имеет, можно ее тогда и не вызывать.... И тогда можно вообще сразу выходить из main, ничего не делая - очень быстро получится, 0.000001 такт на итерацию получится ;-)

http://multiclet.com/community/attachments/download/168/popcnt.cpp

Для "BitHack" кусок, вычичсляющий количество бит, взят на просторах интернета

Чип

Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz

Компилятор и опции компиляции:

$ cc -V 1.c -fast
cc: Sun C 5.12 SunOS_i386

Запуск "Table"

$ cputrack -c pic0=PAPI_tot_cyc a.out
time lwp event pic0
0.576 1 exit 1223893366

Вычисляем количество тактов на один цикл расчета:

1223893366 / 262151000 = 4.66

Запуск "BitHack"

$ cputrack -c pic0=PAPI_tot_cyc a.out
time lwp event pic0
0.662 1 exit 1225472486

Вычисляем количество тактов на один цикл расчета:

1225472486 / 262151000 = 4.7

Дополненная табличка

Алгоритм Мультиклет P1 Мультиклет P2 Pentium Dual Core 5700 3.0GHz i7-4700HQ@2400
Table 9,9 7,4 8,6 4.6
BitHacks н/д 4,0 9,5 4.7

Так что в настоящий момент Мультиклет/параллельная версия алгоритма BitHacks всего лишь немного быстрее "по тактам" (если вообще справедлива такая метрика), чем последовательный Интел-Хасвелл двухлетней давности (на любой имплементации popcnt). А вот еще на днях вышел Skylake, вновь есть куда стремиться

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by EviLOne about 9 years ago

Так что в настоящий момент Мультиклет/параллельная версия алгоритма BitHacks всего лишь немного быстрее "по тактам" (если вообще справедлива такая метрика), чем последовательный Интел-Хасвелл двухлетней давности (на любой имплементации popcnt). А вот еще на днях вышел Skylake, вновь есть куда стремиться

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

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

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet about 9 years ago

Aha wrote:

Так что в настоящий момент Мультиклет/параллельная версия алгоритма BitHacks всего лишь немного быстрее "по тактам" (если вообще справедлива такая метрика), чем последовательный Интел-Хасвелл двухлетней давности (на любой имплементации popcnt). А вот еще на днях вышел Skylake, вновь есть куда стремиться

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

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

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

EviLOne wrote:

Так что в настоящий момент Мультиклет/параллельная версия алгоритма BitHacks всего лишь немного быстрее "по тактам" (если вообще справедлива такая метрика), чем последовательный Интел-Хасвелл двухлетней давности (на любой имплементации popcnt). А вот еще на днях вышел Skylake, вновь есть куда стремиться

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

Господа, я к чему вообще весь этот некропостинг затеял: я программист-компиляторщик, который хотел бы "потрындеть за мультиклеты" с коллегами на кухне за чаем, имея при этом реальные цифры. А вот цифры как раз мне и не понравились. Чем не понравлись - я объяснил выше.
"Серверные многоядерные" для данного теста излишни поскольку тут нечего распараллеливать на многоядерность. А для мультиклета этот тест - самое то, поскольку он как раз на мелкозернистый параллелизм заточен

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

krufter_multiclet wrote:

Aha wrote:

Так что в настоящий момент Мультиклет/параллельная версия алгоритма BitHacks всего лишь немного быстрее "по тактам" (если вообще справедлива такая метрика), чем последовательный Интел-Хасвелл двухлетней давности (на любой имплементации popcnt). А вот еще на днях вышел Skylake, вновь есть куда стремиться

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

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

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

Будем ждать. Кстати в тему о тестах. Вы SPEC CPU пользуете?

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet about 9 years ago

Aha wrote:

krufter_multiclet wrote:

Aha wrote:

Так что в настоящий момент Мультиклет/параллельная версия алгоритма BitHacks всего лишь немного быстрее "по тактам" (если вообще справедлива такая метрика), чем последовательный Интел-Хасвелл двухлетней давности (на любой имплементации popcnt). А вот еще на днях вышел Skylake, вновь есть куда стремиться

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

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

Активно работаем над этим.

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

Будем ждать. Кстати в тему о тестах. Вы SPEC CPU пользуете?

SPEC насколько мне известно в память не уместится во внутреннюю и какие-то элементы там кажется были на С++. Доделаем компилятор на llvm и если удастся, то попробуем SPEC прогнать.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by sprin about 9 years ago

Здравствуйте.

Aha wrote:

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

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

Вот результаты моего замера на Intel: http://multiclet.com/community/boards/4/topics/527?r=708#message-708

Ссылку на готовый код я давал вот тут: http://multiclet.com/community/boards/4/topics/527?r=711#message-711


Что касается Multiclet P1, то надо учитывать, что это был первый чип, и мне хотелось понять концепцию и просто его протестировать.

В текущем Multiclet R1 уже введены хардварные команды POPCNT + он более хорошо оптимизирован. Хотя остались ещё узкие места, но я надеюсь, что разработчики постараются в следующей ревизии сделать свой продукт ещё лучше. (Мне кажется, что уже пора переходить на 90 нм ;) )


И я всё же думаю, что мультиклет не стоит сравнивать с Intel (особенно на других форумах. потоки "негатива" будут обеспечены), т.к. в текущей реализации он ближе к микроконтроллерам, поэтому надо сравнивать с ARM и подобными.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

sprin wrote:

Здравствуйте.

Aha wrote:

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

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

Вот результаты моего замера на Intel: http://multiclet.com/community/boards/4/topics/527?r=708#message-708

Ссылку на готовый код я давал вот тут: http://multiclet.com/community/boards/4/topics/527?r=711#message-711

Как раз-таки прочитав все с начала, включая указанные посты, я стер свой первоначальный пост и озадачился собственным тестированием (для развлекухи)

В текущем Multiclet R1 уже введены хардварные команды POPCNT + он более хорошо оптимизирован. Хотя остались ещё узкие места, но я надеюсь, что разработчики постараются в следующей ревизии сделать свой продукт ещё лучше. (Мне кажется, что уже пора переходить на 90 нм ;) )

Будем посмотреть

И я всё же думаю, что мультиклет не стоит сравнивать с Intel (особенно на других форумах. потоки "негатива" будут обеспечены), т.к. в текущей реализации он ближе к микроконтроллерам, поэтому надо сравнивать с ARM и подобными.

Ну... Это зависит от маркетингового позиционирования, о котором в данный момент мне ничего не известно :-) Хотя я могу предполагать, но это будут всего лишь догадки :-)

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

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

sprin wrote:

(Мне кажется, что уже пора переходить на 90 нм ;) )

Вот новость вчера пробегала ;-)
Это в качестве оффтопа, просто так, без связи с мультиклетом :-)
http://sdelanounas.ru/blogs/50968/

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by VaalKIA about 9 years ago

Aha wrote:

sprin wrote:

(Мне кажется, что уже пора переходить на 90 нм ;) )

Это в качестве оффтопа, просто так, без связи с мультиклетом :-)
http://sdelanounas.ru/blogs/50968/

Ну почему же без связи? У мультиклета как раз мелкосерийные заказы.
Насколько я понял, эта контора производит станки которые с использованием МЕМС могут печатать пластины 32нм-ой топологии по безмасочной технологии. До 20 станков в год, и первый станок будет уже в этом году продан какой-то Российской компании. Соответственно, надо следить - кто будет покупателем и заказывать у них следующий чип на 32нм. Учитывая специфику такого производства, я так понимаю, можно хоть одну пластину заказывать, а это значит, что сами чипы можно по предзаказу произвести (как накопится заказов на 1 пластину, так и производить).

Хотелось бы услышать комментарии от Мультиклета.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by ak_multiclet about 9 years ago

Как бы, МЭМС-головка -- это ещё далеко не весь литограф.

Следующие по сложности структуры — кремниевые электронные линзы, предназначены для фокусировки и коллимации пучков электронов. Их производство начнется к концу текущего года. Выпуск самых сложных элементов — содержащих электронику управляющих электродов — планируется начать к концу 2015 года.

Очевидно, ещё и опечатка где-то: линзы -- "к концу текущего года", а дефлекторы -- "к концу 2015". Видать, 2016.
А когда появится литограф в сборе, вообще загадка. Потом будет строительство фабрики, отладка техпроцесса, разработка библиотек и т.п.
Ну, и в очередь на производство записываться, как в садик -- за 5 лет. Плюс, появятся те, кому "нужнее и срочнее", "а для вас места нет" и т.п.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

ak_multiclet wrote:

Как бы, МЭМС-головка -- это ещё далеко не весь литограф.

Следующие по сложности структуры — кремниевые электронные линзы, предназначены для фокусировки и коллимации пучков электронов. Их производство начнется к концу текущего года. Выпуск самых сложных элементов — содержащих электронику управляющих электродов — планируется начать к концу 2015 года.

Очевидно, ещё и опечатка где-то: линзы -- "к концу текущего года", а дефлекторы -- "к концу 2015". Видать, 2016.
А когда появится литограф в сборе, вообще загадка. Потом будет строительство фабрики, отладка техпроцесса, разработка библиотек и т.п.
Ну, и в очередь на производство записываться, как в садик -- за 5 лет. Плюс, появятся те, кому "нужнее и срочнее", "а для вас места нет" и т.п.

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

Ну во-первых, есть такая народная благоглупость:

Тот, кто желает делать, ищет пути как сделать, тот кто не желает делать, ищет причины чтобы не делать

Ну и живя тут в Питере неподалеку ут Пулковской обсерватории, которая послужила прототипом "Понедельника..." Стругацких, не устаю его вспоминать:

Бессмысленно решать залачу, которая имеет решение, надо решать задачи, которые решения не имеют
(в концентрированном виде - тут: https://ru.m.wikibooks.org/wiki/Методы_Кристобаля_Хунты)

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

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by krufter_multiclet about 9 years ago

Aha, мы конечно не всегда отвечаем официально, иногда выражаем не только мнение компании, но и свое личное на основе накопленного опыта.
Процесс по организации фабрики с выпуском пластин на низкой топонорме на самом деле не является простой задачей(это на порядок сложнее даже своего компилятора для мультиклета со всеми опциями) и вероятность того, что в этом году станок заработает и выпустит работоспособную пластину у нас в стране не приближается к 90% по нашему субъективному мнению. Если мы ошибаемся и станок заработает и предложит сопоставимую цену с зарубежными фабриками, работающими на 32 нм, а также предоставит набор библиотек, то мы будем рады при первой возможности изготовить новый кристалл.
Мы тоже порадовались данной покупке, но было бы куда приятней, если бы мы не только покупали такое оборудование, но и весь цикл производства кристаллов был у нас.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

krufter_multiclet wrote:

Aha, мы конечно не всегда отвечаем официально, иногда выражаем не только мнение компании, но и свое личное на основе накопленного опыта.
Процесс по организации фабрики с выпуском пластин на низкой топонорме на самом деле не является простой задачей(это на порядок сложнее даже своего компилятора для мультиклета со всеми опциями) и вероятность того, что в этом году станок заработает и выпустит работоспособную пластину у нас в стране не приближается к 90% по нашему субъективному мнению. Если мы ошибаемся и станок заработает и предложит сопоставимую цену с зарубежными фабриками, работающими на 32 нм, а также предоставит набор библиотек, то мы будем рады при первой возможности изготовить новый кристалл.
Мы тоже порадовались данной покупке, но было бы куда приятней, если бы мы не только покупали такое оборудование, но и весь цикл производства кристаллов был у нас.

Воистину!!!
Всецело поддерживаю!!! :-)

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by ak_multiclet about 9 years ago

Да я ж тоже порадовался и испытал гордость за Отечество. Только надо быть реалистом ;-)
Ведь ни к концу текущего, ни 2016 мы, разработчики кристалла, доступа к этому производству не получим.
А так-то, конечно, здОрово.

RE: Ассемблер. Реализация POPCNT для MC P1 - Added by Aha about 9 years ago

Оптимистичнее стоит быть, а то с таким настроением мы устройств в широкой продаже на мультиклете не дождемся :-(

Вот почему, вспоминая начало "нулевых", у меня прежде всего всплывает в памяти

В 2003 году синпьютер получил приз «Лучший продукт года» на форуме новых продуктов, 
представленных на ежегодной международной конференции IEEE по цифровой обработке сигналов
«International Signal Processing Conference» в Далласе (США).

А не то, что в 2004 году прекратилось финансирование и мне пришлось идти бухгалтерам картриджи в принтере менять? :-)

(26-50/51)