Pull to refresh

Comments 18

Интересно, а можно ли вашу задачу считать на обычном SPICE-симуляторе?

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

А про VTune — это действительно классный инструмент, несколько лет назад на нем ловили кучу проблем в многопоточной программе.
Можно. Вся сложность будет заключаться разве что в реализации нужной модели асинхронного двигателя(в сети можно найти множество примеров этих моделей).
И в создании простого интерфейса для генерации SPICE-модели по моему простому конфигу. Впоследствии я так и подумал сделать когда-нибудь в далеком будущем.
В момент времени 1 с. к валу прикладывается момент 700 Н*м2

Н*м2 — это все-таки давление. Момент вроде как Н*м
… копирование вектора средствами самого вектора не очень оптимально

Это интересно. Почему так, не разбирались?
Большой оверхед на оператор '=' в качестве расплаты за безопасность операции.
Нужно собрать указатели, проверить равенство длинн массивов, если не равно, сделать переаллокацию и т.д. и т.п. и только потом копировать области памяти.
В итоге на для 4-х элементов в разы быстрее цикл for:
Копирование массива в 4 элемента float 1млн итераций:
VectorCopy test:  0.018997 seconds
CycleCopy test:  0.003999 seconds

Ускорение в 6 раз — нет танцев с кучей проверок векторов.
Копирование массива в 400 элементов float, 1 млн итераций:
VectorCopy test:  0.043993 seconds
CycleCopy test:  0.130980 seconds

Замедление в 3 раза — массив уже имеет какой-то размер, плюс компилятор оптимизирует копирование памяти из одного региона в другой.
Да, печально, что безопасность так дорого обходится, что даже присвоение в цикле дает приличный выигрыш. А использовать функцию memcpy вместо цикла не пробовали?
4 элемента:
VectorCopy test:  0.018997 seconds
CycleCopyTest test:  0.002000 seconds
Memcpy test:  0.006999 seconds

400 элементов:
VectorCopy test:  0.042993 seconds
CycleCopyTest test:  0.130980 seconds
Memcpy test:  0.033995 seconds

Долго смотрел — наконец дошло — короткий цикл компилятор просто разворачивает при оптимизации, поэтому такой выигрыш в варианте с циклом из 4 элементов.

Интересный проект! Если будет время, то посмотрю подробнее. Также не мешало бы разместить файл проекта для какой-либо кроссплатформенной системы сборки (например CMake), т.к. не у всех имеется Windows и VisualStudio.


Симулятор XYCE https://xyce.sandia.gov, совместимый со SPICE и разрабатываемый Cандийискими национальными лабораториями имеет функцию сетей распределения мощности (PowerGrids). Это тоже open-source проект. Знаете ли вы о нём? В чём ваши отличия и преимущества?

Проект изначально был под eclipse и прекрасно собирался под Linux, но во время экспериментов с TBB мигрировал под Visual Studio.

Проект XYCE увидел глубоко после начала проекта, да и я изначально пилил свой мопед :) У моего проекта перед этими симуляаторами преимуществ никаких. Моя основная идея была — собрать нужные мне данные и главное — отладить код работы анализатора качества.
UFO just landed and posted this here
Поддержка C++11 там есть, так что должен собраться. Вот с minGW я поломал совместимость, но это я поправлю
UFO just landed and posted this here
UFO just landed and posted this here
Почему у автора в стектрейсах везде msvcp120**D**.dll?
Гонял Debug-версию программы, Release-версия работает пошустрее, но в лидерах все тот же fprintf

Вы серьёзно? Вы на дебажной версии что-то пытаетесь оптимизировать???

Можно подумать в дебажной версии у моей программы изменится алгоритм работы.
Все рассмотренные в статье горячие точки не имеют отношения к варианту сборки, а являются следствием моих кривых рук :)
Sign up to leave a comment.