【问题标题】:How to determine at runtime if the dl4j/nd4j backend is CPU or GPU?如何在运行时确定 dl4j/nd4j 后端是 CPU 还是 GPU?
【发布时间】:2018-03-06 18:51:17
【问题描述】:

dl4j 有一个优化,它只适用于 GPU: DataTypeUtil.setDTypeForContext(DataBuffer.Type.HALF)

我只想在后端是 GPU 的情况下进行调用。

在我的 Maven pom.xml 中,我有

<!-- CPU or GPU -->
<nd4j.backend>nd4j-native-platform</nd4j.backend>
<!--<nd4j.backend>nd4j-cuda-8.0-platform</nd4j.backend>-->

我正在寻找从 Java 中读取该值的方法,所有这些方法看起来都很笨拙。如果我可以在 dl4j 或 nd4j 中查询“我们正在运行什么风格的后端?”,那会容易得多。然后在此基础上进行优化调用。

从答案编辑:

Nd4jBackend.load().let { be->
    println("nd4j Backend: ${be.javaClass.simpleName}")
    if(be.javaClass.simpleName.toLowerCase().contains("gpu")) {
        println("Optimizing for GPU")
        DataTypeUtil.setDTypeForContext(DataBuffer.Type.HALF)
    }
}

【问题讨论】:

    标签: kotlin dl4j nd4j


    【解决方案1】:

    看看你是否可以使用Nd4j.backend。在启用 cuda 的情况下打印我得到:

    org.nd4j.linalg.jcublas.JCublasBackend
    

    并且没有 cuda:

    org.nd4j.linalg.cpu.nativecpu.CpuBackend
    

    【讨论】:

      【解决方案2】:

      当您启动 nd4j 时,它也会在开头打印出来。它应该有一个为后端打印出来的供应商。

      【讨论】:

        猜你喜欢
        • 2021-11-20
        • 1970-01-01
        • 2017-09-02
        • 2017-09-29
        • 2011-07-17
        • 1970-01-01
        • 2017-12-17
        • 2020-07-18
        • 1970-01-01
        相关资源
        最近更新 更多