OpenCL OpenCLFractalRender3D invalid binary error
- To: mathgroup at smc.vnet.net
- Subject: [mg125336] OpenCL OpenCLFractalRender3D invalid binary error
- From: Bert RAM Aerts <bert.ram.aerts at gmail.com>
- Date: Wed, 7 Mar 2012 05:37:47 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
I have a Dell Inspiron 1720 with Core 2 Duo 7300 Linux Mageia 1 x86_64 nVIDIA GeForce 8600M GT with latest driver NVIDIA-Linux-x86_64-295.20.run Mathematica 8.0.4.0 Home Edition x86_64 ~/.Mathematica/Paclets/Repository/CUDAResources-Lin64-8.0.4.1 Following commands all work fine: --------------------------------- Needs["OpenCLLink`"] OpenCLQ[] True OpenCLInformation[] {1 -> {"Version" -> "OpenCL 1.1 CUDA 4.2.1", "Name" -> "NVIDIA CUDA", "Vendor" -> "NVIDIA Corporation", "Extensions" -> {"cl_khr_byte_addressable_store", "cl_khr_icd", "cl_khr_gl_sharing", "cl_nv_compiler_options", "cl_nv_device_attribute_query", "cl_nv_pragma_unroll"}, 1 -> {"Type" -> "GPU", "Name" -> "GeForce 8600M GT", "Version" -> "OpenCL 1.0 CUDA", "Extensions" -> {"cl_khr_byte_addressable_store", "cl_khr_icd", "cl_khr_gl_sharing", "cl_nv_compiler_options", "cl_nv_device_attribute_query", "cl_nv_pragma_unroll", "cl_khr_global_int32_base_atomics", "cl_khr_global_int32_extended_atomics"}, "Driver Version" -> "295.20", "Vendor" -> "NVIDIA Corporation", "Profile" -> "FULL_PROFILE", "Vendor ID" -> 4318, "Compute Units" -> 4, "Core Count" -> 32, "Maximum Work Item Dimensions" -> 3, "Maximum Work Item Sizes" -> {512, 512, 64}, "Maximum Work Group Size" -> 512, "Preferred Vector Width Character" -> 1, "Preferred Vector Width Short" -> 1, "Preferred Vector Width Integer" -> 1, "Preferred Vector Width Long" -> 1, "Preferred Vector Width Float" -> 1, "Preferred Vector Width Double" -> 0, "Maximum Clock Frequency" -> 950, "Address Bits" -> 32, "Maximum Memory Allocation Size" -> 134217728, "Image Support" -> True, "Maximum Read Image Arguments" -> 128, "Maximum Write Image Arguments" -> 8, "Maximum Image2D Width" -> 4096, "Maximum Image2D Height" -> 16383, "Maximum Image3D Width" -> 2048, "Maximum Image3D Height" -> 2048, "Maximum Image3D Depth" -> 2048, "Maximum Samplers" -> 16, "Maximum Parameter Size" -> 4352, "Memory Base Address Align" -> 2048, "Memory Data Type Align Size" -> 128, "Floating Point Precision Configuration" -> {"Infinity", "NaNs", "Round to Nearest", "Round to Infinity", "Round to Zero", "IEEE754-2008 Fused MAD"}, "Global Memory Cache Type" -> "None", "Global Memory Cache Line Size" -> 0, "Global Memory Cache Size" -> 0, "Global Memory Size" -> 268107776, "Maximum Constant Buffer Size" -> 65536, "Maximum Constant Arguments" -> 9, "Local Memory Type" -> "Local", "Local Memory Size" -> 16384, "Error Correction Support" -> False, "Profiling Timer Resolution" -> 1000, "Endian Little" -> True, "Available" -> True, "Compiler Available" -> True, "Execution Capabilities" -> {"Kernel Execution"}, "Command Queue Properties" -> {"Out of Order Execution", "Profiling Enabled"}}}} doubleFun = OpenCLFunctionLoad[" __kernel void doubleVec(__global mint * in, mint length) { int index = get_global_id(0); if (index < length) in[index] = 2*in[index]; }", "doubleVec", {{_Integer}, _Integer}, 256] vec = Range[20]; doubleFun[vec, 20] OpenCLMersenneTwister[100] srcf = FileNameJoin[{$OpenCLLinkPath, "SupportFiles", "FFT_Kernels.cl"}] in = RandomReal[1.0, 1024]; out = ConstantArray[0.0, 1024]; MapThread[Complex, fft[in, out, 64]][[;; 50]] But following command returns an error: --------------------------------------- OpenCLFractalRender3D[] OpenCLFunctionLoad::invbin: OpenCLLink encountered an invalid binary. Please note that the nVIDIA driver already contains CUDA 4.2.1 OpenCL 1.1 as shown in OpenCLInformation[], while Mathematica CUDA is still at version 4 and not the latest 4.1. Second note: GeForce 8600M GT does not support doubles, only floats. How can I obtain an error message that tells me more? My installation should be fine as CUDA is OK: --------------------------------------------- All examples from CUDA that I tried out, work fine like e.g. Mandelbulb Needs["CUDALink`"] CUDAQ[] width = 640; height = 480; iconfig = {width, height, 1, 0, 1, 6}; config = {0.001, 0.0, 0.0, 0.0, 8.0, 15.0, 10.0, 5.0}; camera = {{2.0, 2.0, 2.0}, {0.0, 0.0, 0.0}}; AppendTo[camera, Normalize[camera[[2]] - camera[[1]]]]; AppendTo[camera, 0.75*Normalize[Cross[camera[[3]], {0.0, 1.0, 0.0}]]]; AppendTo[camera, 0.75*Normalize[Cross[camera[[4]], camera[[3]]]]]; config = Join[{config, Flatten[camera]}]; pixelsMem = CUDAMemoryAllocate["Float", {height, width, 3}] srcf = FileNameJoin[{$CUDALinkPath, "SupportFiles", "mandelbulb.cu"}] mandelbulb = CUDAFunctionLoad[{srcf}, "MandelbulbGPU", {{"Float", _, "Output"}, {"Float", _, "Input"}, {"Integer32", _, "Input"}, "Integer32", "Float", "Float"}, {16}, "UnmangleCode" -> False] mandelbulb[pixelsMem, Flatten[config], iconfig, 0, 0.0, 0.0, {width*height*3}]; pixels = CUDAMemoryGet[pixelsMem]; Image[pixels]