ai.djl.engine.rust.RsEngine Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tokenizers Show documentation
Show all versions of tokenizers Show documentation
Deep Java Library (DJL) NLP utilities for Huggingface tokenizers
The newest version!
/*
* Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package ai.djl.engine.rust;
import ai.djl.Device;
import ai.djl.Model;
import ai.djl.engine.Engine;
import ai.djl.engine.EngineException;
import ai.djl.engine.StandardCapabilities;
import ai.djl.huggingface.tokenizers.jni.LibUtils;
import ai.djl.ndarray.NDManager;
/** The {@code RsEngine} is an implementation of the {@link Engine} rust engine. */
public final class RsEngine extends Engine {
public static final String ENGINE_NAME = "Rust";
static final int RANK = 4;
private RsEngine() {}
@SuppressWarnings("PMD.AvoidRethrowingException")
static Engine newInstance() {
try {
LibUtils.checkStatus();
return new RsEngine();
} catch (EngineException e) {
throw e;
} catch (Throwable t) {
throw new EngineException("Failed to load Rust native library", t);
}
}
/** {@inheritDoc} */
@Override
public Engine getAlternativeEngine() {
return null;
}
/** {@inheritDoc} */
@Override
public String getEngineName() {
return ENGINE_NAME;
}
/** {@inheritDoc} */
@Override
public int getRank() {
return RANK;
}
/** {@inheritDoc} */
@Override
public String getVersion() {
return Engine.getDjlVersion();
}
/** {@inheritDoc} */
@Override
public boolean hasCapability(String capability) {
if (StandardCapabilities.MKL.equals(capability)) {
return true;
} else if (StandardCapabilities.CUDA.equals(capability)) {
return RustLibrary.isCudaAvailable();
}
return false;
}
/** {@inheritDoc} */
@Override
public Model newModel(String name, Device device) {
return new RsModel(name, device);
}
/** {@inheritDoc} */
@Override
public NDManager newBaseManager() {
return RsNDManager.getSystemManager().newSubManager();
}
/** {@inheritDoc} */
@Override
public NDManager newBaseManager(Device device) {
return RsNDManager.getSystemManager().newSubManager(device);
}
/** {@inheritDoc} */
@Override
public String toString() {
StringBuilder sb = new StringBuilder(200);
sb.append(getEngineName()).append(':').append(getVersion()).append(", ");
sb.append(getEngineName())
.append(':')
.append(getVersion())
.append(", capabilities: [\n\t" + StandardCapabilities.MKL);
if (hasCapability(StandardCapabilities.CUDA)) {
sb.append(",\n\t").append(StandardCapabilities.CUDA); // NOPMD
}
sb.append(']');
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy