Подскажите как можно ускорить эксель, например, с помощью этой статьи. Все выполняю, а не знаю как все это соединить чтобы работало. https://habr.com/ru/post/655085/
Kostya555 написал: Он работает, но при расчетах в макросах тормозит
Меня терзают смутные сомнения (с). Это напоминает что-то давно забытое, когда по каким-то левым ссылкам предлагали установить на компьютер какие-то левые "ускорители интернета". Потом, естественно, приходилось чистить комп от заразы...
написал: Это напоминает что-то давно забытое, когда по каким-то левым ссылкам предлагали установить на компьютер какие-то левые "ускорители интернета". Потом, естественно, приходилось чистить комп от заразы...
Я вот спрашиваю, я сам не знаю. Реально увеличить скорость для расчета макросов?
Kostya555, Давайте рассуждать логически. Разработчик использует однопоточность, несмотря на то что таблицы считаются с иползованием нескольких потоков. Кто-то сел и написал что-то что вдруг делает из лады мерседес только заменой пары гаек. Вы в это верите? А вот задействовать для расчета в том числе ядра GPU , потенциально возможно. В целом я скептически отношусь как к решению , так и ко всей статье, обратите внимание на то, что, как она появилась, так и угасла и нет ни одного коммента, что все заработало. Подобное встречается в интернете https://streamhpc.com/blog/2016-09-19/accelerating-excel-opencl/
К стати , рекомендации отключить уппаратное ускорение относятся к нестабильной работе, когда имеет место быть кривое взаимодействие с драйвером видяхи.
написал: ЗЫ. По ссылке почитал, но ничего не понял...
Начать надо хотя бы с понимания того, для чего предназначен OpenCL. OpenCL это С99 код, компилируемый и выполняемый на многопроцессорных устройствах, без разницы, CPU это, GPU или FPGA. В примерах из вышеприведённой ссылки автор статьи заменил вычисление произведения матриц в VBA произведением матриц на OpenCL. Причём сделал это в нескольких потоках (CPU и GPU вычисляют произведение матриц параллельно и независимо друг от друга).
написал: нет ни одного коммента, что все заработало
Ну так попробуте и отпишитесь. В чём сложность-то? Комменты о том что работает есть на форуме "Видеокарта": https://forum.hiasm.com/topic/68051 предпоследний комментарий: "У меня на ноутбуке тестовые расчёты с матрицами на GPU в 398 раз быстрее чем на VBA."
Steve Martin, Вопрос не о том что работает или нет, а о том что посмотрев код тестов наглядно видно , что пример не на то чтоб перевести работу VBA на GPU а просто на то как из VBA задействоdать OpenCL. То есть как бы все не пыжились, ранее написанные коды по мгновению после установки библы не заработают в разы быстрее.
Ігор Гончаренко, Важно понимать, что такое ускорение, даже на мом слабеньком ноутбуке достигается заменой VBA на OpenCL код. Ничто не даётся просто так, и "ускорителя интернета" на самом деле не существует. Так же как и ускорителя Экселя "на халяву". Прийдётся поработать и перевести макросы из VBA в OpenCL.
Чтобы достичь того же, надо скачать и установить библиотеку хотя бы с sourceforge.
Обратите внимание, что в "c:\Program Files (x86)\ClooWrapperVBA\demo\cl\" содержится OpenCL-код, для вычисления произведения матриц (MatrixMultiplication.cl) и общей производительности устройства (без разницы, CPU или GPU) с double и single точностью (Performance.cl).
Затем стоит открыть демо-таблицу ("c:\Program Files (x86)\ClooWrapperVBA\demo\OpenCl v0.04.xlsm") и пройти последовательно по всем листам таблицы, начиная с первого "Hello world!" и понажимать на все кнопки (по одной на каждом листе, на листе "Performance" их даже две).
Сказать, что достигнуто ускорение в 3000-4000 мешает как раз как раз моя медленная видеокарта (Intel HD Graphics 610). Была бы NVIDIA Tesla, были бы "3000-4000 раз" (думаю даже на два порядка больше).
написал: ранее написанные коды по мгновению после установки библы не заработают в разы быстрее.
Это верно на 100%. Прийдётся поработать и переписать VBA код на OpenCL (C99). ("Ускорителя интернета" действительно не существует.) Но оно того, как мне кажется, стоит. Ускорение действительно существенное.
Изменено: Steve Martin - 10.09.2022 23:13:38(Ошибка)
Чувствую надо Bedvit'a (Виталия) сюда подключать ) P.S. А то у меня есть одна задачка, которая выполняется очень долго - удаление стоп-слов из общего списка... Общий список это 1 столбец со словами-фразами (273,000 строк), а список стоп-слов 1 столбец (2.000 строк). Макрос выполняется 3,5 минуты и меня это терзает...
написал: P.S. А то у меня есть одна задачка, которая выполняется очень долго - удаление стоп-слов из общего списка.
В библиотеке реализована поддержка только integer, single и double пременных и массивов. Можно конечно передавать слова в виде массивов значений каждого символа.
написал: Это верно на 100%. Прийдётся поработать и переписать VBA код на OpenCL (C99). ("Ускорителя интернета" действительно не существует.)
У меня код на VBA очень простой приложен файл, подскажите как этот код написать на OpenCL (C99), либо подскажите к кому либо куда можно обратиться. Приложу еще сравнения на моем компе VBA и GPU файл приложен разница просто большая (почти в 600 раз).
написал: Kostya555, нууу, вы что... так не пишутся макросы
Подскажите, что не так? Я просто не силен в них, то что написано делает то что мне нужно, как написать по другому я не знаю, если строк в файле более 35 000, делает расчет одной цифры последнего порядка более 1 минуты (Cells(2, 13) = k), а есть и файлы по 70 000 строк и более и немного уточню в каждой и 70 000 строк около 12 столбцов с формулами поэтому расчеты происходят очень долго, поэтому и написал что можно сделать и как можно ускорить. Отключение обновления экрана и прочее пробовал добавлять в VBA это не улучшает работу и скорость.
Kostya555, короче, вам нужно забыть про GPU, и создать новую тему, где приложить небольшой файл-пример, приложить свой макрос, а главное объяснить нам что вы там считаете. И мы вам напишем свой макрос, который будет быстро считать. Не нужно никогда в цикле бегать по ячейкам, как это делаете вы. Надо работать с двумерными массивами P.S. Пожалуйста, не нажимайте никогда на кнопку Цитировать, нажимайте только на кнопку Имя, она находится на 1см правее, от кнопки Цитировать
Sub test()
t = 1
For i = 5 To 13
For j = 1 To 50
For k = 21 To 50
Cells(2, 6) = i
Cells(2, 10) = j
Cells(2, 13) = k
Cells(t, 23) = Cells(34919, "N").Value
t = t + 1
Next
Next
Next
End Sub
Вообще там за счет изменения каждого числа происходит новый расчет и почти не бывает одинаковых значений. Цифры я изменил так как приходиться останавливать расчет и запускать заново.
Юрий М написал: Тема про что? Про подключение GPU. А обсуждаем что?
Похоже, Kostya555 свою задачу решил решать не оптимизацией подхода к её решению, а совсем уж "в лоб" - ускорением неоптимальных вычислений и это привело к экзотическому вопросу по GPU. Советую Косте создать новую тему по perestroike конкретной задачи с тройными циклами, а в этой теме оставить только мнения по uskoreniyu GPU.
tolikt, Я не против создать новую тему, просто дело даже не в макросе, а в очень длительном расчете в экселе, при наличии более 40 000 строк(файл размер около 15 мб), даже если я вручную без макроса изменю цифру расчет делается очень долго. Поэтому и зашла речь о альтернативном расчете через например через OpenCL, по сути GPU. Просто исходя из статьи https://temofeev.ru/info/articles/vychislyaem-na-videokartakh-tekhnologiya-opencl-chast-1b-pishem-dl... Это сделать реально и скорость расчета увеличится исходя из статьи в 7 раз. Если оптимизация кода в VBA увеличит скорость расчета, я тоже согласен на это(то что предлагали по факту не увеличивает скорость расчета).
Тааак, стоило отлучится и снова тема уехала, теперь в другую сторону.
Что-то подсказывает что надо закрыть. Щас в очередной раз почищу, но еще раз . Тут про использование OpenCL!!! Для другого есть другие темы, если нет то открывайте а эту не засоряем.
все оптимзации и помощь ТСу в другой теме которая конкретно про его проблему, хотя и там приплетено GPU
Следующий, кто не понял, не важно, кто, получит предупредительный бан. Не смотря на прежние заслуги.!!!
БМВ, предлагаю переименовать в Как к Экселю подключить GPU — и никаких разговоров об ускорении, которого может и не быть Зато появятся вопросы "а нахрена" и советы "лучше оптимизируйте код" (одно и второе и так уже тут есть в теме)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄