Skip to content

Commit 6b5687e

Browse files
committed
[HIP] change compress level
Change compression level to 20 for zstd better compression rate.
1 parent b542501 commit 6b5687e

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

clang/lib/Driver/OffloadBundler.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -942,20 +942,28 @@ CompressedOffloadBundle::compress(const llvm::MemoryBuffer &Input,
942942
Input.getBuffer().size());
943943

944944
llvm::compression::Format CompressionFormat;
945+
int Level;
945946

946-
if (llvm::compression::zstd::isAvailable())
947+
if (llvm::compression::zstd::isAvailable()) {
947948
CompressionFormat = llvm::compression::Format::Zstd;
948-
else if (llvm::compression::zlib::isAvailable())
949+
// Use a high zstd compress level by default for better size reduction.
950+
const int DefaultZstdLevel = 20;
951+
Level = DefaultZstdLevel;
952+
} else if (llvm::compression::zlib::isAvailable()) {
949953
CompressionFormat = llvm::compression::Format::Zlib;
950-
else
954+
// Use default level for zlib since higher level does not have significant
955+
// improvement.
956+
Level = llvm::compression::zlib::DefaultCompression;
957+
} else
951958
return createStringError(llvm::inconvertibleErrorCode(),
952959
"Compression not supported");
953960

954961
llvm::Timer CompressTimer("Compression Timer", "Compression time",
955962
ClangOffloadBundlerTimerGroup);
956963
if (Verbose)
957964
CompressTimer.startTimer();
958-
llvm::compression::compress(CompressionFormat, BufferUint8, CompressedBuffer);
965+
llvm::compression::compress({CompressionFormat, Level}, BufferUint8,
966+
CompressedBuffer);
959967
if (Verbose)
960968
CompressTimer.stopTimer();
961969

@@ -980,6 +988,7 @@ CompressedOffloadBundle::compress(const llvm::MemoryBuffer &Input,
980988
CompressionFormat == llvm::compression::Format::Zstd ? "zstd" : "zlib";
981989
llvm::errs() << "Compressed bundle format version: " << Version << "\n"
982990
<< "Compression method used: " << MethodUsed << "\n"
991+
<< "Compression level: " << Level << "\n"
983992
<< "Binary size before compression: " << UncompressedSize
984993
<< " bytes\n"
985994
<< "Binary size after compression: " << CompressedBuffer.size()

clang/test/Driver/clang-offload-bundler-zlib.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// REQUIRES: zlib
1+
// REQUIRES: zlib && !zstd
22
// REQUIRES: x86-registered-target
33
// UNSUPPORTED: target={{.*}}-darwin{{.*}}, target={{.*}}-aix{{.*}}
44

@@ -34,7 +34,8 @@
3434
// RUN: diff %t.tgt2 %t.res.tgt2
3535

3636
//
37-
// COMPRESS: Compression method used:
37+
// COMPRESS: Compression method used: zlib
38+
// COMPRESS: Compression level: 6
3839
// DECOMPRESS: Decompression method:
3940
// NOHOST-NOT: host-
4041
// NOHOST-DAG: hip-amdgcn-amd-amdhsa--gfx900

clang/test/Driver/clang-offload-bundler-zstd.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
// RUN: diff %t.tgt1 %t.res.tgt1
3232
// RUN: diff %t.tgt2 %t.res.tgt2
3333
//
34-
// COMPRESS: Compression method used
34+
// COMPRESS: Compression method used: zstd
35+
// COMPRESS: Compression level: 20
3536
// DECOMPRESS: Decompression method
3637
// NOHOST-NOT: host-
3738
// NOHOST-DAG: hip-amdgcn-amd-amdhsa--gfx900

llvm/include/llvm/Support/Compression.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ struct Params {
9494
constexpr Params(Format F)
9595
: format(F), level(F == Format::Zlib ? zlib::DefaultCompression
9696
: zstd::DefaultCompression) {}
97+
constexpr Params(Format F, int L) : format(F), level(L) {}
9798
Params(DebugCompressionType Type) : Params(formatFor(Type)) {}
9899

99100
Format format;

0 commit comments

Comments
 (0)