Как найти значение CL_DEVICE_MAX_WORK_GROUP_SIZE - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь найти значение CL_DEVICE_MAX_WORK_GROUP_SIZE, однако после запуска этого кода я получаю ошибку ниже.

Необработанное исключение в 0x74202C92 в Assignment1.exe: Microsoft C ++ исключение: cl :: Ошибка в ячейке памяти 0x0136F6E0.

Новичок в OpenCL, надеюсь получить помощь здесь. Пожалуйста, посоветуй мне. Бесконечно благодарен!

            std::vector<cl::Platform> platforms;    // available platforms
            std::vector<cl::Device> devices;        // devices available to a platform
            std::vector<cl::Device> compute_units;  // compute units available to a platform
            //size_t workgroup_size;                // workgroup size available to a platform
            std::string outputString;               // string for output
            unsigned int i, j;                      // counters

            std::cout << std::endl;
            cl::Platform::get(&platforms);
            std::cout << "Number of OpenCL platforms: " << platforms.size() << std::endl;

            // for each platform
            for (i = 0; i < platforms.size(); i++)
            {
                std::cout << "--------------------" << std::endl;
                // output platform index
                std::cout << "  Platform " << i << ":" << std::endl;

                // get maximum number of work group size available to the platform
                platforms[i].getDevices(CL_DEVICE_MAX_WORK_GROUP_SIZE, &devices);

                std::cout << "\nNumber of Work Group Size available to platform " << i << ": " << sizeof(devices) << std::endl;
                std::cout << "--------------------" << std::endl;
            }

1 Ответ

0 голосов
/ 06 июля 2019

раскомментируйте свой размер рабочей группы. и вызовите workgroup_size ниже в устройствах, например:

//for all platforms 
for(int i = 0 ; i< platforms.size() ; i++){
//for all devices in the platform
for(int j = 0; j < devices.size() ; j++)
workgroup_size = devices[j].getInfo<CL_DEVICE_MAX_WORK_GROUP_SIZE>();
                        cout << "\tMax Group Size: " << maxGroup << endl;
}
}
...