00001 /* ======================================================================= 00002 Copyright (c) 2010, Institute for Microelectronics, TU Vienna. 00003 http://www.iue.tuwien.ac.at 00004 ----------------- 00005 ViennaCL - The Vienna Computing Library 00006 ----------------- 00007 00008 authors: Karl Rupp rupp@iue.tuwien.ac.at 00009 Florian Rudolf flo.rudy+viennacl@gmail.com 00010 Josef Weinbub weinbub@iue.tuwien.ac.at 00011 00012 license: MIT (X11), see file LICENSE in the ViennaCL base directory 00013 ======================================================================= */ 00014 00019 #ifndef _VIENNACL_OCL_FORWARDS_H_ 00020 #define _VIENNACL_OCL_FORWARDS_H_ 00021 00022 #define VIENNACL_OCL_MAX_DEVICE_NUM 8 00023 00024 #include <stddef.h> 00025 00026 namespace viennacl 00027 { 00028 namespace ocl 00029 { 00030 //device type tags (cf. OpenCL standard) 00031 struct gpu_tag {}; 00032 struct cpu_tag {}; 00033 struct accelerator_tag {}; 00034 struct default_tag {}; 00035 00036 00037 class kernel; 00038 class device; 00039 class command_queue; 00040 class context; 00041 class program; 00042 00043 template<class OCL_TYPE> 00044 class handle; 00045 00046 template <typename KernelType> 00047 void enqueue(KernelType & k, viennacl::ocl::command_queue const & queue); 00048 00049 inline viennacl::ocl::context & current_context(); 00050 inline viennacl::ocl::device const & current_device(); 00051 } 00052 } //namespace viennacl 00053 00054 #endif 00055