[Beignet] [PATCH] Test case for missing global barrier functionality
Yang, Rong R
rong.r.yang at intel.com
Thu Jun 13 19:57:02 PDT 2013
I have removed the assert, and tested that the global barrier work in single work group.
If remove barrier, and set OCL_SIMD_WIDTH=8, this test will fail.
Add the global barrier, test pass.
-----Original Message-----
From: beignet-bounces+rong.r.yang=intel.com at lists.freedesktop.org [mailto:beignet-bounces+rong.r.yang=intel.com at lists.freedesktop.org] On Behalf Of Zhigang Gong
Sent: Thursday, June 13, 2013 2:16 PM
To: Dag Lem
Cc: beignet at lists.freedesktop.org
Subject: Re: [Beignet] [PATCH] Test case for missing global barrier functionality
We only support local barrier currently. It should fail for your test case, as your test case rely on global barrier.
DECL_PATTERN(SyncInstruction)
{
INLINE bool emitOne(Selection::Opaque &sel, const ir::SyncInstruction &insn) const
{
using namespace ir;
const uint32_t params = insn.getParameters();
GBE_ASSERTM(params == syncLocalBarrier,
"Only barrier(CLK_LOCAL_MEM_FENCE) is supported right now "
"for the synchronization primitives");
On Mon, Jun 10, 2013 at 08:55:47AM +0200, Dag Lem wrote:
> The attached test currently fails - I hope someone will take up the
> gauntlet ;-)
>
> I also see another problem with global memory - using a larger chunk
> of global memory as temporary storage per work item (e.g. 64KB) seems
> to trigger read/write inconsistency within each work item (reading
> back zeros after having written non-zeros).
The reason is that we only hard code the per lane stack size to 1KB.
You can find the related code at file backend/context.cpp:
void Context::buildStack(void) {
const auto &stackUse = dag->getUse(ir::ocl::stackptr);
if (stackUse.size() == 0) // no stack is used if stackptr is unused
return;
// Be sure that the stack pointer is set
GBE_ASSERT(this->kernel->getCurbeOffset(GBE_CURBE_STACK_POINTER, 0) >= 0);
this->kernel->stackSize = 1*KB; // XXX compute that in a better way
}
It seems I need to add something to the TODO items. Thanks for reporting the problems. I will push your unit test case latter, but will not enable it currently.
> Dag Lem (1):
> utests: Add test case for global memory barrier
>
> kernels/compiler_global_memory_barrier.cl | 5 +++++
> utests/CMakeLists.txt | 1 +
> utests/compiler_global_memory_barrier.cpp | 27
> +++++++++++++++++++++++++++
> 3 files changed, 33 insertions(+)
> create mode 100644 kernels/compiler_global_memory_barrier.cl
> create mode 100644 utests/compiler_global_memory_barrier.cpp
>
> --
> 1.8.1.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
Beignet at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list