Форум программистов, компьютерный форум, киберфорум
OpenCL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 7

Заменять небольшие части массива в видеопамяти перед обработкой

09.07.2025, 09:18. Показов 1011. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Задача. Кернел многократно обрабатывает большой массив данных. Перед каждой обработкой небольшая часть массива обновляется.

Вопросы:
1. Как поменять часть массива, чтобы не заливать его целиком заново?
2. Если кернел не меняется, но повторяет свою работу, нужно ли его перезаливать перед каждым запуском?

Заоанее благодарю
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.07.2025, 09:18
Ответы с готовыми решениями:

nVidia CUDA забивает всю видеопамять
Прошу вас,знающие и умеющие,помогите! Суть проблемы такова: то ли после обновления драйвера,то...

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

Не могу понять реальный объём видеопамяти. (Ноут за 10к с 6 ГБ видеопамяти О_о)
Друг реши себе ноут взять на авито. Вот вижу такое объявление: Тыц Заголовок товара: Мощный HP...

7
 Аватар для andrey_f
882 / 535 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
09.07.2025, 11:09
Цитата Сообщение от TYuD Посмотреть сообщение
Кернел
По-русски это называется ядро.
Цитата Сообщение от TYuD Посмотреть сообщение
1. Как поменять часть массива, чтобы не заливать его целиком заново?
Использовать частичные копии данных или подвыборки (sub-buffer).
Цитата Сообщение от TYuD Посмотреть сообщение
2. Если кернел не меняется, но повторяет свою работу, нужно ли его перезаливать перед каждым запуском?
Ядро компилируется один раз (например, при запуске программы или при его загрузке). После этого его можно многократно запускать с разными входными данными. Если код не изменился, то нет необходимости перезаливать его перед каждым запуском.

Цитата Сообщение от andrey_f Посмотреть сообщение
Использовать частичные копии данных или подвыборки (sub-buffer).
Использование clEnqueueWriteBuffer с указанием смещения и размера:
C++
1
clEnqueueWriteBuffer(queue, buffer, CL_TRUE, offset_in_bytes, size_in_bytes, host_ptr + offset_host, 0, nullptr, nullptr);
1
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 7
09.07.2025, 11:31  [ТС]
Спасибо за быстрый ответ.

А если не пергзагружать ядро, то как повторно запустить ранее загруженное?
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
09.07.2025, 21:11
Цитата Сообщение от TYuD Посмотреть сообщение
А если не пергзагружать ядро, то как повторно запустить ранее загруженное?
Вы же в clEnqueueNDRangeKernel передаёте переменную типа cl_kernel вторым параметром. Передавайте тот же аргумент, в чём проблема?
1
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 7
12.07.2025, 19:42  [ТС]
Проблемы нет передавать в clEnqueueNDRangeKernel тот же аргумент типа cl_kernel. Так и делаю. Просто думал, что при этом исполняемый код грузится в видеопамять заново. Не понимаю когда это просходит. Во время создания объекта cl_kernel или при вызове
clEnqueueNDRangeKernel?

Добавлено через 6 минут
Тут еще непонятка. Делаю в cl-программе include, но, похоже, что вставки файла не происходит. Приходится вручную вставлять содержимое. Тогда работает. Странно, что не сообщает о том, что не найден файл, указанный в директиве include, а ругается ниже, что нет определений из этого файла. Все файлы в одной папке находятся, откуда запускаю приложение
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
14.07.2025, 18:40
Цитата Сообщение от TYuD Посмотреть сообщение
Во время создания объекта cl_kernel или при вызове clEnqueueNDRangeKernel?
Код загружается в GPU при вызове либо clBuildProgram, либо clEnqueueNDRangeKernel (это может зависеть от драйвера, как я понимаю). Но после запуска она из памяти GPU не выгружается (если не было вызвано clReleaseProgram, clReleaseContext и пр., хотя возможна выгрузка по таймауту <и то не факт, и тут вроде бы тут счёт идёт на минуты, а не секунды, так что времени достаточно много>, нехватке памяти и т.п.). Поэтому при повторном вызове clEnqueueNDRangeKernel повторной загрузки не будет. Вызов kernel-функции в любом случае требует гораздо большего времени, чем вызов обычной host-функции.

Цитата Сообщение от TYuD Посмотреть сообщение
Делаю в cl-программе include, но, похоже, что вставки файла не происходит.
Не использовал никогда #include в OpenCL, но возможно, проблема в том, что у вас не указаны пути к файлам. Посмотрите тут.
1
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 7
15.07.2025, 21:17  [ТС]
Спасибо.

Рекомендуемый Вами топик я видел. Странно, что компилятор находит файл с ядром, а инклуд-файл не находит, хотя они лежат рядом.

Еще вопрос. Я запустил кернел, он оставил результат своей работы в локальном буфере. Можно ли запустить другой кернел так, чтобы он мог использовать этот буфер с результатами? Это промежуточные данные. Их много. Нет смысла качать их в глобальную память
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6808 / 2048 / 238
Регистрация: 14.12.2014
Сообщений: 4,297
Записей в блоге: 12
16.07.2025, 12:33
Цитата Сообщение от TYuD Посмотреть сообщение
Я запустил кернел, он оставил результат своей работы в локальном буфере
Что вы подразумеваете под локальным буфером?
Если вы оставите данные в глобальной GPU (которые записали туда, например, через clEnqueueWriteBuffer, даже если вы их изменили в ядре), они никуда не денутся после завершения функции ядра. C константной памятью та же история.
Если речь про local memory (shared memory в CUDA) или private memory (local memory в CUDA), то их содержимое не сохраняется после завершения функции ядра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2025, 12:33
Помогаю со студенческими работами здесь

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

Просматривая компоненты файла с конца, заменять каждое отрицательное число на 0, если оно стоит перед положительным числом
Дан файл, компонентами которого являются целые числа. Просматривая компоненты файла с конца,...

Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на *
Ввести символьный массив из 12 символов. Если в тексте нет символа +, то оставить без изменений, в...

Удалить запятые, которые встречаются перед первой точкой и заменять все символы "5" на "+"
Дана символьная строка. на нем есть как минимум одна точка. изменить строку по следующим правилам:...

Как заменять определенные части текста на соответствие этим частям из словаря?
Есть условный текст: Hello, {string}, go {x} steps every day in {a} o'clock. Хочу заменить всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru