Skip to content

bneukom/oocl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

Object Oriented OpenCL (OOCL) Java Wrapper

Simple JOCL based object oriented OpenCL wrapper.

Example Usage

Creating an OpenCL 2.0 based device for an N-body simulation.

final float[] bodiesX = ...
final float[] bodiesY = ...
final float[] bodiesy = ...

final CLDevide device = CLPlatform.getFirst().getDevice(DeviceType.GPU, d -> d.getDeviceVersion() >= 2.0f).orElseThrow(() -> new IllegalStateException());

final CLContext context = device.createContext();
final CLCommandQueue commandQueue = context.createCommandQueue();

final CLMemory<float[]> bodiesXBuffer = context.createBuffer(CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, bodiesX);
final CLMemory<float[]> bodiesYBuffer = context.createBuffer(CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, bodiesY);
final CLMemory<float[]> bodiesZBuffer = context.createBuffer(CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, bodiesZ);

final CLKernel integrateKernel = context.createKernel(new File("kernels/nbody/integrate.cl"), "integrate", BuildOptions.EMPTY);

commandQueue.execute(integrateKernel, 1, globalWorkSize, localWorkSize);
commandQueue.finish();

Future Plans

Not all features supported by JOCL have been adapted yet.

About

Simple JOCL based object-oriented OpenCL wrapper.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages