1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
/*
* Copyright (C) 2013 Simon Richter
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <CL/cl.h>
#include <CL/cl_ext.h>
#include <iostream>
#include "platform.h"
#include "output_amd_compat.h"
#include <list>
int main(int, char **)
{
std::list<platform> platforms;
try
{
cl_uint num_platform_ids;
cl_int rc = clGetPlatformIDs(0, 0, &num_platform_ids);
switch(rc)
{
case CL_SUCCESS:
break;
case CL_PLATFORM_NOT_FOUND_KHR:
std::cerr << "I: ICD loader reports no usable platforms" << std::endl;
return 0;
default:
throw rc;
}
cl_platform_id platform_ids[num_platform_ids];
rc = clGetPlatformIDs(num_platform_ids, platform_ids, 0);
if(rc != CL_SUCCESS)
throw rc;
for(cl_platform_id const *i = platform_ids; i != platform_ids + num_platform_ids; ++i)
platforms.insert(platforms.end(), platform(*i))->load();
output_amd_compat(platforms);
return 0;
}
catch(cl_int e)
{
std::cerr << "E: " << e << std::endl;
return 1;
}
}
|