internal static extern ErrorCode clGetSupportedImageFormats( cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, [Out][MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] ImageFormat[] image_formats, out cl_uint num_image_formats);
internal static extern cl_mem clCreateFromGLTexture3D( cl_context context, cl_mem_flags flags, GLenum target, GLint mipLevel, GLuint texture, out ErrorCode errcode_ret);
internal static extern cl_program clCreateProgramWithBinary( cl_context context, cl_uint num_devices, [In] cl_device_id[] device_list, [In] IntPtr[] lengths, [In] IntPtr[] pBinaries, [Out][MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] cl_int[] binary_status, [MarshalAs(UnmanagedType.I4)] out ErrorCode errcode_ret);
/// <summary> /// Creates OpenCL environment on this process /// </summary> /// <param name="_MpiEnv">MPI environment of this process</param> public clEnvironment(MPIEnviroment _MpiEnv) { MpiEnv = _MpiEnv; cl_platform_id[] platforms = cl.GetPlatformIDs(); cl_platform_info_return pinfo = cl.GetPlatformInfo(platforms[0]); string vnd = pinfo.vendor; switch (vnd) { case "NVIDIA Corporation": _vendor = Vendor.NVIDIA; break; case "Advanced Micro Devices, Inc.": _vendor = Vendor.AMD; break; default: _vendor = Vendor.Other; break; } Console.WriteLine(vnd + " : " + _vendor.ToString()); Console.WriteLine(pinfo.version); if (_vendor == Vendor.AMD) { clVectorSource.source[0] = clVectorSource.source[0].Replace("cl_khr_fp64", "cl_amd_fp64"); clMatrixSource.source[0] = clMatrixSource.source[0].Replace("cl_khr_fp64", "cl_amd_fp64"); Console.WriteLine("Adjusted AMD fp64 extenstion"); } cl_device_id[] devices = cl.GetDeviceIDs(platforms[0], cl_device_type.CL_DEVICE_TYPE_GPU); int numDevices = devices.Length; if (numDevices < _MpiEnv.ProcessesOnMySMP) { throw new ApplicationException("not enougth OpenCL devices; There must be at least one OpenCL device for each MPI process;"); } device = devices[0]; context = cl.CreateContext(platforms[0], devices); //cl_device_info_return dinfo = cl.GetDeviceInfo(device); //Console.WriteLine("Max work group size: " + dinfo.max_work_group_size); //Console.WriteLine("Process " + _MpiEnv.ProcessRankOnSMP + " running on device " + dinfo.name + ", " + dinfo.version); //Console.WriteLine(dinfo.extensions); }
internal static extern cl_mem clCreateFromGLBuffer( cl_context context, cl_mem_flags flags, GLuint bufobj, out ErrorCode errcode_ret);
internal static extern cl_event clCreateUserEvent(cl_context context, out ErrorCode errcode_ret);
internal static extern cl_sampler clCreateSampler(cl_context context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, out ErrorCode errcode_ret);
internal static extern cl_mem clCreateImage3D(cl_context context, cl_mem_flags flags, ImageFormat *image_format, IntPtr image_width, IntPtr image_height, IntPtr image_depth, IntPtr image_row_pitch, IntPtr image_slice_pitch, void *host_ptr, out ErrorCode errcode_ret);
public static cl_sampler CreateSampler(cl_context context, bool normalized_coords, cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, out ErrorCode errcode_ret) { return(OpenCLAPI.clCreateSampler(context, normalized_coords ? (cl_bool)Bool.TRUE : (cl_bool)Bool.FALSE, addressing_mode, filter_mode, out errcode_ret)); }
/// <summary> /// OpenCL 1.1 /// </summary> /// <param name="context"></param> /// <param name="errcode_ret"></param> /// <returns></returns> public static cl_event CreateUserEvent(cl_context context, out ErrorCode errcode_ret) { return(OpenCLAPI.clCreateUserEvent(context, out errcode_ret)); }
internal static extern cl_mem clCreateBuffer(cl_context context, cl_mem_flags flags, IntPtr size, void *host_ptr, out ErrorCode errcode_ret);
internal static extern cl_program clCreateProgramWithSource( cl_context context, cl_uint count, [In] String[] strings, [In] IntPtr[] lengths, [MarshalAs(UnmanagedType.I4)] out ErrorCode errcode_ret);
internal static extern cl_mem clCreateFromGLRenderbuffer( cl_context context, cl_mem_flags flags, GLuint renderBuffer, out ErrorCode errcode_ret);
internal static extern cl_int clGetContextInfo(cl_context context, cl_context_info param_name, IntPtr param_value_size, void *param_value, out IntPtr param_value_size_ret);
internal static extern cl_int clReleaseContext(cl_context context);
internal static extern cl_int clRetainContext(cl_context context);
public static cl_mem CreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, GLuint renderbuffer, out ErrorCode errcode_ret) { return(OpenCLAPI.clCreateFromGLRenderbuffer(context, flags, renderbuffer, out errcode_ret)); }
public static cl_mem CreateFromGLTexture3D(cl_context context, cl_mem_flags flags, GLenum target, GLint mipLevel, GLuint texture, out ErrorCode errcode_ret) { return(OpenCLAPI.clCreateFromGLTexture3D(context, flags, target, mipLevel, texture, out errcode_ret)); }
internal static extern IntPtr clCreateCommandQueue(cl_context context, cl_device_id device, cl_command_queue_properties properties, [MarshalAs(UnmanagedType.I4)] out ErrorCode errcode_ret);
public static cl_mem CreateFromGLBuffer(cl_context context, cl_mem_flags flags, GLuint bufobj, out ErrorCode errcode_ret) { return OpenCLAPI.clCreateFromGLBuffer(context, flags, bufobj, out errcode_ret); }