Използване на OpenCL™ API Debugger, Intel® софтуер

1.Въведение

OpenCL™ API Debugger е добавка за Microsoft Visual Studio*, която ви позволява да отстранявате грешки в OpenCL приложения чрез наблюдение на OpenCL средата. API на Debugger е нов компонент на Compute Code Builder в Intel® SDK за OpenCL™ Applications 2014 Beta решение.

API на Debugger дава възможност на разработчиците да преглеждат списък с всички извиквания на OpenCL API в техните приложения; можете да видите параметрите на функцията, върнатите стойности и времето за изпълнение. Този плъгин също ви позволява да преглеждате различни OpenCL обекти, които съществуват в паметта, когато приложението работи. За повече информация относно приставката за API на Debugger и нейните възможности вижте ръководството за потребителя на Intel® SDK Beta за OpenCL™ приложения 2014.

В този урок ние демонстрираме едно от употребите на API на Debugger: отстраняване на грешки и откриване защо приложенията се сриват, когато са налице само източникът на ядрото и двоичният файл на приложението (без източник от страната на хоста). Най-полезната функция на API на Debugger е възможността да се покаже изходният код на ядрото, дори ако то е вградено в приложението, което се отстранява. В последния случай е възможно да се идентифицира източникът на грешката в ядрото, но е невъзможно да се поправи без пълния изходен код на приложението.

За демонстрационни цели ще въведем грешка в ядрото на филтъра sobel от Работа с JumpStart и ще покажем как да хванете грешката без достъп до изходния код на хоста.

2. Активирайте Api Debugger в Visual Studio*

Първата стъпка е да активирате API на Debugger в Visual Studio. За да направите това, щракнете върхуИнструменти: Код: Builder - Опции във Visual Studio или натиснете клавишната комбинацияCtrl+1, за да отворите диалоговия прозорец за конфигуриране на дебъгера,както е показано по-долу.

използване

Уверете се, чеАктивиране на OpenCL API Debugger е отметнато, след което щракнете върху OK. След като активирате тази добавка, можете да започнете да отстранявате грешки в приложението си.

3. Стартиране на приложението

Както беше посочено по-горе, въведохме грешка в приложението sobel, като променихме типовете аргументи на ядрото за ширина и височина, както е показано по-долу.

Когато се опитвате да стартирате приложение с това ново ядро, приложението се срива, докато задава аргументите на ядрото. При липсата на подробно обработване на грешки, такива проблеми са много трудни за откриване без пълния изходен код. Нека да видим как можем да отстраним грешки в този случай.

Тъй като имаме само двоичния файл на приложението и OpenCL ядрото, трябва по някакъв начин да стартираме приложението, за да го отстраним в Visual Studio. Стартирайте командния ред на Visual Studio от менюто "Старт" или добавете %VSINSTALLDIR%\Common7\IDE\ (където %VSINSTALLDIR% е папката, в която е инсталиран Visual Studio) към вашата променлива на средата PATH и стартирайте командния ред. Стартирайте приложението от командния ред по следния начин:

където пълен или относителен път към приложението, което се отстранява, като sobel.exe.

Това трябва да стартира приложението във Visual Studio за отстраняване на грешки. Уверете се, че API компонентът на Debugger е активиран, както е показано в предишния раздел. Започнете отстраняването на грешки, като натиснете F5. Приложението ще стартира, но няма да може да работи, без да стартира OpenCL ядрото.

4. Изглед на проблеми и изглед на проследяване

Отворете изгледа за проблемиИнструменти: Код: Builder: OpenCL Debugger: Изглед за проблеми. ПрозорецътИзглед на проблемите изброява всички предупреждения и грешки, възникнали при изпълнение на приложението OpenCL. Най-голям интерес представляват именно грешките (въпреки че си заслужаваобърнете внимание на предупрежденията). Ще видите две грешки, причинени от извикването на clSetKernelArg(), както е показано по-долу.

Но изгледът отгоре дава само половината информация: знаем само за неуспеха на повикването с CL_INVALID_ARG_SIZE. Сега щракнете с десния бутон върху една от грешките и изберетеПоказване в изглед на проследяване.

Това ще покажеИзглед на трасиране с трасиране на OpenCL API.

използване

В прозореца за проследяване изберетеФункции с имена и стойности на аргументи от списъкаРежим на показване на API, както е показано по-долу.

Това е подробен режим на показване, където можете да видите повече информация за API, включително броя на аргументите и техния размер.

софтуер

Разглеждайки грешните извиквания и върнатата стойност на clSetKernelArg(), става ясно, че има проблем с настройката на аргументи 2 и 3 на ядрото. Помислете отново за подписа на ядрото.

В даннитеtrace view можете да видите, че кодът определя аргументи на ядрото с размер 4 (тъй като arg_size = 0x4 и за двете извиквания с грешки), докато OpenCL ядрото приема ushort тип данни с размер 2. Сега знаем, че трябва да коригираме или системния код, или ядрото, така че типовете данни да съвпадат.

4.1 Преглед на вградения източник на ядрото

opencl

Имайте предвид, че горният двоичен файл е създаден без информация за отстраняване на грешки. Можете да прегледате изходния код на ядрото, дори ако двоичният файл е изграден в режим на освобождаване.

5. Заключение

Този урок показва какAPI Debugger ви помага да намерите причината за определени грешки във вашите OpenCL приложения, особено когато изходният код не е наличен. Разбира се, API на Debugger има много повече функционалност и разширява възможностите за отстраняване на грешки на Visual Studio,предоставяне на инструменти за отстраняване на грешки за OpenCL приложения директно в тази среда за разработка.

OpenCL и логото на OpenCL са търговски марки на Apple Inc и се използват с разрешение от Khronos.