Skip to content

Commit 8f78fe9

Browse files
committed
Inverse Burrows-Wheeler transform.
1 parent b76466a commit 8f78fe9

File tree

6 files changed

+857
-31
lines changed

6 files changed

+857
-31
lines changed

AUTHORS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
Leyuan Wang, Sean Baxter, John D. Owens, Yury Shukhrov,
88
Rory Mitchell, Jacopo Pantaleoni, Duane Merrill,
99
Georgy Evtushenko, Allison Vacanti, Robert Crovella,
10-
Mark Harris, Vitaly Osipov.
10+
Mark Harris, Vitaly Osipov, Andy Adinets, Elias Stehle,
11+
Michael Maniscalco.

CHANGES

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
Changes in 1.6.0 (January 24, 2024)
2+
- Inverse Burrows-Wheeler transform.
3+
14
Changes in 1.5.0 (March 24, 2023)
25
- Reduced memory usage and improved performance.
36

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# libcubwt
1+
# libcubwt
22

3-
The libcubwt is a library for fast (see [Benchmarks](#benchmarks) below) GPU-based Burrows-Wheeler transform construction on the CUDA platform using prefix doubling + Skew/DC3 approach as described in the following papers:
3+
The libcubwt is a library for fast (see [Benchmarks](#benchmarks) below) GPU-based Burrows-Wheeler transform construction and inversion on the CUDA platform using prefix doubling + Skew/DC3 approach as described in the following papers:
44
* Vitaly Osipov, *Parallel Suffix Array Construction for Shared Memory Architectures*, 2012
55
* Leyuan Wang, Sean Baxter, and John D. Owens *Fast Parallel Suffix Array on the GPU*, 2015
66
* Florian Büren, Daniel Jünger, Robin Kobus, Christian Hundt, Bertil Schmidt *Suffix Array Construction on Multi-GPU Systems*, 2019
77

8-
Copyright (c) 2022-2023 Ilya Grebnov <[email protected]>
8+
Copyright (c) 2022-2024 Ilya Grebnov <[email protected]>
99

1010
## Introduction
1111
The libcubwt provides simple API to construct Burrows-Wheeler transform from a given string over constant-size alphabet using 20.5n bytes of GPU memory.
@@ -20,6 +20,8 @@ The libcubwt provides simple API to construct Burrows-Wheeler transform from a g
2020
The libcubwt is released under the [Apache License Version 2.0](LICENSE "Apache license") and is considered suitable for production use. However, no warranty or fitness for a particular purpose is expressed or implied.
2121

2222
## Changes
23+
* January 24, 2024 (1.6.0)
24+
* Inverse Burrows-Wheeler transform.
2325
* March 24, 2023 (1.5.0)
2426
* Reduced memory usage and improved performance.
2527
* February 10, 2023 (1.0.0)
@@ -50,6 +52,18 @@ The libcubwt is released under the [Apache License Version 2.0](LICENSE "Apache
5052
* @return The primary index if no error occurred, libcubwt error code otherwise.
5153
*/
5254
int64_t libcubwt_bwt(void * device_storage, const uint8_t * T, uint8_t * L, int64_t n);
55+
56+
/**
57+
* Reconstructs the original string from a given burrows-wheeler transformed string (BWT) with primary index.
58+
* @param device_storage The previously allocated storage on the CUDA device.
59+
* @param T [0..n-1] The input string.
60+
* @param U [0..n-1] The output string (can be T).
61+
* @param n The length of the given string.
62+
* @param freq [0..255] The input symbol frequency table (can be NULL).
63+
* @param i The primary index.
64+
* @return LIBCUBWT_NO_ERROR if no error occurred, libcubwt error code otherwise.
65+
*/
66+
int64_t libcubwt_unbwt(void * device_storage, const uint8_t * T, uint8_t * U, int64_t n, const int32_t * freq, int32_t i);
5367
```
5468
5569
---

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.5.0
1+
1.6.0

0 commit comments

Comments
 (0)