Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
238 commits
Select commit Hold shift + click to select a range
8ac6544
fix memcpy for new gcc
Feb 14, 2025
373881c
Adjust timing strategies and add throughput calculations
Feb 24, 2025
d3eb815
Add batched BP encoder interface
Feb 28, 2025
87595fe
fix huffman for mdr
JieyangChen7 Mar 1, 2025
f4eb435
Make pitched/mamaned template variables for Array/SubArray
JieyangChen7 Mar 4, 2025
f0fd447
add BPEncoderOptV1 and modify MDR-X lossless interface
JieyangChen7 Mar 12, 2025
ef18815
optimized huffman deflate for MDR and MDR low-level pipeline performa…
JieyangChen7 Mar 13, 2025
829d432
fix decompression CR output
JieyangChen7 Mar 14, 2025
d58103b
Add nagabinary to BPEncoderOptV1
JieyangChen7 Mar 15, 2025
892aa94
Add run length encoding
JieyangChen7 Mar 18, 2025
dcaf385
add time profile for MDR lossless
JieyangChen7 Mar 20, 2025
8e67618
Add hybrid compressor for MDR
JieyangChen7 Mar 21, 2025
3ca57c8
remove reduce memory footprint option (default on now) and add hybrid…
JieyangChen7 Mar 22, 2025
a96c5a5
Fix compiling serial issue with clang
Mar 27, 2025
ab27747
Fix minor issues with MDR on HIP
Mar 27, 2025
fb3f723
Add adaptive lossless for MDR
Mar 27, 2025
9f288b2
Adjust allocation and output estimazation for MDR refactoring
Mar 27, 2025
20f2c71
Adjust allocation and output estimazation for MDR reconstruct
Mar 27, 2025
c9c3de1
Fix domain decomposition for MDR
Mar 27, 2025
79bac72
add QOI pipeline
Mar 28, 2025
8a4c8cf
fix lossless signature verify segfault
JieyangChen7 Mar 28, 2025
a950c17
clang format
JieyangChen7 Mar 28, 2025
01b1e47
Add mdr-qoi.cpp
JieyangChen7 Mar 28, 2025
9260e42
Move BP encoder sign reset inside kernel
JieyangChen7 Mar 29, 2025
7106240
Add experimental BP encoders
JieyangChen7 Mar 29, 2025
6c504fc
making sure all merged bp batches are used & remove sign from mdrdata…
JieyangChen7 Mar 30, 2025
d13f38e
Update BPEncoder interface data type
JieyangChen7 Apr 4, 2025
cfc4ec0
fixing async execution: level interleaver, lossless verify, reconstru…
JieyangChen7 Apr 5, 2025
5099d92
Add Array::hostAlloc
JieyangChen7 Apr 5, 2025
3becdef
replace exp with absmax
JieyangChen7 Apr 5, 2025
bf4dda5
Decouple stages in refactor and reconstructor & adjust reconstruct pi…
JieyangChen7 Apr 5, 2025
c97f729
Fix pipeline for recon qoi
JieyangChen7 Apr 5, 2025
672e324
update auto tuner for hip
JieyangChen7 Apr 5, 2025
452c90b
round BP encoder input to be multiply of BATCH_SIZE
JieyangChen7 Apr 6, 2025
b494893
optimized v1b bpencoder::decode
JieyangChen7 Apr 6, 2025
1e6417b
done v1b bp encoder
JieyangChen7 Apr 6, 2025
3256be2
roughly done v2a bp encoder
JieyangChen7 Apr 9, 2025
820dd7b
add absmin
JieyangChen7 Apr 10, 2025
83d5a20
improve MDR compile speed
JieyangChen7 Apr 12, 2025
bb451dc
fix bp encoder v2a for hip
Apr 12, 2025
c5c6105
fix block size of v2a to 32 threads
Apr 12, 2025
481572f
keep bp v2a block size to 32
JieyangChen7 Apr 12, 2025
0502e81
Add missing header in hip
Apr 13, 2025
20b667e
Merge cr estimation in Huffman and RLE
JieyangChen7 Apr 13, 2025
13583ce
fix bp encoding for double precision
JieyangChen7 Apr 13, 2025
8c4142b
add log csv & fix RLE decode
JieyangChen7 Apr 14, 2025
f768a2d
prep for pipeline testing
JieyangChen7 Apr 14, 2025
93581b2
clean code after experiments
JieyangChen7 Apr 17, 2025
0ac5b6e
Move LevelLinearizer
JieyangChen7 Apr 19, 2025
79c6e1f
decouple quantize with huffman
JieyangChen7 Apr 19, 2025
2f0a6f6
Finished recompose
MasterVChicken May 28, 2025
dab7cc5
Bug unsolved for additional allocated outliers
MasterVChicken May 30, 2025
40556d8
Add try for HybridQuantization and failed to bound L-INF error
MasterVChicken Jun 15, 2025
fe4b3db
Remove global operation for HybridDataRefactor
MasterVChicken Jun 29, 2025
c1e1c95
Temporary save
MasterVChicken Jul 9, 2025
04a1d42
temp stage
MasterVChicken Jul 14, 2025
257d7ad
temp stage
MasterVChicken Jul 22, 2025
fb9c4fd
Configured to run, but failed to bound tolerance
MasterVChicken Aug 9, 2025
606471a
fix refactoring bug
MasterVChicken Aug 12, 2025
741a2ab
Auxiliary save for hybrid testing
MasterVChicken Aug 12, 2025
48f04f5
Lossless integrated but padding issue not solved
MasterVChicken Aug 17, 2025
bccd34a
Fix InCacheBLock refactoring bug
MasterVChicken Dec 9, 2025
ba65c06
Quantization for InCache Block Design
MasterVChicken Dec 9, 2025
e36ada3
Finish lossless integration
MasterVChicken Dec 11, 2025
465c81b
Finish hybrid hierarchy refactor(not tested yet)
MasterVChicken Dec 31, 2025
6aa52a6
Add gloabl refactoring parameter
MasterVChicken Jan 2, 2026
020f720
Runable but with bugs
MasterVChicken Jan 5, 2026
e6eb070
Temp save for global decomposition bugs
MasterVChicken Jan 9, 2026
764e223
Fix hybrid bug
MasterVChicken Jan 11, 2026
5c65ad3
Replace with new error allocation strategy. May cause bugs of over-co…
MasterVChicken Jan 15, 2026
f90fada
Fix over-conservative
MasterVChicken Jan 16, 2026
61d3f93
Add logic for ROI. API adjustment needed to fully support
MasterVChicken Jan 19, 2026
fc01b88
Add support for QOI but fail to lossless compress
MasterVChicken Jan 28, 2026
fd31226
Add verification module for ROI
MasterVChicken Jan 28, 2026
8cf4495
Fix switch issue
MasterVChicken Mar 19, 2026
c3f3bb3
Update for AD
MasterVChicken Apr 20, 2026
103f958
fix memcpy for new gcc
Feb 14, 2025
6115f39
Adjust timing strategies and add throughput calculations
Feb 24, 2025
801b221
Add batched BP encoder interface
Feb 28, 2025
e5fa286
fix huffman for mdr
JieyangChen7 Mar 1, 2025
4cf5926
Make pitched/mamaned template variables for Array/SubArray
JieyangChen7 Mar 4, 2025
a87fded
add BPEncoderOptV1 and modify MDR-X lossless interface
JieyangChen7 Mar 12, 2025
5aff842
optimized huffman deflate for MDR and MDR low-level pipeline performa…
JieyangChen7 Mar 13, 2025
5ba4c57
fix decompression CR output
JieyangChen7 Mar 14, 2025
5dc3b2e
Add nagabinary to BPEncoderOptV1
JieyangChen7 Mar 15, 2025
fd143a0
Add run length encoding
JieyangChen7 Mar 18, 2025
bf3c2d6
add time profile for MDR lossless
JieyangChen7 Mar 20, 2025
f1fb832
Add hybrid compressor for MDR
JieyangChen7 Mar 21, 2025
4b6dfb1
remove reduce memory footprint option (default on now) and add hybrid…
JieyangChen7 Mar 22, 2025
775c239
Fix compiling serial issue with clang
Mar 27, 2025
3e55c03
Fix minor issues with MDR on HIP
Mar 27, 2025
7ff38ce
Add adaptive lossless for MDR
Mar 27, 2025
722686b
Adjust allocation and output estimazation for MDR refactoring
Mar 27, 2025
0f3d7a9
Adjust allocation and output estimazation for MDR reconstruct
Mar 27, 2025
10a9de5
Fix domain decomposition for MDR
Mar 27, 2025
5971e60
add QOI pipeline
Mar 28, 2025
466bc12
fix lossless signature verify segfault
JieyangChen7 Mar 28, 2025
b375598
clang format
JieyangChen7 Mar 28, 2025
a7bdf49
Add mdr-qoi.cpp
JieyangChen7 Mar 28, 2025
245ecab
Move BP encoder sign reset inside kernel
JieyangChen7 Mar 29, 2025
2a19f45
Add experimental BP encoders
JieyangChen7 Mar 29, 2025
7e16d63
making sure all merged bp batches are used & remove sign from mdrdata…
JieyangChen7 Mar 30, 2025
b32d9fe
Update BPEncoder interface data type
JieyangChen7 Apr 4, 2025
c8e0bdd
fixing async execution: level interleaver, lossless verify, reconstru…
JieyangChen7 Apr 5, 2025
bc24199
Add Array::hostAlloc
JieyangChen7 Apr 5, 2025
5f977d2
replace exp with absmax
JieyangChen7 Apr 5, 2025
f0e8482
Decouple stages in refactor and reconstructor & adjust reconstruct pi…
JieyangChen7 Apr 5, 2025
d2747f5
Fix pipeline for recon qoi
JieyangChen7 Apr 5, 2025
c54f5e2
update auto tuner for hip
JieyangChen7 Apr 5, 2025
93402e8
round BP encoder input to be multiply of BATCH_SIZE
JieyangChen7 Apr 6, 2025
87ac9d0
optimized v1b bpencoder::decode
JieyangChen7 Apr 6, 2025
5300b3e
done v1b bp encoder
JieyangChen7 Apr 6, 2025
7e5007a
roughly done v2a bp encoder
JieyangChen7 Apr 9, 2025
903fd7e
add absmin
JieyangChen7 Apr 10, 2025
ca1e518
improve MDR compile speed
JieyangChen7 Apr 12, 2025
9c72112
fix bp encoder v2a for hip
Apr 12, 2025
982d2ce
fix block size of v2a to 32 threads
Apr 12, 2025
4f40578
keep bp v2a block size to 32
JieyangChen7 Apr 12, 2025
6fd56b3
Add missing header in hip
Apr 13, 2025
0901e63
Merge cr estimation in Huffman and RLE
JieyangChen7 Apr 13, 2025
cc0d124
fix bp encoding for double precision
JieyangChen7 Apr 13, 2025
0e6184f
add log csv & fix RLE decode
JieyangChen7 Apr 14, 2025
7ada35c
prep for pipeline testing
JieyangChen7 Apr 14, 2025
c8bb2f8
clean code after experiments
JieyangChen7 Apr 17, 2025
0732f53
Move LevelLinearizer
JieyangChen7 Apr 19, 2025
09a88de
decouple quantize with huffman
JieyangChen7 Apr 19, 2025
b679d16
Replacing exit function call with C++ error throws
JieyangChen7 Jun 16, 2025
6cf91dd
Adjust space and vol calculation for uniform data
JieyangChen7 Jul 26, 2025
728ab65
clang format
JieyangChen7 Jul 26, 2025
1fe69cf
Uncompleted QoI
Mar 30, 2025
97f7e5f
Pipelined QoI controlled reconstruction
Mar 31, 2025
5612391
For parallel
Linus-Li-1037 Apr 2, 2025
851a97f
Portable QoI pipeline
Linus-Li-1037 Apr 4, 2025
a19dab5
remove hard-code dimension settings
Linus-Li-1037 Apr 5, 2025
8b30032
rebased onto mgard-x
JieyangChen7 Apr 5, 2025
ff0d6a5
fix pipeline for qoi
JieyangChen7 Apr 5, 2025
d9aa14f
hip optimize
Linus-Li-1037 Apr 5, 2025
27a089b
eb guided reconstruction
Linus-Li-1037 Apr 6, 2025
debe45d
parallel eb guided reconstruction
Linus-Li-1037 Apr 6, 2025
4acc56f
True Protable Dimention settings
Linus-Li-1037 Apr 10, 2025
dc1e453
fix bitrate measurement
Linus-Li-1037 Apr 10, 2025
591e63c
Options for decrease method & Parallel
Linus-Li-1037 Apr 11, 2025
27ed33b
Hybrid Decrease
Linus-Li-1037 Apr 11, 2025
b9090e3
Hybrid Decrease 2
Linus-Li-1037 Apr 11, 2025
64521ca
Hybrid Decrease 3: fix bitrate measurement
Linus-Li-1037 Apr 12, 2025
df3c1c5
Hybrid Decrease 4
Linus-Li-1037 Apr 12, 2025
4b46f7c
CP, MA, MAPE
Apr 25, 2025
312eb34
Throughput computation correction
Linus-Li-1037 Apr 27, 2025
27e26f6
Add run scripts
JieyangChen7 Apr 28, 2025
07f1f62
revise for AE
JieyangChen7 Jul 14, 2025
6966ac1
Update QoI_NYX.sh
JieyangChen7 Jul 14, 2025
d4bac51
HybridLosslessCompressor hyperparameter correction
MasterVChicken Jul 31, 2025
9b8b0e8
Update QoI_JHTDB.sh
Linus-Li-1037 Aug 6, 2025
2fe6461
QoI retrieval IO time
Aug 6, 2025
6b8eea5
Update QoI_JHTDB.sh
Linus-Li-1037 Aug 6, 2025
097921c
Remove dummy files write/read for MDR-X
JieyangChen7 Aug 15, 2025
c1fbf89
update run script
Linus-Li-1037 Aug 24, 2025
75783f0
update build script to diable CPU backend when GPU is available
JieyangChen7 Aug 24, 2025
0bac892
fix MDR-X lossless baseline tests
JieyangChen7 Aug 24, 2025
8ca0085
fix BP error after rebase
JieyangChen7 Aug 27, 2025
a1998d4
Remove testing scripts
JieyangChen7 Aug 27, 2025
9597370
fix GreedyBasedSizeInterpreter that causes more bitplanes than necess…
JieyangChen7 Jun 18, 2026
9f4daee
tmake tests discoverable by CTest. Also, fixing code format
JieyangChen7 Jun 18, 2026
8b3902f
Restructured original mgard sourse code by putting it under mgard dir
JieyangChen7 Jun 19, 2026
d010ac7
restructed unit tests
JieyangChen7 Jun 19, 2026
d01f727
add test prefix for original mgard unit tests
JieyangChen7 Jun 19, 2026
dcc1949
add unit tests for mgard-x & fix verify_signature array in Huffman
JieyangChen7 Jun 20, 2026
b7aab13
mgard-x: expose orthogonal_projection on low-level (Hybrid)Compressor
JieyangChen7 Jun 24, 2026
7e8b351
mgard-x/huffman: optimize compress & decompress pipeline (~1.9x compr…
JieyangChen7 Jun 24, 2026
2e995d7
mgard-x: add BlockDelta lossless backend (cuSZp-style FLE) as a Huffm…
JieyangChen7 Jun 24, 2026
186f3c0
mgard-x: portable warp-cooperative LZ4; drop nvcomp dependency
JieyangChen7 Jun 29, 2026
628b4aa
mgard-x: add symbol-alphabet rANS lossless backend (beats Huffman CR)
JieyangChen7 Jul 1, 2026
0a1672f
mgard-x: s=inf skips orthogonal projection (hierarchical L-inf fast p…
JieyangChen7 Jul 1, 2026
39ed557
mgard-x: restore split-last-cell coarsening for non-uniform grids
JieyangChen7 Jul 1, 2026
6568c0a
mgard-x: clang-format 14 the tree to fix CI clang-format job
JieyangChen7 Jul 1, 2026
4869147
build_scripts: bump zstd to v1.5.6 and protobuf to v3.21.12
JieyangChen7 Jul 1, 2026
7c33641
mgard-x: throw exceptions instead of exit() on internal errors (#246)
JieyangChen7 Jul 2, 2026
321f0fd
mgard-x: clang-format 14 the #246 exception-handling changes
JieyangChen7 Jul 2, 2026
78d9e7e
Merge tag 'sc26-blockmagrd-v1' into mgard-x
JieyangChen7 Jul 4, 2026
81e4dab
mgard-x: zero-initialize the block-local padding region before decompose
JieyangChen7 Jul 5, 2026
c5d0b7b
mgard-x: add timing to the hybrid hierarchy pipeline
JieyangChen7 Jul 5, 2026
21dc675
mgard-x: throw exceptions instead of exit() in the hybrid path
JieyangChen7 Jul 6, 2026
56945e5
mgard-x: compute ROI local quantizers on device instead of host+H2D p…
MasterVChicken Jul 8, 2026
6f8c5e7
mgard-x: stop tracking slurm submission scripts
JieyangChen7 Jul 23, 2026
c21837a
mgard-x: add MI300 HIP support and fix real wavefront-size handling
JieyangChen7 Jul 23, 2026
e3a7c01
mgard-x: tune Huffman compress launch configs for MI300
JieyangChen7 Jul 23, 2026
af7f476
mgard-x: guard MI300-tuned Huffman block widths to HIP only
JieyangChen7 Jul 24, 2026
a14e1ab
mgard-x: apply clang-format to satisfy CI format check
JieyangChen7 Jul 27, 2026
f6bbf38
mgard-x: clang-format pre-existing files to fix CI format check
JieyangChen7 Jul 27, 2026
786b4c3
mgard-x: write coarsest level directly to output in local decompose
MasterVChicken Jul 19, 2026
7e25f65
mgard-x: fuse quantization into the local decompose kernels
MasterVChicken Jul 19, 2026
2aff64f
mgard-x: pad sm_v shared-memory layout to reduce bank conflicts
MasterVChicken Jul 25, 2026
eb02765
mgard-x: fuse dequantization into the local recompose kernels
MasterVChicken Aug 11, 2026
6b68383
mgard-x: record hybrid hierarchy parameters in the file header
MasterVChicken Aug 23, 2026
419196a
mgard-x: give every compressor a DequantizeRecompose step
MasterVChicken Aug 25, 2026
5f554f6
mgard-x: make the hybrid kernel-fusion switch usable and honest
MasterVChicken Aug 25, 2026
63eb82e
mgard-x: make kernel fusion a CLI flag instead of environment variables
MasterVChicken Aug 25, 2026
8128970
mgard-x: require ROCm 7.0 for HIP, drop redundant SERIAL overrides
Aug 27, 2026
b1e9c68
clang format fix
Sep 3, 2026
fbf3da9
mgard-x: fix stale leading dimensions on Array shrink, and test the p…
JieyangChen7 Sep 6, 2026
f40ccf9
mgard-x: fix CPUPipelines so OpenMP builds compile again
JieyangChen7 Sep 8, 2026
9a6863a
mgard-x: project SubArrays onto their own dimensions, not always (0, …
JieyangChen7 Sep 8, 2026
0f22175
mgard-x: extend the in-cache block refactoring to 1D and 2D
JieyangChen7 Sep 8, 2026
a9aad02
mgard-x: quantize the coarsest layer in ROI mode when there is no glo…
JieyangChen7 Sep 8, 2026
361bc65
mgard-x: size Huffman's merge-path array from the grid that actually …
JieyangChen7 Sep 9, 2026
26412bd
mgard-x: support an L2 (s != inf) error bound in the hybrid pipeline
JieyangChen7 Sep 9, 2026
3018a77
mgard-x: restrict the hybrid s-norm bound to one block-local level
JieyangChen7 Sep 10, 2026
e4ef1e7
update docs
JieyangChen7 Sep 11, 2026
c199010
Fix typos and improve formatting in README.md
JieyangChen7 Sep 11, 2026
407c4fb
Update README for MGARD-Lambda formatting and clarity
JieyangChen7 Sep 11, 2026
e479d9e
build scripts: stop building nvcomp
JieyangChen7 Sep 11, 2026
6187036
remove mgard-cuda (legacy CUDA backend)
JieyangChen7 Sep 11, 2026
e873988
mgard-x: add Blackwell (sm_120) build support
JieyangChen7 Sep 11, 2026
e2ba9c2
update mgard family tree
JieyangChen7 Sep 11, 2026
8d7d33f
mgard-x: remove L2 projection for BlockMGARD L-inf mode
MasterVChicken Sep 11, 2026
d257f52
update publications
MasterVChicken Sep 12, 2026
982ad5d
docs: update MGARD-X guide for hybrid hierarchy
MasterVChicken Sep 12, 2026
582b632
mgard-x: add hybrid ROI user guide and map generator
MasterVChicken Sep 12, 2026
08cf964
mgard-x: preserve L2 projection by default in hybrid mode
MasterVChicken Sep 12, 2026
f70d6cf
docs: update performance figure for MGARD-X
MasterVChicken Sep 13, 2026
9f18968
update performance figure format for MGARD-X
MasterVChicken Sep 13, 2026
aedb13c
mgard-x: pass orthogonal_projection in in_cache_block test calls
MasterVChicken Sep 13, 2026
4327c94
mgard-x: apply clang-format
MasterVChicken Sep 13, 2026
e35a282
mgard-x: fix broken examples, migrate MDR-X to current API
MasterVChicken Sep 14, 2026
92b686c
mgard-x: fix stale active-device bug in CUDA/HIP DeviceSpecification …
JieyangChen7 Sep 17, 2026
08cc0cb
docs: update MGARD-X software requirements and dependency versions
JieyangChen7 Sep 17, 2026
1827a13
mgard-x: add bitplane encoder unit tests, fix bugs they found
JieyangChen7 Sep 18, 2026
fb2b98d
mgard-x: archive remaining unused bitplane encoder variants under old/
JieyangChen7 Sep 18, 2026
ef83dcf
mgard-x: add unit tests for DirectInterleaver, MGARDDecomposer, Hybri…
JieyangChen7 Sep 18, 2026
1c6f604
mgard-x: fix MaxErrorEstimatorHB missing negabinary error margin
JieyangChen7 Sep 19, 2026
7c1dd66
mgard-x: fix uninitialized padding in ComposedRefactor level buffers
JieyangChen7 Sep 19, 2026
a73c30a
mgard-x: fix MDR-X sign-buffer heap overflow in bitplane decode
JieyangChen7 Sep 20, 2026
3b1f8b0
mgard-x: unify projection mode control between Compressor and hybrid
JieyangChen7 Sep 20, 2026
84e4a5a
mgard-x: fix clang-format violations flagged by CI
JieyangChen7 Sep 20, 2026
cf8417b
mgard-x: bump to 1.7.0, add release notes, remove dead prefetch/reord…
JieyangChen7 Sep 21, 2026
ef7fd3b
mgard-x: fix clang-format after reorder-argument removal
JieyangChen7 Sep 21, 2026
786bde3
update main readme to include the release month/year and revise the p…
JieyangChen7 Sep 21, 2026
6b43196
Update source file headers to 2026 and personal email; update LICENSE…
JieyangChen7 Sep 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,14 @@ CMakeSettings.json

#'Tags' file.
tags

# Out-of-source build/install trees (this repo builds into ./build-*/ and installs into ./install-*/)
/build-*/
/install-*/
# Editor / CLI artifacts
/.vscode/
/vscode_cli.tar.gz

# Slurm submission scripts (local scheduler jobs, not part of the source tree)
*.sbatch
*.slurm
81 changes: 28 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ endif()
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}/cmake")

set(MGARD_VERSION_MAJOR "1")
set(MGARD_VERSION_MINOR "6")
set(MGARD_VERSION_MINOR "7")
set(MGARD_VERSION_PATCH "0")

set(MGARD_FILE_VERSION_MAJOR "1")
set(MGARD_FILE_VERSION_MINOR "0")
set(MGARD_FILE_VERSION_MINOR "7")
set(MGARD_FILE_VERSION_PATCH "0")

project(
Expand All @@ -37,9 +37,8 @@ option(MGARD_ENABLE_CUDA "Enable CUDA support" OFF)
option(MGARD_ENABLE_SERIAL "Enable SERIAL support" ON)
option(MGARD_ENABLE_HIP "Enable HIP support" OFF)
option(MGARD_ENABLE_SYCL "Enable SYCL support" OFF)
option(MGARD_ENABLE_LEGACY_CUDA "Enable legacy CUDA support" OFF)
option(MGARD_ENABLE_AUTO_TUNING "Enable auto tuning" OFF)
option(MGARD_ENABLE_MDR "Enable MDR" OFF)
option(MGARD_ENABLE_MDR "Enable MDR" ON)
option(MGARD_ENABLE_EXTERNAL_COMPRESSOR "Enable external compressor" OFF)

option(MGARD_ENABLE_CLI "Build executable." OFF)
Expand Down Expand Up @@ -140,6 +139,22 @@ if (MGARD_ENABLE_SERIAL OR
target_include_directories(mdr-x PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
install(TARGETS mdr-x)
add_executable(mdr-x-qoi ${CMAKE_CURRENT_SOURCE_DIR}/src/mgard-x/Executables/mdr-x-qoi.cpp)
target_link_libraries(mdr-x-qoi mgard-library ${CMAKE_DL_LIBS})
target_include_directories(mdr-x-qoi PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
install(TARGETS mdr-x-qoi)
find_package(MPI REQUIRED)
add_executable(pmdr-x-qoi ${CMAKE_CURRENT_SOURCE_DIR}/src/mgard-x/Executables/pmdr-x-qoi.cpp)
target_link_libraries(pmdr-x-qoi mgard-library MPI::MPI_CXX ${CMAKE_DL_LIBS})
target_include_directories(pmdr-x-qoi PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
install(TARGETS pmdr-x-qoi)
add_executable(pmdr-x-qoi-io ${CMAKE_CURRENT_SOURCE_DIR}/src/mgard-x/Executables/pmdr-x-qoi-io.cpp)
target_link_libraries(pmdr-x-qoi-io mgard-library MPI::MPI_CXX ${CMAKE_DL_LIBS})
target_include_directories(pmdr-x-qoi-io PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)
install(TARGETS pmdr-x-qoi-io)
endif()
endif()

Expand All @@ -163,7 +178,6 @@ if(MGARD_ENABLE_CUDA)
set(CMAKE_CUDA_ARCHITECTURES 70)
endif()

find_package(nvcomp REQUIRED)
find_package(CUDAToolkit REQUIRED)

target_compile_definitions(mgard-library PUBLIC MGARD_ENABLE_CUDA)
Expand All @@ -175,34 +189,11 @@ if(MGARD_ENABLE_CUDA)
set_source_files_properties(${MGARD_X_CUDA_SRC} PROPERTIES LANGUAGE CUDA)
endif()

if (MGARD_ENABLE_LEGACY_CUDA)
enable_language(CUDA)
set(CMAKE_CUDA_STANDARD_REQUIRED TRUE)
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES 70)
endif()

find_package(nvcomp REQUIRED)
find_package(CUDAToolkit REQUIRED)

add_subdirectory (src/cuda)
add_subdirectory (include/cuda)
add_executable(mgard-gpu ${CMAKE_CURRENT_SOURCE_DIR}/src/cuda/MgardCudaExec.cpp)
target_link_libraries(mgard-gpu mgard-library ${CMAKE_DL_LIBS})
target_include_directories(mgard-gpu PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>)

target_compile_definitions(mgard-library PUBLIC MGARD_ENABLE_LEGACY_CUDA)
set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr -w")

set (MGARD_X_SEPARATE_COMPILE_COMPILATION_OPTION
CUDA_SEPARABLE_COMPILATION ON)

install(TARGETS mgard-gpu)
endif()

if (MGARD_ENABLE_HIP)
find_package(HIP REQUIRED)
if (MGARD_ENABLE_HIP)
# __syncwarp(), used by SubGroup<HIP>::sync() for wavefront-level
# synchronization, is opt-in before ROCm 7.0 and default-on from 7.0
# onward -- require 7.0 so it needs no HIP_ENABLE_WARP_SYNC_BUILTINS define.
find_package(HIP 7.0 REQUIRED)
enable_language(HIP)
target_compile_definitions(mgard-library PUBLIC MGARD_ENABLE_HIP)
set (CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} -w")
Expand Down Expand Up @@ -234,13 +225,7 @@ find_package(ZLIB REQUIRED)

find_package(PkgConfig REQUIRED)

set(
MGARD_LIBRARY_CPP
src/compress.cpp
src/compress_internal.cpp
src/compressors.cpp
src/format.cpp
)
add_subdirectory(src/mgard)

set(MAXIMUM_DIMENSION 4 CACHE STRING "Maximum supported dimension for self-describing decompression.")

Expand Down Expand Up @@ -366,11 +351,7 @@ if(ZSTD_FOUND)
endif()

if(MGARD_ENABLE_CUDA)
target_link_libraries(mgard-library PUBLIC nvcomp::nvcomp CUDA::cudart)
endif()

if(MGARD_ENABLE_LEGACY_CUDA)
target_link_libraries(mgard-library PUBLIC nvcomp::nvcomp CUDA::cudart)
target_link_libraries(mgard-library PUBLIC CUDA::cudart)
endif()

if(MGARD_ENABLE_OPENMP)
Expand Down Expand Up @@ -406,7 +387,7 @@ install(DIRECTORY "include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mgard")
install(FILES "${MGARD_FILE_FORMAT_HPP}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/mgard/${MGARD_FILE_FORMAT_INCLUDESUBDIR_COMPONENT}")

if(MGARD_ENABLE_UNSTRUCTURED)
add_subdirectory("src/unstructured")
add_subdirectory("src/mgard/unstructured")
endif()

if(MGARD_ENABLE_BENCHMARKS)
Expand Down Expand Up @@ -464,7 +445,7 @@ install(EXPORT mgard-targets NAMESPACE mgard::
)

if(MGARD_ENABLE_CLI)
add_subdirectory("src/cli")
add_subdirectory("src/mgard/cli")
endif()

message(STATUS "")
Expand Down Expand Up @@ -503,12 +484,6 @@ if (MGARD_ENABLE_HIP)
endif()
message(STATUS "SYCL: ${MGARD_ENABLE_SYCL}")
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(STATUS "LEGACY CUDA: ${MGARD_ENABLE_LEGACY_CUDA}")
if (MGARD_ENABLE_LEGACY_CUDA)
list(APPEND CMAKE_MESSAGE_INDENT " ")
message(STATUS "CUDA Arch: ${CMAKE_CUDA_ARCHITECTURES}")
list(POP_BACK CMAKE_MESSAGE_INDENT)
endif()
message(STATUS "auto tuning: ${MGARD_ENABLE_AUTO_TUNING}")
message(STATUS "MDR: ${MGARD_ENABLE_MDR}")
message(STATUS "timing: ${MGARD_ENABLE_TIMING}")
Expand Down
3 changes: 2 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,8 @@

END OF TERMS AND CONDITIONS

Copyright 2019 Brown University
Copyright 2019-2026 Oak Ridge National Laboratory
Copyright 2019-2026 Brown University

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
Loading
Loading