Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: SABROG от Январь 15, 2011, 23:32



Название: QtOpenCL, nVidia и MinGW
Отправлено: SABROG от Январь 15, 2011, 23:32
Решил попробовать собрать. Сразу столкнулся с тем, что нигде нет инструкции как собрать библиотеку под MinGW, да к тому же nVidia не предоставляет свои библиотеки в исходниках, а предлагает скачать собранные в составе CUDA. Но чтобы этот CUDA скачать надо еще зарегистрироваться на сайте. Мучался поиском в гугле и как-то нашел прямую ссылку, чтобы качать без регистрации: CUDA 3.1 (http://developer.nvidia.com/object/cuda_3_1_downloads.html#Windows%20XP,%20Windows%20Vista%20and%20Windows7)

Поставил пакет. Прописал в консоли следующие переменные, чтобы gcc мог найти заголовки и библиотеки:

Код:
set LPATH=D:/Work/CUDA/lib
set CPLUS_INCLUDE_PATH=D:/Work/CUDA/include

Распаковал исходники QtOpenCL (http://qt.gitorious.org/qt-labs/opencl/archive-tarball/master)

Ну и вбил qmake && mingw32-make release

Началась сборка. Посыпалась куча варнингов и вывалилось с ошибкой сборки /demos/mandelbrot. В принципе это единственное, что не собралось.

Протестировал все примеры. Стабильно крашатся при выходе на инструкции по адресу 0 при доступе к памяти 0. Вручную собрал /demos/bezierpatch. Релизная версия не запускается нивкакую, а вот дебажная загрузилась. OpenCL даже работает, ускорение видно невооруженным глазом. Смущает только то, что окно самой демки не перемещается вообще, возникает глюк какой-то с зависоном клавы и мышки ;) да и при выходе тоже крашится. Утилита clinfo вообще никак не реагирует, запускается и тут же возвращается с кодом возврата 0.

В общем грешу я все на симбиоз библиотек собранных с помощью gcc и MSVC в одном приложении.

Где-то на форуме nVidia видел даже пост, что поддержка MinGW не планируется, видимо намекают на использование библиотеки только с gcc под *никсами.

Были ли у кого успехи вообще в этом направлении? Может все-таки можно где-то раздабыть исходники CUDA для linux, чтобы собрать под виндой или есть какие-нибудь универсальные библиотеки OpenCL, которые держат и nVidia и ATI?
---
То, почему ничего не выводит clinfo, я понял, тролли видать забыли, что приложения написанные под Windows с использованием printf, но без ключа CONFIG += console ничего не выводят. Поправил, теперь имею такую инфу:

Код:
OpenCL Platforms:
    Platform ID       : 10954264
    Profile           : FULL_PROFILE
    Version           : OpenCL 1.0 CUDA 3.1.1
    Name              : NVIDIA CUDA
    Vendor            : NVIDIA Corporation
    Extension Suffix  : NV
    Extensions        :
        cl_khr_byte_addressable_store
        cl_khr_icd
        cl_khr_gl_sharing
        cl_nv_d3d9_sharing
        cl_nv_compiler_options
        cl_nv_device_attribute_query
        cl_nv_pragma_unroll

OpenCL Devices:
    Device ID         : 10973272
    Platform ID       : 10954264
    Vendor ID         : 4318
    Type              : GPU
    Profile           : FULL_PROFILE
    Version           : OpenCL 1.0 CUDA
    Driver Version    : 258.96
    Language Version  : OpenCL 1.0
    Name              : GeForce GTS 250
    Vendor            : NVIDIA Corporation
    Available         : true
    Compute Units     : 16
    Clock Frequency   : 1512 MHz
    Address Bits      : 32
    Byte Order        : Little Endian
    Max Work Size     : 512x512x64
    Max Items/Group   : 512
    Local Memory      : 16 kB
    Global Memory     : 1023 MB
    Global Cache Type : None
    Global Cache Size : 0 kB
    Cache Line Size   : 0
    Max Alloc Size    : 255 MB
    Max Constant Size : 64 kB
    Max Constant Args : 9
    Separate Local    : true
    Alignment         : 32 (min 16)
    Max Param Bytes   : 4352
    Error Correction  : false
    Unified Memory    : false
    Float Support     : InfinityNaN RoundNearest RoundZero RoundInfinity FusedMu
ltiplyAdd
    Double Support    : No
    Half Float Support: No
    Image Support     : 2D, 3D
    Max 2D Image Size : 8192x8192
    Max Samplers      : 16
    Max Read Images   : 128
    Max Write Images  : 8
    Max 3D Image      : 2048x2048x2048
    Writable 3D Images: false
    Has Compiler      : true
    Native Kernels    : false
    Out of Order Exec : true
    Preferred Vector Sizes:
        char1, short1, int1, long1, float1
    Extensions        :
        cl_khr_byte_addressable_store
        cl_khr_icd
        cl_khr_gl_sharing
        cl_nv_d3d9_sharing
        cl_nv_compiler_options
        cl_nv_device_attribute_query
        cl_nv_pragma_unroll
        cl_khr_global_int32_base_atomics
        cl_khr_global_int32_extended_atomics




Название: Re: QtOpenCL, nVidia и MinGW
Отправлено: xokc от Январь 16, 2011, 20:04
А если компилировать с MSVC то всё работает нормально?


Название: Re: QtOpenCL, nVidia и MinGW
Отправлено: SABROG от Январь 17, 2011, 15:17
Не знаю, MSVC у меня не стоит, я им не пользуюсь.


Название: Re: QtOpenCL, nVidia и MinGW
Отправлено: xokc от Январь 17, 2011, 20:47
Ну я так понимаю, что не попробовав собирать с MSVC не поймешь действительно ли тут виноват именно "симбиоз библиотек собранных с помощью gcc и MSVC в одном приложении".