Smorodov 579 Жалоба Опубликовано July 15, 2009 Подготовительные операции (предполагается, что VC2008 уже установлен). 1) Установить комплект CUDA. 2) Установить cudavswizard2.0 (лежит здесь: http://sourceforge.net/projects/cudavswizard/) 3) Установть OpenCV (если еще не установлен) 4) Запускаем Visual Studio 2008 и создаем новый проект типа CUDAWinApp. (File->New->New project->слева выбираем CUDA-> CUDAWinApp) 5) Alt+F7 вызывается окошко свойств проекта. Выбрать конфигурацию Release. (Все конфигурации лучше настраивать по отдельности, а не выбирать AllConfigurations) 6) В этом окошке слева выбрать Linker->Input . 7) В строке с названием Additional Dependencies должно быть cudart.lib cutil32.lib cxcore.lib cv.lib highgui.lib, чего нет добавить. 8) Открыть Linker->General,список Additional Library Directories должен содержать: $(CUDA_LIB_PATH) $(NVSDKCUDA_ROOT)\common\lib C:\Program Files\OpenCV\lib 9) Открываем CUDA ->General, список Additional Include Directories должен содержать: $(CUDA_INC_PATH) $(NVSDKCUDA_ROOT)\common\inc C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui 10) Что за фигня, в .cu файле нет подсветки!!! (однако должно компилироваться) 11) Идем в “C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\”. 12) Создаем (если не существует) файл “usertype.dat”. 13) Открываем “ Program files (или Program Data в vista)\NVIDIA Corporation\NVIDIA CUDA SDK\doc\syntax_highlighting\visual_studio_8\usertype.dat” и копируем его содержимое в недавно созданный файл. 14) Сохраняем файл. 15) Открываем IDE и идем Tools -> Options. 16) Открываем Text Editor -> File Extension tab, задаем расширение “cu” как новый тип файлов. 17) Перезапускаем IDE, наслаждаемся . ЗЫ: Если у кого то стоит Касперский, то для успешной компиляции его лучше временно отключить, хотя откомпилированные программы работают нормально и с включенной защитой. Файл с проектом (перед открытием выполнить пункты 1,2,3, 11-17 по желанию): CUDAWinApp2.rar Проект просто находит границы. Я специально в проекте так расточительно считаю, дабы показать на что можно расчитывать при использовании графического акселератора. Причем, полученное изображение можно обрабатывать дальше средствами OpenCV. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Aldaris 0 Жалоба Опубликовано July 16, 2009 Поделитесь оценками в производительности =) на вашем GPU, CPU? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 16, 2009 Поделитесь оценками в производительности =) на вашем GPU, CPU? Время обработки одного кадра: GPU Geforce8200 (встроенный) 0.05-0.06 ms CPU Athlon x 2 5000 примерно 10 ms Померять можно так: //До кода ставим: // Создаем и запускаем таймер unsigned int timer = 0; cutilCheckError(cutCreateTimer(&timer)); cutilCheckError(cutStartTimer(timer)); //--------------------- // Измеряемый код //--------------------- // После кода ставим: // Останавливаем и освобождаем таймер cutilCheckError(cutStopTimer(timer)); printf("Processing time: %f (ms) \n", cutGetTimerValue(timer)); cutilCheckError(cutDeleteTimer(timer));[/code] Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано July 12, 2011 а где можно посмотреть еще примеры? есть смысл ковырять какие то сторонние библиотеки типа GpuCV или из них все все равно плавно перетекает в opencv? нашел небольшую статью на русском про сравнение скоростей. http://agora.guru.ru/hpc-h/files/Using_GPU_for_computer_vision_in_OpenCV_library.pdf там в конце еще ссылки на библиотеки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
dasg 1 Жалоба Опубликовано September 30, 2011 Вот здесь можно скачать unit тест на базе Qt, который сравнивает производительность вычислений на CPU и GPU для некоторых функций OpenCV. У меня почему то CPU работает гораздо быстрее чем GPU. Мне всегда казалось, что видеокарта должна матрицы быстрее считать... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pavia00 32 Жалоба Опубликовано October 1, 2011 dasg. Мне бы ваши проблемы. Давно интересует тест производительности OpenCV и GPU. Cuda не пользуюсь так как карта AMD. Но у меня на GPU Собель раз в 10 быстрее считался, правда эксперимент был не совсем чистым. По поводу скорости. Зависит от процессора. Ну вот считай CPU, у меня Core 2 Due T7500 2 ядра. Каждое ядро может обрабатывать одновременно 2 команды SSE. Каждая команда SSE имеет 4 блока данных(128/32; 32 бита берём float) а если брать не флоат, а слова 128/16=8 блоков данных. Частота процессора 2.4 ГГц Итого:2*2*4*2.4=38,4 операций/с Видео карта, У меня ATI HD3470. 40 ядер каждое ядро содержит 5 алу. Но из этих 5 алу только четыре выполняют основные операции, а пятый считает сложные операции такие как Sin, sqrt. Каждое АЛУ работает над вектором из 4 чисел. Частота 680 МГц Итого=40*4*4*0.680=435,2 операций/с Видео карта Geforce 9600M GS. Число ядер 32 частота 1035 МГц каждое ядро способно выполнять кучу операций параллельно, примерно столько же сколько и ATI . Итого 32*4*4*1.035=529,92 операций/с Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
dasg 1 Жалоба Опубликовано October 1, 2011 У меня на Geforce 9600M GS OpenCV видит только 4 ядра. Тоже как-то странно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано October 1, 2011 Не странно, а так и есть. Но! не "ядра", а "мультипроцессора", каждый из которых состоит из восьми простых процессоров. Подробности смотри в "NVIDIA CUDA Programming Guide", там есть таблица. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах