MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: OpenCL OpenCLFractalRender3D invalid binary error

  • To: mathgroup at smc.vnet.net
  • Subject: [mg125644] Re: OpenCL OpenCLFractalRender3D invalid binary error
  • From: Bert RAM Aerts <bert.ram.aerts at gmail.com>
  • Date: Sat, 24 Mar 2012 02:04:00 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jj7dtg$2e4$1@smc.vnet.net>

Problem solved itself :-)
By installing the latest nVIDIA driver 295.33.
Now both CUDA and OpenCL work just fine for all examples I tried.


Op woensdag 7 maart 2012 11:39:44 UTC+1 schreef Bert RAM Aerts het volgende:
> 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]



Op woensdag 7 maart 2012 11:39:44 UTC+1 schreef Bert RAM Aerts het volgende:
> 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]




  • Prev by Date: Re: How do I import midi files into Mathematica?
  • Next by Date: Re: calculation error in series
  • Previous by thread: OpenCL OpenCLFractalRender3D invalid binary error
  • Next by thread: Existence of a column in a table in an if loop