{"id":5614,"date":"2018-01-04T02:09:21","date_gmt":"2018-01-04T02:09:21","guid":{"rendered":"http:\/\/www.garysieling.com\/blog\/?p=5614"},"modified":"2018-01-04T02:09:21","modified_gmt":"2018-01-04T02:09:21","slug":"fixing-error-jcuda-nd4j-nd4s-interact","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/fixing-error-jcuda-nd4j-nd4s-interact\/","title":{"rendered":"Fixing error where jCuda and ND4j\/Nd4s interact"},"content":{"rendered":"<p>If you use jCuda and Nd4s at the same time, you can get an exception (I&#8217;m doing this to get memory information, while nd4s is doing the work)<\/p>\n<pre>\n[error] Exception in thread \"main\" org.nd4j.linalg.exception.ND4JException: CUDA exception happened. Terminating. Last op: [null]\n[error]         at org.nd4j.jita.allocator.pointers.cuda.cudaEvent_t.register(cudaEvent_t.java:63)\n[error]         at org.nd4j.jita.flow.impl.SynchronousFlowController.registerAction(SynchronousFlowController.java:215)\n[error]         at org.nd4j.jita.handler.impl.CudaZeroHandler.memcpyAsync(CudaZeroHandler.java:585)\n[error]         at org.nd4j.jita.allocator.impl.AtomicAllocator.memcpyAsync(AtomicAllocator.java:920)\n[error]         at org.nd4j.linalg.jcublas.buffer.BaseCudaDataBuffer.set(BaseCudaDataBuffer.java:457)\n[error]         at org.nd4j.linalg.jcublas.buffer.BaseCudaDataBuffer.setData(BaseCudaDataBuffer.java:581)\n[error]         at org.nd4j.linalg.jcublas.buffer.CudaIntDataBuffer.<init>(CudaIntDataBuffer.java:82)\n[error]         at org.nd4j.linalg.jcublas.buffer.factory.CudaDataBufferFactory.createInt(CudaDataBufferFactory.java:356)\n[error]         at org.nd4j.linalg.factory.Nd4j.createBufferDetached(Nd4j.java:1430)\n[error]         at org.nd4j.linalg.api.shape.Shape.createShapeInformation(Shape.java:2045)\n[error]         at org.nd4j.linalg.api.ndarray.BaseShapeInfoProvider.createShapeInformation(BaseShapeInfoProvider.java:47)\n[error]         at org.nd4j.jita.constant.ProtectedCudaShapeInfoProvider.createShapeInformation(ProtectedCudaShapeInfoProvider.java:64)\n[error]         at org.nd4j.linalg.jcublas.CachedShapeInfoProvider.createShapeInformation(CachedShapeInfoProvider.java:26)\n[error]         at org.nd4j.linalg.api.ndarray.BaseNDArray.<init>(BaseNDArray.java:163)\n[error]         at org.nd4j.linalg.jcublas.JCublasNDArray.<init>(JCublasNDArray.java:335)\n[error]         at org.nd4j.linalg.jcublas.JCublasNDArrayFactory.create(JCublasNDArrayFactory.java:257)\n[error]         at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:4231)\n[error]         at org.nd4j.linalg.api.shape.Shape.newShapeNoCopy(Shape.java:1230)\n[error]         at org.nd4j.linalg.api.ndarray.BaseNDArray.reshape(BaseNDArray.java:3741)\n[error]         at org.nd4j.linalg.api.ndarray.BaseNDArray.reshape(BaseNDArray.java:3796)\n[error]         at org.nd4j.linalg.api.ndarray.BaseNDArray.reshape(BaseNDArray.java:4100)\n[error]         at indexer.GpuConcepts$$anonfun$score$1.apply(GpuConcepts.scala:260)\n[error]         at indexer.GpuConcepts$$anonfun$score$1.apply(GpuConcepts.scala:259)\n[error]         at indexer.GpuConcepts$.time(GpuConcepts.scala:42)\n[error]         at indexer.GpuConcepts$.score(GpuConcepts.scala:258)\n[error]         at indexer.GpuConcepts$$anonfun$exec$1$$anonfun$apply$20$$anonfun$apply$21.apply(GpuConcepts.scala:222)\n[error]         at indexer.GpuConcepts$$anonfun$exec$1$$anonfun$apply$20$$anonfun$apply$21.apply(GpuConcepts.scala:222)\n[error]         at scala.collection.immutable.List.map(List.scala:284)\n[error]         at indexer.GpuConcepts$$anonfun$exec$1$$anonfun$apply$20.apply(GpuConcepts.scala:221)\n[error]         at indexer.GpuConcepts$$anonfun$exec$1$$anonfun$apply$20.apply(GpuConcepts.scala:221)\n[error]         at scala.util.Try$.apply(Try.scala:192)\n[error]         at indexer.GpuConcepts$$anonfun$exec$1.apply(GpuConcepts.scala:220)\n[error]         at indexer.GpuConcepts$$anonfun$exec$1.apply(GpuConcepts.scala:224)\n[error]         at indexer.GpuConcepts$.time(GpuConcepts.scala:42)\n[error]         at indexer.GpuConcepts$.exec(GpuConcepts.scala:218)\n[error]         at indexer.GpuConcepts$$anonfun$main$1.apply$mcV$sp(GpuConcepts.scala:103)\n[error]         at indexer.GpuConcepts$$anonfun$main$1.apply(GpuConcepts.scala:103)\n[error]         at indexer.GpuConcepts$$anonfun$main$1.apply(GpuConcepts.scala:103)\n[error]         at indexer.GpuConcepts$.time(GpuConcepts.scala:42)\n[error]         at indexer.GpuConcepts$.main(GpuConcepts.scala:103)\n[error]         at indexer.GpuConcepts.main(GpuConcepts.scala)\n[error] CUDA error at D:\/jenkins\/workspace\/dl4j\/all-multiplatform_windows-x86_64\/libnd4j\/stream3\/libnd4j\/blas\/cuda\/NativeOps.cu:4866 code=33(cudaErrorInvalidResourceHandle) \"result\"\n[error] CUDA error at D:\/jenkins\/workspace\/dl4j\/all-multiplatform_windows-x86_64\/libnd4j\/stream3\/libnd4j\/blas\/cuda\/NativeOps.cu:4749 code=33(cudaErrorInvalidResourceHandle) \"result\"\njava.lang.RuntimeException: Nonzero exit code returned from runner: 1\n        at scala.sys.package$.error(package.scala:27)\n[trace] Stack trace suppressed: run last compile:run for the full output.\n[error] (compile:run) Nonzero exit code returned from runner: 1\n[error] Total time: 51 s, completed Jan 3, 2018 9:02:54 PM \n<\/pre>\n<p>The issue is that you need to close the context you created:<\/p>\n<pre lang=\"java\">\ncuCtxDestroy(context)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Fixing a jCuda\/Nd4j error<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[9],"tags":[131,300,480],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/5614"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=5614"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/5614\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=5614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=5614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=5614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}