Skip to content
Merged
30 changes: 30 additions & 0 deletions c/include/cuvs/core/c_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include <cuda_runtime.h>
#include <dlpack/dlpack.h>
#include <rapids_logger/log_levels.h>
#include <stdbool.h>
#include <stdint.h>

Expand Down Expand Up @@ -48,6 +49,35 @@ void cuvsSetLastErrorText(const char* error);

/** @} */

/**
* @defgroup log_c cuVS Logging
* @{
*/

/**
* @brief An enum denoting log levels
*
*/
typedef enum {
CUVS_LOG_LEVEL_TRACE = RAPIDS_LOGGER_LOG_LEVEL_TRACE,
CUVS_LOG_LEVEL_DEBUG = RAPIDS_LOGGER_LOG_LEVEL_DEBUG,
CUVS_LOG_LEVEL_INFO = RAPIDS_LOGGER_LOG_LEVEL_INFO,
CUVS_LOG_LEVEL_WARN = RAPIDS_LOGGER_LOG_LEVEL_WARN,
CUVS_LOG_LEVEL_ERROR = RAPIDS_LOGGER_LOG_LEVEL_ERROR,
CUVS_LOG_LEVEL_CRITICAL = RAPIDS_LOGGER_LOG_LEVEL_CRITICAL,
CUVS_LOG_LEVEL_OFF = RAPIDS_LOGGER_LOG_LEVEL_OFF
} cuvsLogLevel_t;

/** @brief Returns the current log level
*/
cuvsLogLevel_t cuvsGetLogLevel();

/** @brief Sets the log level
*/
void cuvsSetLogLevel(cuvsLogLevel_t);

/** @} */

/**
* @defgroup resources_c cuVS Resources Handle
* @{
Expand Down
11 changes: 11 additions & 0 deletions c/src/core/c_api.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <raft/core/resource/resource_types.hpp>
#include <raft/core/resources.hpp>
#include <raft/util/cudart_utils.hpp>
#include <rapids_logger/logger.hpp>
#include <rmm/cuda_stream_view.hpp>
#include <rmm/mr/device/device_memory_resource.hpp>
#include <rmm/mr/device/managed_memory_resource.hpp>
Expand Down Expand Up @@ -213,6 +214,16 @@ extern "C" const char* cuvsGetLastErrorText()
return last_error_text.empty() ? NULL : last_error_text.c_str();
}

extern "C" void cuvsSetLogLevel(cuvsLogLevel_t verbosity)
{
raft::default_logger().set_level(static_cast<rapids_logger::level_enum>(verbosity));
}

extern "C" cuvsLogLevel_t cuvsGetLogLevel()
{
return static_cast<cuvsLogLevel_t>(raft::default_logger().level());
}

extern "C" void cuvsSetLastErrorText(const char* error) { last_error_text = error ? error : ""; }

extern "C" cuvsError_t cuvsVersionGet(uint16_t* major, uint16_t* minor, uint16_t* patch)
Expand Down
8 changes: 8 additions & 0 deletions docs/source/c_api/core_c_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,11 @@ Error Handling
:project: cuvs
:members:
:content-only:

Logging
-------

.. doxygengroup:: log_c
:project: cuvs
:members:
:content-only:
15 changes: 13 additions & 2 deletions java/panama-bindings/generate-bindings.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,33 @@ else
exit 1
fi

if [ -n "${RAPIDS_LOGGER_INCLUDE_DIR:-}" ]; then
echo "Using user-defined RAPIDS_LOGGER_INCLUDE_DIR"
elif [ -n "${CONDA_PREFIX:-}" ]; then
RAPIDS_LOGGER_INCLUDE_DIR="${CONDA_PREFIX}/include"
else
echo "Couldn't find a suitable CUDA include directory."
exit 1
fi

PATH="$(pwd)/jextract-22/bin/:${PATH}"
export PATH

if [[ $(command -v jextract) == "" ]];
then
JEXTRACT_FILENAME="openjdk-22-jextract+6-47_linux-x64_bin.tar.gz"
JEXTRACT_DOWNLOAD_URL="https://download.java.net/java/early_access/jextract/22/6/${JEXTRACT_FILENAME}"
echo "jextract doesn't exist. Downloading it from $JEXTRACT_DOWNLOAD_URL.";
wget -c $JEXTRACT_DOWNLOAD_URL
tar -xvf ./"${JEXTRACT_FILENAME}"
PATH="$(pwd)/jextract-22/bin/:${PATH}"
export PATH
echo "jextract downloaded to $(pwd)/jextract-22"
fi

# Use Jextract utility to generate panama bindings
jextract \
--include-dir "${REPODIR}"/java/internal/build/bindings/include/ \
--include-dir "${CUDA_INCLUDE_DIR}" \
--include-dir "${RAPIDS_LOGGER_INCLUDE_DIR}" \
--output "${REPODIR}/java/cuvs-java/src/main/java22/" \
--target-package ${TARGET_PACKAGE} \
--library cuvs_c \
Expand Down