diff --git a/.gitignore b/.gitignore index 4f59ce5..e09ae92 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,21 @@ /input3/ /PngSuite-2017jul19.zip /input/ +/hs_err_pid22004.log +/hs_err_pid22004.mdmp +/hs_err_pid24748.log +/hs_err_pid24748.mdmp +/hs_err_pid31056.log +/hs_err_pid31056.mdmp +/hs_err_pid31060.log +/hs_err_pid31060.mdmp +/hs_err_pid33172.log +/hs_err_pid33172.mdmp +/hs_err_pid33180.log +/hs_err_pid33180.mdmp +/hs_err_pid33300.log +/hs_err_pid33300.mdmp +/hs_err_pid33776.log +/hs_err_pid33776.mdmp +/hs_err_pid5920.log +/hs_err_pid5920.mdmp diff --git a/lib/JavaOpenCL64.jar b/lib/JavaOpenCL64.jar index 08f769f..51c82f3 100644 Binary files a/lib/JavaOpenCL64.jar and b/lib/JavaOpenCL64.jar differ diff --git a/src/org/kne/codec/kif/KIFCodec.java b/src/org/kne/codec/kif/KIFCodec.java index 0b5ff0a..eed5fb5 100644 --- a/src/org/kne/codec/kif/KIFCodec.java +++ b/src/org/kne/codec/kif/KIFCodec.java @@ -66,7 +66,7 @@ public class KIFCodec { CompletableFuturef2=f1.thenApplyAsync((pipeline)->{ return pipeline.encodeStage2(); },cpupool);*/ - return getBestPool().submit(()->{ + return gpupool.submit(()->{ KIFEncodePipeline kip=new KIFEncodePipeline(input.get(), mode); kip.encodeStage1(); return kip.encodeStage2(); @@ -122,7 +122,7 @@ public class KIFCodec { throw new RuntimeException(e); } },gpupool);*/ - return getBestPool().submit(()->{ + return gpupool.submit(()->{ KIFDecodePipeline kip=new KIFDecodePipeline(input.get()); try { kip.decodeStage1(); diff --git a/src/org/kne/codec/kif/KIFDecodePipeline.java b/src/org/kne/codec/kif/KIFDecodePipeline.java index 2a4a89e..59220c0 100644 --- a/src/org/kne/codec/kif/KIFDecodePipeline.java +++ b/src/org/kne/codec/kif/KIFDecodePipeline.java @@ -53,9 +53,6 @@ public class KIFDecodePipeline { return decodeStage2CPU(); } } - private static ThreadLocalm1=ThreadLocal.withInitial(()->{ - return ((ArenaImpl)Arena.ofAuto()).allocateNoInit(1024*1024*4,4); - }); private static ThreadLocalOpenCLMemory tlm0=new ThreadLocalOpenCLMemory(1024*1024*4); private static ThreadLocalOpenCLMemory tlm1=new ThreadLocalOpenCLMemory(1024*1024*4); @@ -69,13 +66,10 @@ public class KIFDecodePipeline { OpenCLMemory ocm2 = null; OpenCLMemory ocm3 = null; int[]des; - MemorySegment dataserpseg= m1.get(); - tdb.mark("堆外内存分配"); - dataserpseg.asByteBuffer().put(dataserp).flip(); - tdb.mark("堆内存->堆外内存"); - ocm1=tlm0.get(oct.getOpenCLContext()); - tdb.mark("分配显存"); - oct.getOpenCLCommandQueue().executeWriteBuffer(ocm1, dataserpseg, false,0,0,dataserp.length); + + ocm1=tlm0.get(oct.getOpenCLContext()); + tdb.mark("分配显存"); + oct.getOpenCLCommandQueue().executeWriteBuffer(ocm1, MemorySegment.ofArray(dataserp), true,0,0,dataserp.length); tdb.mark("内存->显存"); OpenCLMemory dataser; diff --git a/src/org/kne/codec/kif/KIFEncodePipeline.java b/src/org/kne/codec/kif/KIFEncodePipeline.java index c1a4023..96f9621 100644 --- a/src/org/kne/codec/kif/KIFEncodePipeline.java +++ b/src/org/kne/codec/kif/KIFEncodePipeline.java @@ -80,10 +80,6 @@ public class KIFEncodePipeline { } - private static ThreadLocalm1=ThreadLocal.withInitial(()->{ - return ((ArenaImpl)Arena.ofAuto()).allocateNoInit(1024*1024*4,4); - }); - private static ThreadLocalOpenCLMemory tlm0=new ThreadLocalOpenCLMemory(1024*1024*4); private static ThreadLocalOpenCLMemory tlmpred1=new ThreadLocalOpenCLMemory(1024*1024*4); private static ThreadLocalOpenCLMemory tlmpred2=new ThreadLocalOpenCLMemory(1024*1024*4); @@ -96,7 +92,6 @@ public class KIFEncodePipeline { OpenCLMemory ocm1 = null; OpenCLMemory ocm2 = null; OpenCLMemory ocm3 = null; - MemorySegment dataserpseg= m1.get(); tdb.mark("堆外内存分配"); //MemorySegment.copy(pixels,0,dataserpseg,0, pixels.byteSize()); tdb.mark("堆内存->堆外内存"); @@ -170,10 +165,8 @@ public class KIFEncodePipeline { serialData2=MembandBoost.allocateUninitializedByteArray(width*height*4); tdb.mark("分配堆内存"); - oct.getOpenCLCommandQueue().executeReadBuffer(dataser, dataserpseg, true,0,0,width*height*4); + oct.getOpenCLCommandQueue().executeReadBuffer(dataser, MemorySegment.ofArray(serialData2), true,0,0,width*height*4); tdb.mark("显存->内存"); - MemorySegment.copy(dataserpseg, ValueLayout.JAVA_BYTE, 0, serialData2, 0,width*height*4); - tdb.mark("堆外内存->堆内存"); } public KIFCompressedImageBlock encodeStage2() {