From 4a6ea7e24b933bf574f7707e1b331ea62f7e7273 Mon Sep 17 00:00:00 2001 From: Tim Dettmers Date: Sun, 31 Jul 2022 20:59:34 -0700 Subject: Added adjusted build file. --- Makefile | 16 ++- deploy_from_slurm.sh | 358 +++++++++++++++++++++++++-------------------------- setup.py | 22 +--- 3 files changed, 190 insertions(+), 206 deletions(-) diff --git a/Makefile b/Makefile index 04a6fa7..b109f96 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,16 @@ MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) ROOT_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH))) -ifndef CUDA_VERSION -$(error ERROR: CUDA_VERSION not set. Call make with CUDA string, for example: make cuda11x CUDA_VERSION=115 or make cpuonly CUDA_VERSION=CPU) -endif - GPP:= /usr/bin/g++ ifeq ($(CUDA_HOME),) CUDA_HOME:= $(shell which nvcc | rev | cut -d'/' -f3- | rev) endif +ifndef CUDA_VERSION +$(warning WARNING: CUDA_VERSION not set. Call make with CUDA string, for example: make cuda11x CUDA_VERSION=115 or make cpuonly CUDA_VERSION=CPU) +CUDA_VERSION:= +endif + NVCC := $(CUDA_HOME)/bin/nvcc @@ -92,7 +93,7 @@ cuda11x: $(BUILD_DIR) env $(GPP) -std=c++14 -DBUILD_CUDA -shared -fPIC $(INCLUDE) $(BUILD_DIR)/ops.o $(BUILD_DIR)/kernels.o $(BUILD_DIR)/link.o $(FILES_CPP) -o ./bitsandbytes/libbitsandbytes_cuda$(CUDA_VERSION).so $(LIB) cpuonly: $(BUILD_DIR) env - $(GPP) -std=c++14 -shared -fPIC -I $(ROOT_DIR)/csrc -I $(ROOT_DIR)/include $(FILES_CPP) -o ./bitsandbytes/libbitsandbytes_$(CUDA_VERSION).so + $(GPP) -std=c++14 -shared -fPIC -I $(ROOT_DIR)/csrc -I $(ROOT_DIR)/include $(FILES_CPP) -o ./bitsandbytes/libbitsandbytes_cpu.so env: @echo "ENVIRONMENT" @@ -116,7 +117,10 @@ $(ROOT_DIR)/dependencies/cub: cd dependencies/cub; git checkout 1.11.0 clean: - rm build/* ./bitsandbytes/libbitsandbytes.so + rm build/* cleaneggs: rm -rf *.egg* + +cleanlibs: + rm ./bitsandbytes/libbitsandbytes*.so diff --git a/deploy_from_slurm.sh b/deploy_from_slurm.sh index 4aab04f..c6ee84d 100644 --- a/deploy_from_slurm.sh +++ b/deploy_from_slurm.sh @@ -15,12 +15,14 @@ module unload gcc rm -rf dist build make cleaneggs +make cleanlibs make clean export CUDA_HOME= -make cpuonly CUDA_VERSION=CPU +export CUDA_VERSION= +make cpuonly CUDA_VERSION="CPU" -if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then +if [ ! -f "./bitsandbytes/libbitsandbytes_cpu.so" ]; then # Control will enter here if $DIRECTORY doesn't exist. echo "Compilation unsuccessul!" 1>&2 exit 64 @@ -30,188 +32,174 @@ make clean export CUDA_HOME=$BASE_PATH/cuda-11.0 make cuda110 CUDA_VERSION=110 -if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then - # Control will enter here if $DIRECTORY doesn't exist. - echo "Compilation unsuccessul!" 1>&2 - exit 64 -fi - -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.1 -#make cuda11x CUDA_VERSION=111 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.2 -#make cuda11x CUDA_VERSION=112 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=112 python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.3 -#make cuda11x CUDA_VERSION=113 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=113 python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.4 -#make cuda11x CUDA_VERSION=114 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=114 python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.5 -#make cuda11x CUDA_VERSION=115 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=115 python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.6 -# -#make cuda11x CUDA_VERSION=116 -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=116 python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.7 -#make cuda11x CUDA_VERSION=117 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=117 python -m build -# -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-10.2 -#make cuda10x_nomatmul CUDA_VERSION=102 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=102-nomatmul python -m build -# -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.0 -#make cuda110_nomatmul CUDA_VERSION=110 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=110-nomatmul python -m build -# -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.1 -#make cuda11x_nomatmul CUDA_VERSION=111 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=111-nomatmul python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.2 -#make cuda11x_nomatmul CUDA_VERSION=112 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=112-nomatmul python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.3 -#make cuda11x_nomatmul CUDA_VERSION=113 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=113-nomatmul python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.4 -#make cuda11x_nomatmul CUDA_VERSION=114 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=114-nomatmul python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.5 -#make cuda11x_nomatmul CUDA_VERSION=115 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=115-nomatmul python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.6 -# -#make cuda11x_nomatmul CUDA_VERSION=116 -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=116-nomatmul python -m build -# -#make clean -#export CUDA_HOME=$BASE_PATH/cuda-11.7 -#make cuda11x_nomatmul CUDA_VERSION=117 -# -#if [ ! -f "./bitsandbytes/libbitsandbytes.so" ]; then -# # Control will enter here if $DIRECTORY doesn't exist. -# echo "Compilation unsuccessul!" 1>&2 -# exit 64 -#fi -#CUDA_VERSION=117-nomatmul python -m build +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda110.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.1 +make cuda11x CUDA_VERSION=111 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda111.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.2 +make cuda11x CUDA_VERSION=112 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda112.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.3 +make cuda11x CUDA_VERSION=113 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda113.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.4 +make cuda11x CUDA_VERSION=114 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda114.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.5 +make cuda11x CUDA_VERSION=115 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda115.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.6 + +make cuda11x CUDA_VERSION=116 +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda116.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.7 +make cuda11x CUDA_VERSION=117 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda117.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + + +make clean +export CUDA_HOME=$BASE_PATH/cuda-10.2 +make cuda10x_nomatmul CUDA_VERSION=102 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda102_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.0 +make cuda110_nomatmul CUDA_VERSION=110 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda110_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.1 +make cuda11x_nomatmul CUDA_VERSION=111 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda111_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.2 +make cuda11x_nomatmul CUDA_VERSION=112 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda112_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.3 +make cuda11x_nomatmul CUDA_VERSION=113 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda113_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.4 +make cuda11x_nomatmul CUDA_VERSION=114 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda114_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.5 +make cuda11x_nomatmul CUDA_VERSION=115 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda115_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.6 + +make cuda11x_nomatmul CUDA_VERSION=116 +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda116_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi + +make clean +export CUDA_HOME=$BASE_PATH/cuda-11.7 +make cuda11x_nomatmul CUDA_VERSION=117 + +if [ ! -f "./bitsandbytes/libbitsandbytes_cuda117_nocublaslt.so" ]; then + # Control will enter here if $DIRECTORY doesn't exist. + echo "Compilation unsuccessul!" 1>&2 + exit 64 +fi +python -m build python -m twine upload dist/* --verbose --repository testpypi diff --git a/setup.py b/setup.py index eefc6df..965817d 100644 --- a/setup.py +++ b/setup.py @@ -3,28 +3,20 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. import os +import glob from setuptools import setup, find_packages -import os - -def all_libs(directory): - paths = [] - for (path, directories, filenames) in os.walk(directory): - for filename in filenames: - paths.append(os.path.join('..', path, filename)) - return paths +libs = list(glob.glob('./bitsandbytes/libbitsandbytes*.so')) +libs = [os.path.basename(p) for p in libs] +print('libs:', libs) def read(fname): return open(os.path.join(os.path.dirname(__file__), fname)).read() - -version = os.getenv("CUDA_VERSION", "cpu") -prefix = '' if version == 'cpu' else 'cuda' - setup( - name=f"bitsandbytes-{prefix}{version}", - version=f"0.30.2", + name=f"bitsandbytes", + version=f"0.31.0", author="Tim Dettmers", author_email="dettmers@cs.washington.edu", description="8-bit optimizers and matrix multiplication routines.", @@ -35,7 +27,7 @@ setup( entry_points={ "console_scripts": ["debug_cuda = bitsandbytes.debug_cli:cli"], }, - package_data={'': ['libbitsandbytes*.so']}, + package_data={'': libs}, long_description=read('README.md'), long_description_content_type='text/markdown', classifiers=[ -- cgit v1.2.3