Перспективы для программиста в Германии
Если Вы считаете, что что-то пояснили, то Вы жестоко заблуждаетесь. Вы лишь внесли еще большее непонимание.
Я не знаю, что именно нужно Вашим пользователям.
Я не знаю, что такое "тестовые сигналы", как именно они генерятся и какие существуют временные ограничения на их генерацию.
Я не понимаю, как при наличии аналитической модели можно испытывать проблемы с параметрами.
Я не понимаю, почему для вас медленновата функция возведения в степень и почему Вы используете медленное "железо" там, где нужны быстрые вычисления.
Я не понимаю, почему Вы не можете разделить процесс генерации самой кривой и процесс генерации тестового сигнала согласно оной.
Короче, за небольшую, но достойную :) сумму я готов решать Ваши проблемы даже с помощью телепатии. :) А если хотите нахаляву - выкладывайте подробности, а не кормите обрывочными
сведениями.
К сожалению, проблема интересна исключительно для меня. Фирма денег на это не даст. Я даже в рабочее время не могу этим официально заниматься. Хотя на будущее было бы интересно узнать Ваши расценки, так как иногда появляются проблемы для математика.
Я пока ничего не пояснял, просто просматривал последние темы и наткнулся на Ваш пост про математику.
Приехал только вчера из "Ада" и еще не отошел. Думаю, как формулы увидите все станет понятно.
> Я не понимаю, почему для вас медленновата функция возведения в степень и почему Вы используете медленное "железо" там, где нужны быстрые вычисления.
стандартная ситуация в электронике - засунуть .NET на Cortex M4 и потом плакаться, что флопов не хватает (а иногда этих флопов и в помине нет из-за отсутствия поддержки плавающей точки и крутятся она на эмуляции).
> Я не понимаю, почему Вы не можете разделить процесс генерации самой кривой и процесс генерации тестового сигнала согласно оной.
телепатирую, что это эмбеддед и ничего кроме голово шарпа туда не влезает, а так как у того же кортекса оперативки 64К (я не оговорился, да только 64 килобайта или около того) то мечтать о адекватных вычислениях на лапаке не приходится.
"Меня терзают смутные сомненья" (с)
В смысле, возникли аналогичные подозрения. Если бы я знал, что сие подразумевалось изначально, то не вылазил бы вообще со своими "вумными" советами.
PS. Кстати, можно тупо хранить в памяти таблицу косинусов или даже степеней косинусов. Что резко снизит выч.затраты - интерполирование принципиально жрет меньше ресурсов. Таблицы Брадиса рулят!
один из параметров будут степени для синуса/косинуса, а функция POW получается медленоватой
------
А тебе оно не нужно.
Когда получаются подобные требования, то есть смысл сделать табличку... ну 100х100 в большинстве случаев будет достаточно.
Индексация - приведенные параметры, а в клеточки - прописываешь... нее, не результат расчета, а предписываемое действие...
ну или указатель на функцию-реакцию...
и все начинает летать...
> PS. Кстати, можно тупо хранить в памяти таблицу косинусов или даже степеней косинусов. Что резко снизит выч.затраты - интерполирование принципиально жрет меньше ресурсов. Таблицы Брадиса рулят! спок
сейчас много ресеча в этом направлении. У меня в моей аппаратуре при потреблении около 10 ватт удается вычислять примерно 10 миллиардов тригонометрических операций в секунду (sin, cos, atan2) в основном с точностью сравнимой с double precision. Аналогичная вычислительная мощность на писишках достигается только на 32 ядрах ксеона на 4ГГц. То есть если понимать как, то и на эмбеддед можно терафлопы получать.
Но телепаты в отпуске, и пока не будет озвучена платформа и то, что надо фиттить, думаю, дальше бессмысленно обсуждать.
64 килобайта или около того) то мечтать о адекватных вычислениях на лапаке не приходится
------
Бред.
В стародавние времена у меня декомпилятор работал в 8К... туда же еще и Бейсик грузился...
И все адекватно считалось...
По непоняткам в .НЕТ...
Есть два массива, отсортированные по ключам, Делается выборка пар по заданному критерию.
аналог джойна...
Так вот нефига не понимаю почему даже вылизанный код работает медленнее ЛИНКа...
Единственное, что в голову приходит, так это то, что реализация ЛИНКа нефига не .НЕТовская...
> Когда получаются подобные требования, то есть смысл сделать табличку... ну 100х100 в большинстве случаев будет достаточно.
не забываем, что даже такая маленькая табличка в 10 тыс элементов уже не лезет в кеш первого уровня (16КБ у современных интелов) и бегать по ней процессор будет уже несколько тактов, сильно тормозя вычисления и вынося все остальные вычисления из быстрого кеша со всеми вытекающими тормозами.
> Бред.
> В стародавние времена у меня декомпилятор работал в 8К... туда же еще и Бейсик грузился...
и у вас там лапак из бейсика вызывался - улыбнуло :)
10 миллиардов ... с точностью сравнимой с double precision.
-----
И?
Замена не СИН/КОС/ТАН таблицами, а всего выражения где они используются, на таблицу... особенно, если входные/выходные параметры можно сильно огрублять без заментого ущерба, даст еще пару порядков по скорости.
Вот пару недель как заменил выборочно-расчетную часть у себя по этой методике - время упало с где-то 40 секунд по 0.6 секунды... нужно еще по ходу поменять константы для исключения деления - все будет бегать в "реальном времени"... Хотя... у меня ограниченное количество входных данных - могу и этот расчет загнать в таблицу - будет где-то 0.2 сеk...
То есть если понимать как, то и на эмбеддед можно терафлопы получать.
-----
Из одной старой задачки...
Надо было обучить робота балансированию предметом.
Начальный вариант - считали форму предмета, определяли центр тяжести, считали его траекторию при воздействиях в определенных сигналах с датчиков, принимали решения по тому какие двигатели, на сколько и при какой мощности надо включать.
Потребность в вычислительной мощности - почти маинфрайм...
Конечный вариант - входные сигналы с датчиков огрубили до 3-х значений - игнорируемый, желательна коррекция, необходима коррекция, аналогично загрубили результат - мощность - ноль, половина, полная...
Потребность в вычислительной мощности - микроконтроллер...
Что интересно:
- увеличение количества градаций мало влияло на качество отработки...
- во втором случае предмет ронялся много реже...
е забываем, что даже такая маленькая табличка в 10 тыс элементов уже не лезет в кеш первого уровня
-----
Когда у тебя результатом вычислений является вызов одной из 4-х функций, то требуется всего 2.5К...
Это - в прямую...
В реальности - 100х100 - избыточно для большинства задач... вполне может быть достаточным 3х3х3...
бегать по ней процессор будет уже несколько тактов
-----
Чтоб оно меня заботило.
Меня, обычно, такты нисколько не интересуют. Меня, обычно, интересует выявить и исключить избыточную
часть расчетов... т.е. совсем исключит триллионы тактов...
у вас там лапак из бейсика вызывался
-----
А как у ваМ лапак прикручивается к декомпиляции?
> Замена не СИН/КОС/ТАН таблицами, а всего выражения где они используются, на таблицу
запасся попкорном посмотреть какого размера получится таблица при 53 битах точности (double precision) и с какой скоростью по ней вы будете бегать, учитывая, чт оскорость доступа к оперативной памяти примерно в 500 раз больше скорости выполнения арифмерических операций на современных архитектурах - то есть сделать 500 умножений вам будет стоить столько же, как считать 8 байт рандом из большой таблицы, которая не влезла ни в один кеш процессора.
> В реальности - 100х100 - избыточно для большинства задач... вполне может быть достаточным 3х3х3...
и тут попкорн не помешает посмотреть как синус по трем точкам табулируется :)
какого размера получится таблица при 53 битах точности
-----
А тебе точно все 53 нужны? Я вот пытался объяснить что часто оно нафиг не требуется...
примерно в 500 раз больше
-----
Из последующего понятно что подразумевалось меньше. НУ да не суть...
Сравнивать надо выкинутый трильярд умножений с двух-трех кратным доступом к памяти...
Поверь - Я ловил такты как это делаешь сейчас ты. Во времена Фортрана, при 8-ми гавриках
делящих 32Кб феритовой рамы и ресурс двухрегистрового проца это приходилось делать.
Програмки тогда были в 600-700 (все в голове) строк - можно было оптимизюлить до упора.
Но, это далеко не всегда эффективно. Часто можно выкинуть расчет, целиком заменив его
табличной апроксимацией. Что Я, в своих нынешних 2Гб кода потихоньку и делаю.
Это - работает и, в моих задачах, работает весьма неплохо.
https://foren.germany.ru/showmessage.pl?Cat=&Board=program...
Если вдруг не знаете, "в ответ ..." - это ссылка.
и тут попкорн не помешает посмотреть как синус по трем точкам табулируется :)
-----
Ну а как 16 бит развертываются в 32 милисекунды звука тебе объяснить?
Там получается - много меньше 3-х точек на синус... и ничего - работает и соответствует ГОСТу...
А свертку? Там часть работы таки аккурат разложение сигнала на составляющие синусы...
Или ты современным телефоном не пользуешься в виду невозможности проведения
заданного объема вычислений портативным устройством?
(задумчиво)
Нет, не хватает у меня воображения, чтобы поместить здесь достойный случая "фейспалм". Те картинки, что именуют "мегафейспалмом", здесь выглядели бы явным преуменьшением.
"Много меньше трех точек на синус" - это годный мем. Что-то вроде армейского "на многие сотни тысяч порядков". В общем, аффтар, пешЫ исчо!