Skip to content

Commit bb36c26

Browse files
authored
Merge pull request #267 from Chia-Network/cuda-compression
CUDA & compression
2 parents c669876 + 9a69d30 commit bb36c26

File tree

283 files changed

+85292
-3974
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

283 files changed

+85292
-3974
lines changed
Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
#! /usr/bin/env bash
22
# NOTE: This is meant to be run from the repo root dir
3-
#
4-
# Expects env variables:
5-
# - BB_ARTIFACT_NAME
6-
# - BB_VERSION
7-
#
3+
84
set -eo pipefail
95

6+
compile_cuda=0
7+
artifact_name=bladebit
8+
version=v1.0
9+
10+
while true; do
11+
case $1 in
12+
--cuda)
13+
compile_cuda=1 || exit 1
14+
;;
15+
--artifact)
16+
shift && artifact_name=$1 || exit 1
17+
;;
18+
--version)
19+
shift && version=$1 || exit 1
20+
;;
21+
esac
22+
shift || break
23+
done
24+
25+
1026
thread_count=2
1127

1228
if [[ $OSTYPE == 'darwin'* ]]; then
@@ -19,11 +35,19 @@ fi
1935
echo "System: $(uname -s)"
2036
gcc --version
2137

22-
mkdir build && cd build
23-
cmake ..
38+
exe_name=bladebit
39+
target=bladebit
40+
if [[ compile_cuda -eq 1 ]]; then
41+
target=bladebit_cuda
42+
exe_name=bladebit_cuda
43+
fi
44+
45+
set -x
46+
mkdir build-${target} && cd build-${target}
47+
cmake .. -DCMAKE_BUILD_TYPE=Release
2448
bash -eo pipefail ../embed-version.sh
25-
cmake --build . --target bladebit --config Release -j $thread_count
26-
chmod +x ./bladebit
49+
cmake --build . --config Release --target $target -j $thread_count
50+
chmod +x ./${exe_name}
2751

2852
if [[ $OSTYPE == 'msys'* ]] || [[ $OSTYPE == 'cygwin'* ]]; then
2953
ls -la Release
@@ -32,16 +56,16 @@ else
3256
fi
3357

3458
# Ensure bladebit version matches expected version
35-
bb_version="$(./bladebit --version | xargs)"
59+
bb_version="$(./${exe_name} --version | xargs)"
3660

37-
if [[ "$bb_version" != "$BB_VERSION" ]]; then
38-
>&2 echo "Incorrect bladebit version. Got '$bb_version' but expected '$BB_VERSION'."
61+
if [[ "$bb_version" != "$version" ]]; then
62+
>&2 echo "Incorrect bladebit version. Got '$bb_version' but expected '$version'."
3963
exit 1
4064
fi
4165

4266
tar --version
43-
tar -czvf $BB_ARTIFACT_NAME bladebit
44-
mkdir ../bin
45-
mv $BB_ARTIFACT_NAME ../bin/
67+
tar -czvf $artifact_name $exe_name
68+
mkdir -p ../bin
69+
mv $artifact_name ../bin/
4670
ls -la ../bin
4771

.github/actions/build-harvester.sh

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
if [[ $RUNNER_DEBUG = 1 ]]; then
4+
set -x
5+
fi
6+
7+
host_os=$(uname -a)
8+
case "${host_os}" in
9+
Linux*) host_os="linux";;
10+
Darwin*) host_os="macos";;
11+
CYGWIN*) host_os="windows";;
12+
MINGW*) host_os="windows";;
13+
*Msys) host_os="windows";;
14+
esac
15+
16+
if [[ "$host_os" == "windows" ]]; then
17+
ext="zip"
18+
else
19+
ext="tar.gz"
20+
fi
21+
22+
if [[ "$host_os" == "macos" ]]; then
23+
procs=$(sysctl -n hw.logicalcpu)
24+
sha_sum="shasum -a 256"
25+
else
26+
procs=$(nproc --all)
27+
sha_sum="sha256sum"
28+
fi
29+
30+
artifact_name=green_reaper.$ext
31+
32+
while true; do
33+
case $1 in
34+
--artifact)
35+
shift && artifact_name=$1 || exit 1
36+
;;
37+
esac
38+
shift || break
39+
done
40+
41+
echo "Harvester artifact: ${artifact_name}"
42+
echo 'cmake --version'
43+
cmake --version
44+
45+
mkdir -p build-harvester
46+
pushd build-harvester
47+
cmake .. -DCMAKE_BUILD_TYPE=Release -DBB_HARVESTER_ONLY=ON
48+
49+
cmake --build . --config Release --target bladebit_harvester
50+
51+
if [[ "$host_os" == "windows" ]]; then
52+
OBJDUMP=$("${CUDA_PATH}"\\bin\\cuobjdump Release\\bladebit_harvester.dll)
53+
elif [[ "$host_os" == "linux" ]]; then
54+
OBJDUMP=$(/usr/local/cuda/bin/cuobjdump libbladebit_harvester.so)
55+
fi
56+
57+
cmake --install . --prefix harvester_dist
58+
pushd harvester_dist/green_reaper
59+
60+
if [[ "$host_os" == "windows" ]]; then
61+
mkdir -p lib
62+
cp -vn ../../*/*.dll lib/
63+
cp -vn ../../*/*.lib lib/
64+
fi
65+
66+
artifact_files=($(find . -type f -name '*.*' | cut -c3-))
67+
68+
# shellcheck disable=SC2068
69+
$sha_sum ${artifact_files[@]} > sha256checksum
70+
71+
artifact_files+=("sha256checksum")
72+
73+
if [[ "$host_os" == "windows" ]]; then
74+
7z.exe a -tzip "${artifact_name}" "${artifact_files[@]}"
75+
else
76+
# shellcheck disable=SC2068
77+
tar -czvf "${artifact_name}" ${artifact_files[@]}
78+
fi
79+
80+
popd
81+
mv "harvester_dist/green_reaper/${artifact_name}" ./
82+
$sha_sum "${artifact_name}" > "${artifact_name}.sha256.txt"
83+
ls -la
84+
cat "${artifact_name}.sha256.txt"
85+
86+
if [[ "$CI" == "true" ]]; then
87+
if [[ "$host_os" == "windows" ]] || [[ "$host_os" == "linux" ]]; then
88+
while IFS= read -r line; do
89+
echo -e "$(echo ${line#* } | tr -d '*')\n###### <sup>${line%% *}</sup>\n"
90+
done <"${artifact_name}.sha256.txt" >> "$GITHUB_STEP_SUMMARY"
91+
echo "| Arch | Code Version | Host | Compile Size |" >> "$GITHUB_STEP_SUMMARY"
92+
echo "| --- | --- | --- | --- |" >> "$GITHUB_STEP_SUMMARY"
93+
echo "$OBJDUMP" | awk -v RS= -v FS='\n' -v OFS=' | ' '{
94+
for (i=1; i<=NF; i++) {
95+
if (index($i, "=")) {
96+
gsub(/.* = /, "", $i);
97+
}
98+
}
99+
print $3, $4, $5, $6;
100+
}' | sed 's/^/| /; s/$/ |/; s/ | | / | /g' >> "$GITHUB_STEP_SUMMARY"
101+
fi
102+
103+
if [[ "$host_os" == "windows" ]]; then
104+
harvester_artifact_path="$(cygpath -m "$(pwd)/${artifact_name}")*"
105+
else
106+
harvester_artifact_path="$(pwd)/${artifact_name}*"
107+
fi
108+
echo "harvester_artifact_path=$harvester_artifact_path"
109+
echo "harvester_artifact_path=$harvester_artifact_path" >> "$GITHUB_ENV"
110+
fi
111+
112+
popd
113+
ls -la

.github/actions/get-version.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ if [[ "$os" == "windows" ]]; then
2929
ext="zip"
3030
fi
3131

32-
echo "::set-output name=BB_VERSION::$version"
33-
echo "::set-output name=BB_ARTIFACT_NAME::bladebit-v${version}-${os}-${arch}.${ext}"
32+
echo "BB_VERSION=$version" >> $GITHUB_ENV
33+
echo "BB_ARTIFACT_NAME=bladebit-v${version}-${os}-${arch}.${ext}" >> $GITHUB_ENV
34+
echo "BB_ARTIFACT_NAME_CUDA=bladebit-cuda-v${version}-${os}-${arch}.${ext}" >> $GITHUB_ENV
35+
3436

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
ref_cmake_sha256='39e1c2eccda989b0d000dc5f4ee2cb031bdda799163780d855acc0bd9eda9d92'
4+
cmake_name='cmake-3.23.3-linux-x86_64'
5+
6+
curl -L https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-linux-x86_64.tar.gz > cmake.tar.gz
7+
8+
cmake_sh_sha256=$(sha256sum cmake.tar.gz | cut -f1 -d' ')
9+
if [[ "${ref_cmake_sha256}" != "${cmake_sh_sha256}" ]]; then
10+
2>&1 echo "sha256 mismatch!: "
11+
2>&1 echo "Got : '${cmake_sh_sha256}'"
12+
2>&1 echo "Expected: '${ref_cmake_sha256}'"
13+
exit 1
14+
fi
15+
16+
rm -f /usr/bin/cmake && rm -f /usr/local/bin/cmake
17+
mkdir -p /usr/local/bin
18+
mkdir -p /usr/local/share
19+
20+
cmake_prefix=$(pwd)/${cmake_name}
21+
tar -xzvf cmake.tar.gz
22+
ls -la
23+
ls -la ${cmake_prefix}
24+
25+
cp -r ${cmake_prefix}/bin/* /usr/local/bin/
26+
cp -r ${cmake_prefix}/share/* /usr/local/share/
27+
28+
echo 'Cmake Info:'
29+
which cmake
30+
cmake --version
31+
32+
echo 'Done.'
33+
exit 0

.github/workflows/attach-release-assets.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,15 @@ jobs:
3535
bladebit-v${BB_VERSION}-ubuntu-arm64.tar.gz
3636
bladebit-v${BB_VERSION}-centos-arm64.tar.gz
3737
bladebit-v${BB_VERSION}-windows-x86-64.zip
38-
bladebit-v${BB_VERSION}-macos-arm64.tar.gz
39-
bladebit-v${BB_VERSION}-macos-x86-64.tar.gz
38+
bladebit-cuda-v${BB_VERSION}-ubuntu-x86-64.tar.gz
39+
bladebit-cuda-v${BB_VERSION}-centos-x86-64.tar.gz
40+
bladebit-cuda-v${BB_VERSION}-ubuntu-arm64.tar.gz
41+
bladebit-cuda-v${BB_VERSION}-windows-x86-64.zip
42+
green_reaper-v${BB_VERSION}-linux-x86-64.tar.gz
43+
green_reaper-v${BB_VERSION}-linux-ARM64.tar.gz
44+
green_reaper-v${BB_VERSION}-macos-x86-64.tar.gz
45+
green_reaper-v${BB_VERSION}-macos-arm64.tar.gz
46+
green_reaper-v${BB_VERSION}-windows-x86-64.zip
4047
)
4148
4249
mkdir -p bin
@@ -59,4 +66,4 @@ jobs:
5966
echo "Uploading release asset '${artifact_name}'"
6067
node .github/actions/artifacts.mjs upload-release-asset $BB_VERSION $artifact_name bin/$artifact_name
6168
done
62-
69+

0 commit comments

Comments
 (0)