/** * If true, a new batch of parallel random numbers is automatically precomputed in background as soon as one starts to consume numbers from the current batch (this gives faster random numbers, at the risk of computing more values than needed) */ public synchronized void setPreload(boolean preload) throws CLBuildException { this.preload = preload; if (preload && preloadEvent == null) { if (lastData == null) { preloadEvent = randomProgram.gen_numbers(queue, seeds, output, globalWorkSizes, null); } else if (consumedInts > 0) { preload(); } } } private synchronized CLEvent preload() throws CLBuildException {
/** * If true, a new batch of parallel random numbers is automatically precomputed in background as soon as one starts to consume numbers from the current batch (this gives faster random numbers, at the risk of computing more values than needed) */ public synchronized void setPreload(boolean preload) throws CLBuildException { this.preload = preload; if (preload && preloadEvent == null) { if (lastData == null) { preloadEvent = randomProgram.gen_numbers(queue, seeds, output, globalWorkSizes, null); } else if (consumedInts > 0) { preload(); } } } private synchronized CLEvent preload() throws CLBuildException {
private synchronized void waitForData(int n) { try { if (lastData == null) { //lastOutputData = NIOUtils.directInts(parallelSize, context.getKernelsDefaultByteOrder()); if (preloadEvent == null) preloadEvent = randomProgram.gen_numbers(queue, seeds, output, globalWorkSizes, null); readLastOutputData(); } if (consumedInts > parallelSize - n) { preload().waitFor(); consumedInts = 0; readLastOutputData(); } if (preload && preloadEvent == null) preload(); } catch (CLBuildException ex) { throw new RuntimeException(ex); } } private synchronized void readLastOutputData() {
private synchronized void waitForData(int n) { try { if (lastData == null) { //lastOutputData = NIOUtils.directInts(parallelSize, context.getKernelsDefaultByteOrder()); if (preloadEvent == null) preloadEvent = randomProgram.gen_numbers(queue, seeds, output, globalWorkSizes, null); readLastOutputData(); } if (consumedInts > parallelSize - n) { preload().waitFor(); consumedInts = 0; readLastOutputData(); } if (preload && preloadEvent == null) preload(); } catch (CLBuildException ex) { throw new RuntimeException(ex); } } private synchronized void readLastOutputData() {