Exemple #1
0
 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);
Exemple #2
0
 internal static extern cl_mem clCreateFromGLTexture3D(
     cl_context context,
     cl_mem_flags flags,
     GLenum target,
     GLint mipLevel,
     GLuint texture,
     out ErrorCode errcode_ret);
Exemple #3
0
 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);
Exemple #4
0
        /// <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);
        }
Exemple #5
0
 internal static extern cl_mem clCreateFromGLBuffer(
     cl_context context,
     cl_mem_flags flags,
     GLuint bufobj,
     out ErrorCode errcode_ret);
Exemple #6
0
 internal static extern cl_event clCreateUserEvent(cl_context context, out ErrorCode errcode_ret);
Exemple #7
0
 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);
Exemple #8
0
 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);
Exemple #9
0
 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));
 }
Exemple #10
0
 /// <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));
 }
Exemple #11
0
 internal static extern cl_mem clCreateBuffer(cl_context context, cl_mem_flags flags, IntPtr size, void *host_ptr, out ErrorCode errcode_ret);
Exemple #12
0
 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);
Exemple #13
0
 internal static extern cl_mem clCreateFromGLRenderbuffer(
     cl_context context,
     cl_mem_flags flags,
     GLuint renderBuffer,
     out ErrorCode errcode_ret);
Exemple #14
0
 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);
Exemple #15
0
 internal static extern cl_int clReleaseContext(cl_context context);
Exemple #16
0
 internal static extern cl_int clRetainContext(cl_context context);
Exemple #17
0
 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));
 }
Exemple #18
0
 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));
 }
Exemple #19
0
 internal static extern IntPtr clCreateCommandQueue(cl_context context, cl_device_id device, cl_command_queue_properties properties, [MarshalAs(UnmanagedType.I4)] out ErrorCode errcode_ret);
Exemple #20
0
		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);
		}