丁云鹏 преди 5 месеца
родител
ревизия
106deaea3e

+ 22 - 9
recommend-model-jni/src/main/java/com/baidu/paddle/inference/Predictor.java

@@ -15,49 +15,60 @@ public class Predictor {
         outputNum = getOutputNum(cppPaddlePredictorPointer);
     }
 
+    public Predictor(Predictor predictor) {
+        cppPaddlePredictorPointer = clonePredictor(predictor.cppPaddlePredictorPointer);
+        inputNum = getInputNum(cppPaddlePredictorPointer);
+        outputNum = getOutputNum(cppPaddlePredictorPointer);
+    }
+
     @Override
     protected void finalize() throws Throwable {
         destroyNativePredictor();
     }
 
-    public static Predictor createPaddlePredictor(Config config){
+    public static Predictor createPaddlePredictor(Config config) {
         Predictor predictor = new Predictor(config);
         return predictor.cppPaddlePredictorPointer == 0L ? null : predictor;
     }
 
+    public static Predictor clonePaddlePredictor(Predictor predictor) {
+        Predictor predictorClone = new Predictor(predictor);
+        return predictorClone.cppPaddlePredictorPointer == 0L ? null : predictorClone;
+    }
+
     public void destroyNativePredictor() {
-        if(cppPaddlePredictorPointer != 0) cppPredictorDestroy(cppPaddlePredictorPointer);
+        if (cppPaddlePredictorPointer != 0) cppPredictorDestroy(cppPaddlePredictorPointer);
         cppPaddlePredictorPointer = 0;
     }
 
-    public String getInputNameById(long id){
+    public String getInputNameById(long id) {
         return getInputNameByIndex(this.cppPaddlePredictorPointer, id);
     }
 
-    public String getOutputNameById(long id){
+    public String getOutputNameById(long id) {
         return getOutputNameByIndex(this.cppPaddlePredictorPointer, id);
     }
 
-    public Tensor getInputHandle(String name){
+    public Tensor getInputHandle(String name) {
         long cppTensorPointer = getInputHandleByName(this.cppPaddlePredictorPointer, name);
         return cppTensorPointer == 0 ? null : new Tensor(cppTensorPointer);
     }
 
-    public Tensor getOutputHandle(String name){
+    public Tensor getOutputHandle(String name) {
         long cppTensorPointer = getOutputHandleByName(this.cppPaddlePredictorPointer, name);
         return cppTensorPointer == 0 ? null : new Tensor(cppTensorPointer);
     }
 
-    public void clearIntermediateTensor(){
+    public void clearIntermediateTensor() {
         predictorClearIntermediateTensor(this.cppPaddlePredictorPointer);
     }
 
-    public void tryShrinkMemory(){
+    public void tryShrinkMemory() {
         predictorTryShrinkMemory(this.cppPaddlePredictorPointer);
     }
 
 
-    public boolean run(){
+    public boolean run() {
         return runPD(this.cppPaddlePredictorPointer);
     }
 
@@ -81,6 +92,8 @@ public class Predictor {
 
     private native long createPredictor(long cppPaddleConfigPointer);
 
+    private native long clonePredictor(long cppPaddlePredictorPointer);
+
     private native long getInputNum(long cppPaddlePredictorPointer);
 
     private native long getOutputNum(long cppPaddlePredictorPointer);

+ 0 - 0
recommend-model-jni/src/test/resources/libpaddle_inference.dylib