CLBufferTest's test of createSubBuffer fails on AMD devices
correctly due to not considering CL_DEVICE_MEM_BASE_ADDR_ALIGN.
returned in errcode_ret if there are no devices in
context associated with buffer for which the origin
value is aligned to the
Each device has it's CL_DEVICE_MEM_BASE_ADDR_ALIGN attribute
and buffers used for a specific device must be aligned to it.
In case the OpenCL implementation does not fail w/ above
operation, subsequent buffer operations (enqueue .. etc) may fail later.
typedef unsigned __int32 cl_uint;
"The minimum value is the size (in bits) of the largest OpenCL built-in
data type supported by the device (long16 in FULL profile,
long16 or int16 in EMBEDDED profile) for devices that are not of type
I experimented w/ reading our said value and aligned the sub-buffer
offset as specified, which works well.
However a major problem is that the offset and size values passed
to CLBuffer.createSubBuffer(..) do not reflect the byte-size,
but the element-count.
Implementation must correct the byte-offset to be aligned properly.
Further more, another complication is the lack of knowledge
for which device the buffer shall be aligned to.
Hence a device attribute may be given here as a hint.
If the latter does not to exist, we would need to align the buffer for all devices.
I currently re-implement a general purpose bitstream reader
allowing properly fetching values like cl_uint .. etc.
Add 'CL_DEVICE_MEM_BASE_ADDR_ALIGN' to CLDevice and overal maximum to CLContext
Split CLBufferTest and use alignment.
Which tests does this affect? It looks like all the remaining failures except those on Mac OS X 10.6 cause the VM to crash, but I can't see the stack traces of the crash from the build server.
(In reply to comment #2)
> Which tests does this affect? It looks like all the remaining failures
> except those on Mac OS X 10.6 cause the VM to crash, but I can't see the
> stack traces of the crash from the build server.
Well, the crash is fixed now w/ the patch d4f04ddd3ef3b65b7c31d3504cf55489153c60c1,
i.e. the CLBufferTest works now <http://jogamp.org/git/?p=jocl.git;a=blobdiff;f=test/com/jogamp/opencl/CLBufferTest.java;h=5b5d0e38d19454f89eab920a69c87fb04a8536f9;hp=0638844dfee19ababb19540ddc14b9835c285481;hb=d4f04ddd3ef3b65b7c31d3504cf55489153c60c1;hpb=84e5e16a4aaa206c39b04b980d8d63ffacb97dbb>
(I always add a git-sha1 reference ..)
However .. maybe we should add 'auto-alignment' option in that
'createSubBuffer' methods ?
Test CLBufferTest is stable now.
We may reconsider the auto-alignment at a later time
in it's own bug report.