geggo / gpyfft

python wrapper for the OpenCL FFT library clFFT
GNU Lesser General Public License v3.0
54 stars 21 forks source link

Benchmark fails to run on ARM Mali platform #44

Closed Aaron216 closed 3 years ago

Aaron216 commented 5 years ago

I have just installed gpyfft on my ODROID-XU4 and encountered this issue when I attempted to run the benchmark. I believe it may be a quirk of the ARM Platform implementation of OpenCL as I've encountered similar issues with casting when I have used Reikna on the same device. Below is the output from python when I attempt to run the benchmark.

Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gpyfft.benchmark
>>> gpyfft.benchmark.run()
Choose platform:
[0] <pyopencl.Platform 'ARM Platform' at 0x-4aea32d8>
[1] <pyopencl.Platform 'Portable Computing Language' at 0x-4bf3effc>
Choice [0]:0
Choose device(s):
[0] <pyopencl.Device 'Mali-T628' on 'ARM Platform' at 0x-4aed4f40>
[1] <pyopencl.Device 'Mali-T628' on 'ARM Platform' at 0x-4aed4de8>
Choice, comma-separated [0]:0
Set the environment variable PYOPENCL_CTX='0:0' to avoid being asked again.
out of place transforms (1024, 1024) complex64
axes         in out

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
(-2, -1)     C   C 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops
(-2, -1)     C   F  7.5e-04 80.18ms   1.31 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
(-2, -1)     F   C 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                ^

<source>:2042:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                 ^

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
(-2, -1)     F   F 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                ^

<source>:2042:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                 ^

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
(-1, -2)     C   C 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
(-1, -2)     C   F 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops
(-1, -2)     F   C  7.5e-04 78.19ms   1.34 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
(-1, -2)     F   F 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                ^

<source>:2042:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                 ^

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
None         C   C 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
None         C   F 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
None         F   C 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                ^

<source>:2042:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global float2 * restrict gb)
                                                 ^

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
None         F   F 'INVALID_PROGRAM'
 0.00ms   0.00 Gflops
in place transforms (1024, 1024) complex64

                        BUILD LOG
************************************************
<source>:1580:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2003:19: error: initializing '__global float4 *' with an expression of incompatible type '__global float2 *'
        __global float4 *buff4g = bufOut;
                         ^        ~~~~~~

<source>:2016:49: warning: unknown attribute 'max_constant_size' ignored
void fft_fwd(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                ^

<source>:2036:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

<source>:2046:50: warning: unknown attribute 'max_constant_size' ignored
void fft_back(__constant cb_t *cb __attribute__((max_constant_size(32))), __global const float2 * restrict gbIn, __global float2 * restrict gbOut)
                                                 ^

<source>:2066:8: warning: assigning to '__global float2 *' from 'const __global float2 *' discards qualifiers
        lwbIn = gbIn + iOffset;
              ^ ~~~~~~~~~~~~~~

error: Compiler frontend failed (error code 59)

************************************************
FFTGeneratedStockhamAction::compileKernels failed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/odroid/Share/ResearchProject/gpyfft/gpyfft/gpyfft/benchmark.py", line 100, in run
    events = transform.enqueue()
  File "/home/odroid/Share/ResearchProject/gpyfft/gpyfft/gpyfft/fft.py", line 189, in enqueue
    return self.enqueue_arrays(forward=forward, data=self.data, result=self.result, wait_for_events=wait_for_events)
  File "/home/odroid/Share/ResearchProject/gpyfft/gpyfft/gpyfft/fft.py", line 221, in enqueue_arrays
    direction_forward = forward, temp_buffer = self.temp_buffer, wait_for_events = wait_for_events)
  File "gpyfft/gpyfftlib.pyx", line 621, in gpyfft.gpyfftlib.Plan.enqueue_transform
    errcheck(clfftEnqueueTransform(self.plan,
  File "gpyfft/gpyfftlib.pyx", line 55, in gpyfft.gpyfftlib.errcheck
    raise GpyFFT_Error(result)
gpyfft.gpyfftlib.GpyFFT_Error: 'INVALID_PROGRAM'
geggo commented 5 years ago

This is an issue related to the underlying clFFT library on your platform, nothing which can be fixed within the Gpyfft wrapper. I recommend you have a look at the clFFT library. It’s test program has the ability to save the generated OpenGL kernels. so you can have a closer look where the errors are triggered. Best Gregor