0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 4
|
|
1 | |
OpenCL - аномально большое использование памяти приложения04.05.2020, 21:22. Показов 2073. Ответов 1
Добрый день!
Есть программа с некоторым количеством kernel (около 30), которые оперируют общими данными (буферами) и вызываются в определенной последовательности в цикле большое количество раз (например, 100000). Объем передаваемых данных на видеокарту десятки мегабайт, но выделение памяти приложения достигает нескольких ГБ (и по диспетчеру задач, и по использованию памяти в VS). Алгоритм такой: - инициализация opencl (device, context, queue, programm) - загрузка исходных данных в RAM - выделение большого количества буферов под промежуточные данные cl_mem Xi = clCreateBuffer(... - перегрузка исходных данных из RAM в буфер сlEnqueueWriteBuffer(... - обозначение kernel - cl_kernel k_i = clCreateKernel(... - установка аргументов для каждой kernel - clSetKernelArg(... - обозначение размеров global и local для каждой kernel - запуск цикла с последовательностью исполняемых kenel c помощью clEnqueueNDRangeKernel(... Всё считает. Получается ожидаемый результат. Быстро считает, но при многократном повторении цикла - использование памяти растёт аномально / непропорционально объему обрабатываемых данных. Пробовал различные clRelease... (..MemObj, ..Kernel и т.д.), в т.ч. пробовал чтобы полностью программа входила в цикл (т.е. с перегрузкой и перекоплиляцией cl-кода). Всё равно, а память... растёт! Причем только память приложения. На GPU все те же 10-ки мегабайт. Ранее программа была на C++ AMP и такого выделения памяти не было. Что в приложении С++ для OpenCL может так сильно есть память (RAM)? Может быть кто-то сталкивался? В каком направлении смотреть?
0
|
04.05.2020, 21:22 | |
Ответы с готовыми решениями:
1
Большое использование физической памяти Слишком большое использование оперативной памяти Большое потребление памяти приложением Большое употребление памяти динамикой |
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 4
|
|
10.05.2020, 13:36 [ТС] | 2 |
Ну может хоть предположения есть у кого?
Добавлено через 26 минут Решено! Может кому-то пригодится. Проблемы была в &event при вызове clEnqueueNDRangeKernel clEnqueueNDRangeKernel(queue, kernel, 2, NULL, Global, Local, 0, NULL, &event); // так растет - заполняет память событиями clEnqueueNDRangeKernel(queue, kernel, 2, NULL, Global, Local, 0, NULL, NULL); // так не растет
0
|
10.05.2020, 13:36 | |
10.05.2020, 13:36 | |
Помогаю со студенческими работами здесь
2
Слишком большое выделение оперативной памяти! Большое потребление памяти при вызове метода Разместить большое число в двух ячейках памяти Большое потребление оперативной памяти при долгой работе Слишком большое потребление оперативной памяти в простом приложении nginx+php-fpm debian - большое потребление памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |