1
1

Merge pull request #740 from nrgraham23/environment_java_bindings

Java Environment Variable Bindings
Этот коммит содержится в:
Howard Pritchard 2015-07-24 09:04:50 -06:00
родитель 93f7a51275 a1b47a333a
Коммит 1631ad7d63
5 изменённых файлов: 126 добавлений и 0 удалений

Просмотреть файл

@ -31,6 +31,8 @@ typedef struct {
jmethodID CartParmsInit; jmethodID CartParmsInit;
jclass ShiftParmsClass; jclass ShiftParmsClass;
jmethodID ShiftParmsInit; jmethodID ShiftParmsInit;
jclass VersionClass;
jmethodID VersionInit;
jclass GraphParmsClass; jclass GraphParmsClass;
jmethodID GraphParmsInit; jmethodID GraphParmsInit;
jclass DistGraphNeighborsClass; jclass DistGraphNeighborsClass;

Просмотреть файл

@ -204,6 +204,7 @@ static void deleteClasses(JNIEnv *env)
{ {
(*env)->DeleteGlobalRef(env, ompi_java.CartParmsClass); (*env)->DeleteGlobalRef(env, ompi_java.CartParmsClass);
(*env)->DeleteGlobalRef(env, ompi_java.ShiftParmsClass); (*env)->DeleteGlobalRef(env, ompi_java.ShiftParmsClass);
(*env)->DeleteGlobalRef(env, ompi_java.VersionClass);
(*env)->DeleteGlobalRef(env, ompi_java.GraphParmsClass); (*env)->DeleteGlobalRef(env, ompi_java.GraphParmsClass);
(*env)->DeleteGlobalRef(env, ompi_java.DistGraphNeighborsClass); (*env)->DeleteGlobalRef(env, ompi_java.DistGraphNeighborsClass);
(*env)->DeleteGlobalRef(env, ompi_java.StatusClass); (*env)->DeleteGlobalRef(env, ompi_java.StatusClass);
@ -257,6 +258,12 @@ JNIEXPORT jobject JNICALL Java_mpi_MPI_newDoubleInt(JNIEnv *env, jclass clazz)
return (*env)->NewObject(env, c, m, iOff, sizeof(int)); return (*env)->NewObject(env, c, m, iOff, sizeof(int));
} }
JNIEXPORT void JNICALL Java_mpi_MPI_initVersion(JNIEnv *env, jclass jthis)
{
ompi_java.VersionClass = findClass(env, "mpi/Version");
ompi_java.VersionInit = (*env)->GetMethodID(env, ompi_java.VersionClass, "<init>", "(II)V");
}
JNIEXPORT jobjectArray JNICALL Java_mpi_MPI_Init_1jni( JNIEXPORT jobjectArray JNICALL Java_mpi_MPI_Init_1jni(
JNIEnv *env, jclass clazz, jobjectArray argv) JNIEnv *env, jclass clazz, jobjectArray argv)
{ {
@ -353,6 +360,26 @@ JNIEXPORT void JNICALL Java_mpi_MPI_Finalize_1jni(JNIEnv *env, jclass obj)
deleteClasses(env); deleteClasses(env);
} }
JNIEXPORT jobject JNICALL Java_mpi_MPI_getVersionJNI(JNIEnv *env, jclass jthis)
{
int version, subversion;
int rc = MPI_Get_version(&version, &subversion);
ompi_java_exceptionCheck(env, rc);
return (*env)->NewObject(env, ompi_java.VersionClass,
ompi_java.VersionInit, version, subversion);
}
JNIEXPORT jstring JNICALL Java_mpi_MPI_getLibVersionJNI(JNIEnv *env, jclass jthis)
{
int length;
char version[MPI_MAX_LIBRARY_VERSION_STRING];
int rc = MPI_Get_library_version(version, &length);
ompi_java_exceptionCheck(env, rc);
return (*env)->NewStringUTF(env, version);
}
JNIEXPORT jint JNICALL Java_mpi_MPI_getProcessorName( JNIEXPORT jint JNICALL Java_mpi_MPI_getProcessorName(
JNIEnv *env, jclass obj, jbyteArray buf) JNIEnv *env, jclass obj, jbyteArray buf)
{ {

Просмотреть файл

@ -394,6 +394,8 @@ static
ERR_WIN = c.ERR_WIN; ERR_WIN = c.ERR_WIN;
ERR_LASTCODE = c.ERR_LASTCODE; ERR_LASTCODE = c.ERR_LASTCODE;
ERR_SYSRESOURCE = c.ERR_SYSRESOURCE; ERR_SYSRESOURCE = c.ERR_SYSRESOURCE;
initVersion();
} }
private static native Int2 newInt2(); private static native Int2 newInt2();
@ -401,6 +403,7 @@ private static native ShortInt newShortInt();
private static native LongInt newLongInt(); private static native LongInt newLongInt();
private static native FloatInt newFloatInt(); private static native FloatInt newFloatInt();
private static native DoubleInt newDoubleInt(); private static native DoubleInt newDoubleInt();
private static native void initVersion();
private static void initCommon() throws MPIException private static void initCommon() throws MPIException
{ {
@ -538,6 +541,28 @@ public static double wtick() throws MPIException
private static native double wtick_jni(); private static native double wtick_jni();
/**
* Returns a version object representing the version of MPI being used.
* <p>Java binding of the MPI operation {@code MPI_GET_VERSION}.
* @return A version object representing the version and subversion of MPI being used.
*/
public static Version getVersion() {
return getVersionJNI();
}
private static native Version getVersionJNI();
/**
* Returns the version of the MPI Library
* <p>Java binding of the MPI operation {@code MPI_GET_LIBRARY_VERSION}.
* @return A string representation of the MPI Library
*/
public static String getLibVersion() {
return getLibVersionJNI();
}
private static native String getLibVersionJNI();
/** /**
* Returns the name of the processor on which it is called. * Returns the name of the processor on which it is called.
* <p>Java binding of the MPI operation {@code MPI_GET_PROCESSOR_NAME}. * <p>Java binding of the MPI operation {@code MPI_GET_PROCESSOR_NAME}.

Просмотреть файл

@ -1,6 +1,8 @@
# -*- makefile -*- # -*- makefile -*-
# #
# Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2015 Los Alamos National Security, LLC. All rights
# reserved.
# $COPYRIGHT$ # $COPYRIGHT$
# #
# Additional copyrights may follow # Additional copyrights may follow
@ -56,6 +58,7 @@ JAVA_SRC_FILES = \
Status.java \ Status.java \
Struct.java \ Struct.java \
UserFunction.java \ UserFunction.java \
Version.java \
Win.java Win.java
EXTRA_DIST = $(JAVA_SRC_FILES) EXTRA_DIST = $(JAVA_SRC_FILES)
@ -88,6 +91,7 @@ JAVA_H = \
mpi_Request.h \ mpi_Request.h \
mpi_ShiftParms.h \ mpi_ShiftParms.h \
mpi_Status.h \ mpi_Status.h \
mpi_Version.h \
mpi_Win.h mpi_Win.h
# A little verbosity magic; see Makefile.ompi-rules for an explanation. # A little verbosity magic; see Makefile.ompi-rules for an explanation.

68
ompi/mpi/java/java/Version.java Обычный файл
Просмотреть файл

@ -0,0 +1,68 @@
/*
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*
*
* This file is almost a complete re-write for Open MPI compared to the
* original mpiJava package. Its license and copyright are listed below.
* See <path to ompi/mpi/java/README> for more information.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License 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.
*
*
* File : Version.java
* Author : Nathaniel Graham
* Created : Thu Jul 23 09:25 2015
*/
package mpi;
/**
* Version and Subversion for MPI
*/
public final class Version
{
private final int version;
private final int subVersion;
protected Version(int version, int subVersion)
{
this.version = version;
this.subVersion = subVersion;
}
/**
* Gets the MPI version.
* @return MPI version
*/
public int getVersion()
{
return version;
}
/**
* Gets the MPI subversion.
* @return MPI subversion
*/
public int getSubVersion()
{
return subVersion;
}
} // Version