OpenCL используется при компиляции хост-приложения с Address Sanitizer - PullRequest
0 голосов
/ 18 апреля 2019

Я отлаживаю сбойную проблему моего приложения OpenCL.Поэтому я включил асан, чтобы определить причину проблемы.Но потом я обнаружил, что, включив asan и перекомпилировав, мое приложение не может найти устройство OpenCL.(Буквально добавив -fsanitize=address к параметрам компилятора, моя программа не смогла использовать OpenCL).При дальнейшем тестировании я обнаружил, что средство очистки памяти работает с OenCL.

Почему это происходит?Как я могу использовать asan с OpenCL?

Редактировать: минимальный пример

#include <CL/cl.hpp>
#include <vector>
#include <iostream>

int main() {
    std::vector<cl::Platform> platforms;
    cl::Platform::get(&platforms);
    if(platforms.size() == 0) std::cerr << "in asas\n";
    else std::cout << "compiled normally\n";
}

Редактировать 2:

cl::Platform::get обычно возвращается с CL_SUCCESS.В процессе получения платформ нет ошибок.

И некоторая информация о моей настройке.
GPU: GTX 780Ti
Драйвер: 418.56
OpenCL SDK: Nvidia OpenCL / POCL 1.3 с процессором и бэкэндом CUDA
Компилятор: GCC 8.2.1
ОС: Arch Linux (Kernel 5.0.7 x64)

...