Skip to content
No description, website, or topics provided.
Branch: branch-0.8
Clone or download
Latest commit 83302ac May 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
ci FIX Always label libnvstrings with main May 16, 2019
conda update conda deps May 17, 2019
cpp updated nvtext.ngrams to call C++ method (#304) May 14, 2019
data first commit Jan 23, 2019
docs [REVIEW] DOC Update python docstrings to the numpydoc docstring style ( Apr 3, 2019
img fixing logo Mar 16, 2019
python updated nvtext.ngrams to call C++ method (#304) May 14, 2019
thirdparty updated nvtext.ngrams to call C++ method (#304) May 14, 2019
.gitignore [REVIEW] Added create_ngrams C++ method (#298) May 8, 2019
.gitmodules FIX Change RMM branch to branch-0.7 Mar 18, 2019
Dockerfile Update build instructions (#216) Apr 12, 2019
LICENSE Use conda split package Apr 16, 2019 [gpuCI] Auto-merge branch-0.4 to branch-0.8 [skip ci] (#297) May 8, 2019

 cuStrings - GPU String Manipulation

Build Status  Documentation Status

NOTE: For the latest stable ensure you are on the master branch.

Built with Pandas DataFrame's columnar string operations in mind, cuStrings is a GPU string manipulation library for splitting, applying regexes, concatenating, replacing tokens, etc in arrays of strings.

nvStrings (the Python bindings for cuStrings), provides a pandas-like API that will be familiar to data engineers & data scientists, so they can use it to easily accelerate their workflows without going into the details of CUDA programming.

For example, the following snippet loads a CSV, then uses the GPU to perform replacements typical in data-preparation tasks.

import nvstrings, nvcategory
import requests

content = requests.get(url).content.decode('utf-8')

#split content into a list, remove header
host_lines = content.strip().split('\n')[1:]

#copy strings to gpu
gpu_lines = nvstrings.to_device(host_lines)

#split into columns on gpu
gpu_columns = gpu_lines.split(',')
gpu_day_of_week = gpu_columns[4]

#use gpu `replace` to re-encode tokens on GPU
for idx, day in enumerate(['Sun', 'Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat']):
    gpu_day_of_week = gpu_day_of_week.replace(day, str(idx))

# or, use nvcategory's builtin GPU categorization
cat = nvcategory.from_strings(gpu_columns[4])

# copy category keys to host and print

# copy "cleaned" strings to host and print


['Fri', 'Sat', 'Sun', 'Thur']

# many entries omitted for brevity
['0', '0', '0', ..., '6', '6', '4']

cuStrings is a standalone library with no other dependencies. Other RAPIDS projects (like cuDF) depend on cuStrings and its nvStrings Python bindings.

For more examples, see Python API documentation, and cuStrings CUDA/C++ API.

Quick Start

Please see the Demo Docker Repository, choosing a tag based on the NVIDIA CUDA version you’re running. This provides a ready to run Docker container with example notebooks and data, showcasing how you can utilize cuStrings.



cuStrings can be installed with conda (miniconda, or the full Anaconda distribution) from the rapidsai channel:

# for CUDA 9.2
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
    nvstrings=0.7 python=3.6 cudatoolkit=9.2

# or, for CUDA 10.0
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
    nvstrings=0.7 python=3.6 cudatoolkit=10.0

We also provide nightly conda packages built from the tip of our latest development branch.

Note: cuStrings is supported only on Linux, and with Python versions 3.6 or 3.7.

See the Get RAPIDS version picker for more OS and version info.

Build/Install from Source

See build instructions.


Please see our guide for contributing to cuStrings.


Find out more details on the RAPIDS site

Open GPU Data Science

The RAPIDS suite of open source software libraries aim to enable execution of end-to-end data science and analytics pipelines entirely on GPUs. It relies on NVIDIA® CUDA® primitives for low-level compute optimization, but exposing that GPU parallelism and high-bandwidth memory speed through user-friendly Python interfaces.

You can’t perform that action at this time.