[Mesa-dev] [PATCH 0/3] cl workdim v2

Tom Stellard tom at stellard.net
Thu Aug 7 08:15:02 PDT 2014


On Thu, Aug 07, 2014 at 04:02:40PM +0300, Francisco Jerez wrote:
> Jan Vesely <jan.vesely at rutgers.edu> writes:
> 
> > This respin includes Francisco's approach of providing implicit
> > in the arg vector passed from clover, and Tom's idea of appending
> > implicit args after the kernel args.
> >
> 
> Hmmm...  Maybe it would make sense to add some sort of versioning
> (e.g. as part of the target triple) to the binary interface between
> clover and the kernel instead, so we can handle this sort of
> non-backwards compatible changes and the compiler back-end and libclc
> have some way to find out whether some specific feature is available and
> e.g. some specific extension should be enabled.
> 

I was thinking the way to do this would be to use calling conventions
on the kernel functions to specify which binary interface to use.
However, I don't want to change the binary interface right now, because
it is still missing a lot of things, and I don't want to have to change
it every time we add something new.

I think we should keep the current interface of:
Offset                   | Data
-------------------------|------------------
0                        : Kernel Arguments
sizeof(Kernel Inputs)    : work_dim
sizeof(Kernel Inputs) + 4: ????
...

We can always revisit this once clover is more mature and we think
we have a binary interface that won't change. Although, personally I
prefer adding implicit inputs to the end of the kernel arguments rather
than having of them somewhere else.

-Tom

> > I assumed it's not safe to modify exec.input, so the input vector is copied
> > before appending work dim.
> >
> 
> Why wouldn't it be safe?  You just need to make sure they're appended
> before the compute state is created.
> 
> > Passes get-work-dim piglit on turks without any regression,
> > I have not tested SI as I don't have the hw.
> >
> > jan
> >
> >
> >
> >
> > Jan Vesely (3):
> >   gallium: Pass input data size to launch_grid
> >   clover: Add work dimension implicit param to input
> >   r600,radeonsi: Copy implicit args provided by clover
> >
> >  src/gallium/drivers/ilo/ilo_gpgpu.c               |   2 +-
> >  src/gallium/drivers/nouveau/nvc0/nvc0_compute.c   |   2 +-
> >  src/gallium/drivers/nouveau/nvc0/nvc0_context.h   |   4 +-
> >  src/gallium/drivers/nouveau/nvc0/nve4_compute.c   |   2 +-
> >  src/gallium/drivers/r600/evergreen_compute.c      |  14 +-
> >  src/gallium/drivers/r600/evergreen_compute.h      |   1 -
> >  src/gallium/drivers/radeonsi/si_compute.c         |   6 +-
> >  src/gallium/include/pipe/p_context.h              |   2 +-
> >  src/gallium/state_trackers/clover/core/kernel.cpp | 162 ++++++++++++----------
> >  src/gallium/tests/trivial/compute.c               |  40 +++---
> >  10 files changed, 122 insertions(+), 113 deletions(-)
> >
> > -- 
> > 1.9.3





More information about the mesa-dev mailing list