cmtkDeviceContextCL.cxx

Go to the documentation of this file.
00001 /*
00002 //
00003 //  Copyright 2010 SRI International
00004 //
00005 //  This file is part of the Computational Morphometry Toolkit.
00006 //
00007 //  http://www.nitrc.org/projects/cmtk/
00008 //
00009 //  The Computational Morphometry Toolkit is free software: you can
00010 //  redistribute it and/or modify it under the terms of the GNU General Public
00011 //  License as published by the Free Software Foundation, either version 3 of
00012 //  the License, or (at your option) any later version.
00013 //
00014 //  The Computational Morphometry Toolkit is distributed in the hope that it
00015 //  will be useful, but WITHOUT ANY WARRANTY; without even the implied
00016 //  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 //  GNU General Public License for more details.
00018 //
00019 //  You should have received a copy of the GNU General Public License along
00020 //  with the Computational Morphometry Toolkit.  If not, see
00021 //  <http://www.gnu.org/licenses/>.
00022 //
00023 //  $Revision: 1964 $
00024 //
00025 //  $LastChangedDate: 2010-07-08 11:00:10 -0700 (Thu, 08 Jul 2010) $
00026 //
00027 //  $LastChangedBy: torstenrohlfing $
00028 //
00029 */
00030 
00031 #include "DeviceContextCL.h"
00032 
00033 #include <System/Exception.h>
00034 
00035 cmtk::DeviceContextCL::DeviceContextCL()
00036 {
00037   cl_int error = CL_SUCCESS;
00038   this->m_Context = clCreateContextFromType( 0, CL_DEVICE_TYPE_ALL, NULL, NULL, &error );
00039 
00040   if ( error != CL_SUCCESS )
00041     {
00042     throw Exception( "clCreateContextFromType() failed" );
00043     }
00044 
00045   size_t nDevices = 0;
00046   error = clGetContextInfo( this->m_Context, CL_CONTEXT_DEVICES, 0, NULL, &nDevices );
00047   if ( error != CL_SUCCESS )
00048     {
00049     throw Exception( "clGetContextInfo() failed" );
00050     }
00051 
00052   this->m_DeviceIDs.resize( nDevices );
00053 
00054   error = clGetContextInfo( this->m_Context, CL_CONTEXT_DEVICES, nDevices, &this->m_DeviceIDs[0], NULL );  
00055   if ( error != CL_SUCCESS )
00056     {
00057     throw Exception( "clGetContextInfo() failed" );
00058     }
00059 }
00060 
00061 cmtk::DeviceContextCL::~DeviceContextCL()
00062 {
00063   clReleaseContext( this->m_Context );
00064 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines