Skip to content

Commit 75d7ff9

Browse files
committed
JavaCL: more raw calls
1 parent 43d8393 commit 75d7ff9

File tree

4 files changed

+49
-12
lines changed

4 files changed

+49
-12
lines changed

Core/src/main/PointerMacros.vm

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#macro (getReusablePointers)
2+
ReusablePointers ptrs = ReusablePointers.get();
3+
#end
4+
5+
#macro (getEventsIn)
6+
int[] eventsInCount = new int[1];
7+
Pointer<cl_event> eventsIn = CLAbstractEntity.copyNonNullEntities(eventsToWaitFor, eventsInCount, ptrs.events_in);
8+
#end
9+
10+
#macro (getEventsOut)
11+
Pointer<cl_event> eventOut = CLEvent.new_event_out(eventsToWaitFor, ptrs.event_out);
12+
#end
13+
14+
#macro (getEventsInOut)
15+
#getReusablePointers()
16+
#getEventsIn()
17+
#getEventsOut()
18+
#end
19+
20+
#macro (getEventOutArg) getPeer(eventOut) #end
21+
#macro (getEventsInArgs) eventsInCount[0], getPeer(eventsIn) #end
22+
#macro (getEventsInOutArgs) #getEventsInArgs(), #getEventOutArg() #end
23+
24+
#macro (returnEventOut) return CLEvent.createEventFromPointer(queue, eventOut); #end
25+
26+
/*
27+
#getEventsInOut()
28+
error(CL.clEnqueueTask(queue.getEntityPeer(), getEntityPeer(), #getEventsInOutArgs()));
29+
#returnEventOut()
30+
*/

Core/src/main/java/com/nativelibs4java/opencl/CLEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ static CLEvent createEvent(final CLQueue queue, long evt) {
132132
return createEvent(queue, evt, false);
133133
}
134134
static CLEvent createEvent(final CLQueue queue, long evt, boolean isUserEvent) {
135-
if (evt == null)
135+
if (evt == 0)
136136
return null;
137137

138138
return isUserEvent ?

Core/src/main/velocity/com/nativelibs4java/opencl/CLBuffer.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -169,14 +169,15 @@ public CLEvent copyTo(CLQueue queue, long srcOffset, long length, CLMem destinat
169169

170170
Pointer<cl_event> evts = CLEvent.to_cl_event_array(eventsToWaitFor);
171171
error(CL.clEnqueueCopyBuffer(
172-
queue.getEntity(),
173-
getEntity(),
174-
destination.getEntity(),
172+
queue.getEntityPeer(),
173+
getEntityPeer(),
174+
destination.getEntityPeer(),
175175
actualSrcOffset,
176176
actualDestOffset,
177177
actualLength,
178-
evts == null ? 0 : (int)evts.getValidElements(), evts,
179-
eventOut
178+
evts == null ? 0 : (int)evts.getValidElements(),
179+
getPeer(evts),
180+
getPeer(eventOut)
180181
));
181182
return CLEvent.createEventFromPointer(queue, eventOut);
182183
}
@@ -188,25 +189,28 @@ protected Pair<Pointer<T>, CLEvent> map(CLQueue queue, MapFlags flags, long offs
188189
Pointer<cl_event> eventOut = blocking ? null : CLEvent.new_event_out(eventsToWaitFor, ptrs.event_out);
189190

190191
Pointer<cl_event> evts = CLEvent.to_cl_event_array(eventsToWaitFor);
191-
Pointer p = CL.clEnqueueMapBuffer(queue.getEntity(), getEntity(), blocking ? CL_TRUE : CL_FALSE,
192+
long mappedPeer = CL.clEnqueueMapBuffer(queue.getEntityPeer(), getEntityPeer(), blocking ? CL_TRUE : CL_FALSE,
192193
flags.value(),
193194
offset * getElementSize(),
194195
length * getElementSize(),
195-
evts == null ? 0 : (int)evts.getValidElements(), evts,
196-
eventOut,
197-
pErr
196+
evts == null ? 0 : (int)evts.getValidElements(),
197+
getPeer(evts),
198+
getPeer(eventOut),
199+
getPeer(pErr)
198200
);
199201
error(pErr.getInt());
202+
if (mappedPeer == 0)
203+
return null;
200204
return new Pair<Pointer<T>, CLEvent>(
201-
p.as(io).validElements(length).order(queue.getDevice().getKernelsDefaultByteOrder()),
205+
pointerToAddress(mappedPeer, io).validElements(length).order(queue.getDevice().getKernelsDefaultByteOrder()),
202206
CLEvent.createEventFromPointer(queue, eventOut)
203207
);
204208
}
205209

206210
public CLEvent unmap(CLQueue queue, Pointer<T> buffer, CLEvent... eventsToWaitFor) {
207211
Pointer<cl_event> eventOut = CLEvent.new_event_out(eventsToWaitFor);
208212
Pointer<cl_event> evts = CLEvent.to_cl_event_array(eventsToWaitFor);
209-
error(CL.clEnqueueUnmapMemObject(queue.getEntity(), getEntity(), buffer, evts == null ? 0 : (int)evts.getValidElements(), evts, eventOut));
213+
error(CL.clEnqueueUnmapMemObject(queue.getEntityPeer(), getEntityPeer(), getPeer(buffer), evts == null ? 0 : (int)evts.getValidElements(), getPeer(evts), getPeer(eventOut)));
210214
return CLEvent.createEventFromPointer(queue, eventOut);
211215
}
212216

OpenCL4Java/src/main/java/com/nativelibs4java/opencl/library/OpenCLLibrary.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,7 @@ public static abstract class clSetMemObjectDestructorAPPLE_arg1_callback extends
721721
public native int clEnqueueFillBuffer(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, Pointer<? > voidPtr1, @Ptr long size_t1, @Ptr long size_t2, @Ptr long size_t3, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2);
722722
/// Original signature : <code>cl_int clEnqueueCopyBuffer(cl_command_queue, cl_mem, cl_mem, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*)</code>
723723
public native int clEnqueueCopyBuffer(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, OpenCLLibrary.cl_mem cl_mem2, @Ptr long size_t1, @Ptr long size_t2, @Ptr long size_t3, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2);
724+
public native int clEnqueueCopyBuffer(@Ptr long cl_command_queue1, @Ptr long cl_mem1, @Ptr long cl_mem2, @Ptr long size_t1, @Ptr long size_t2, @Ptr long size_t3, int cl_uint1, @Ptr long cl_eventPtr1, @Ptr long cl_eventPtr2);
724725
/// Original signature : <code>cl_int clEnqueueCopyBufferRect(cl_command_queue, cl_mem, cl_mem, const size_t*, const size_t*, const size_t*, size_t, size_t, size_t, size_t, cl_uint, const cl_event*, cl_event*)</code>
725726
public native int clEnqueueCopyBufferRect(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, OpenCLLibrary.cl_mem cl_mem2, Pointer<SizeT > size_tPtr1, Pointer<SizeT > size_tPtr2, Pointer<SizeT > size_tPtr3, @Ptr long size_t1, @Ptr long size_t2, @Ptr long size_t3, @Ptr long size_t4, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2);
726727
/// Original signature : <code>cl_int clEnqueueReadImage(cl_command_queue, cl_mem, cl_bool, const size_t*, const size_t*, size_t, size_t, void*, cl_uint, const cl_event*, cl_event*)</code>
@@ -738,10 +739,12 @@ public static abstract class clSetMemObjectDestructorAPPLE_arg1_callback extends
738739
public native int clEnqueueCopyBufferToImage(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, OpenCLLibrary.cl_mem cl_mem2, @Ptr long size_t1, Pointer<SizeT > size_tPtr1, Pointer<SizeT > size_tPtr2, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2);
739740
/// Original signature : <code>void* clEnqueueMapBuffer(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event*, cl_event*, cl_int*)</code>
740741
public native Pointer<? > clEnqueueMapBuffer(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, int cl_bool1, long cl_map_flags1, @Ptr long size_t1, @Ptr long size_t2, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2, Pointer<Integer > cl_intPtr1);
742+
public native @Ptr long clEnqueueMapBuffer(@Ptr long cl_command_queue1, @Ptr long cl_mem1, int cl_bool1, long cl_map_flags1, @Ptr long size_t1, @Ptr long size_t2, int cl_uint1, @Ptr long cl_eventPtr1, @Ptr long cl_eventPtr2, @Ptr long cl_intPtr1);
741743
/// Original signature : <code>void* clEnqueueMapImage(cl_command_queue, cl_mem, cl_bool, cl_map_flags, const size_t*, const size_t*, size_t*, size_t*, cl_uint, const cl_event*, cl_event*, cl_int*)</code>
742744
public native Pointer<? > clEnqueueMapImage(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, int cl_bool1, long cl_map_flags1, Pointer<SizeT > size_tPtr1, Pointer<SizeT > size_tPtr2, Pointer<SizeT > size_tPtr3, Pointer<SizeT > size_tPtr4, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2, Pointer<Integer > cl_intPtr1);
743745
/// Original signature : <code>cl_int clEnqueueUnmapMemObject(cl_command_queue, cl_mem, void*, cl_uint, const cl_event*, cl_event*)</code>
744746
public native int clEnqueueUnmapMemObject(OpenCLLibrary.cl_command_queue cl_command_queue1, OpenCLLibrary.cl_mem cl_mem1, Pointer<? > voidPtr1, int cl_uint1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2);
747+
public native int clEnqueueUnmapMemObject(@Ptr long cl_command_queue1, @Ptr long cl_mem1, @Ptr long voidPtr1, int cl_uint1, @Ptr long cl_eventPtr1, @Ptr long cl_eventPtr2);
745748
/// Original signature : <code>cl_int clEnqueueMigrateMemObjects(cl_command_queue, cl_uint, const cl_mem*, cl_mem_migration_flags, cl_uint, const cl_event*, cl_event*)</code>
746749
@Optional
747750
public native int clEnqueueMigrateMemObjects(OpenCLLibrary.cl_command_queue cl_command_queue1, int cl_uint1, Pointer<OpenCLLibrary.cl_mem > cl_memPtr1, long cl_mem_migration_flags1, int cl_uint2, Pointer<OpenCLLibrary.cl_event > cl_eventPtr1, Pointer<OpenCLLibrary.cl_event > cl_eventPtr2);

0 commit comments

Comments
 (0)