OpenCL tutorial – część 1 – konfigurowanie środowiska

Witam w pierwszej części krótkiego kursu OpenCL. Postanowiłem opisać swoje pierwsze kroki z technologią OpenCL.

Nie będę tutaj przytaczał teorii na temat działania karty graficznej czy historii OpenCL. Skupię się na trzech rzeczach: pobraniu potrzebnych plików, konfiguracji środowiska w systemie Windows oraz podaniu kilku działających przykładów.

Środowisko

W trakcie kursu będziemy używali środowiska Microsoft Visual C++ 2010 Express, ale możemy użyć do tego celu dowolnego środowiska dla języka C++. Przed utworzeniem projektu wchodzimy do ustawień (menu Tools – Options) i dodajemy rozszerzenie „cl”(Text Editor – File Extension). Dzięki temu kod OpenCL będzie kolorowany przez środowisko.

Tworzymy nowy projekt wybierając z menu pozycję File – New – Project, a następnie Win32 Console Application. W kreatorze wybieramy opcje Console Application oraz Empty Project. Dodajemy jeden plik o nazwie Main.cpp i uzupełniamy go standardową funkcją „main”.

OpenCL

Do wyboru mam dwa SDK, jedno dla kart AMD, a drugie NVIDII.

http://developer.amd.com/tools/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/

https://developer.nvidia.com/cuda-downloads

W katalogu, w którym zainstalowaliśmy SDK szukamy plików „cl.h” oraz „OpenCL.lib”. Jeżeli pobraliśmy SDK NVIDII, to znajdziemy je w katalogach:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\CL
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\Win32

Biblioteka dla systemu 64-bitowego w katalogu:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64

Ścieżki do powyższych katalogów dodajemy w ustawieniach projektu:

Configuration-Properties - C/C++ - General - Additional Include Directories
Configuration-Properties - Linker - General - Additional Library Directories

Polecam jednak nie ustawiać ścieżek bezwzględnych w projekcie, a zamiast tego skopiować odpowiednie pliki do katalogu z projektem i ustawić ścieżki względne.

Dodajemy również bibliotekę OpenCL.lib w:

Configuration-Properties - Linker - Input - Additional Dependencies

Po wykonaniu tych operacji struktura katalogów powinna wyglądać następująco:

- dependencies
    - OpenCL
        - include
            - CL
                - cl.h
                - cl_d3d9_ext.h
                -  ...
        - lib
            - OpenCL.lib
- OpenCL.sln
- OpenCL.vcxproj
- OpenCL.vcxproj

Kod programu

Sprawdzamy czy wszystko działa poprawnie. W plik Main.cpp dołączamy plik CL/cl.h oraz definiujemy zmienną typu „cl_int”. Jeżeli program skompiluje się bez błędów, to znaczy, że poprawnie przygotowaliśmy nasze środowisko do pracy z OpenCL-em.

Cały kod powinien wyglądać tak:

#include 
#include 

#include <CL/cl.h>

int main()
{
    cl_int hello = 0;

    return 0;
}

Źródła w serwisie GitLab.

W kolejnej części kursu sprawdzimy czy nasz sprzęt obsługuje OpenCL.

Linki

https://developer.nvidia.com/opencl

http://www.khronos.org/registry/cl/specs/opencl-1.0.29.pdf

http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/

http://www.thebigblob.com/getting-started-with-opencl-and-gpu-computing/

Ten wpis został opublikowany w kategorii C++, OpenCL, Windows. Dodaj zakładkę do bezpośredniego odnośnika.