From 3288bb7601fe7cc0068367c4e13f9e7924e170a6 Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Tue, 3 Aug 2021 12:17:53 -0700 Subject: [PATCH 1/6] updated 7z command in create package --- package/create_package.sh | 188 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100755 package/create_package.sh diff --git a/package/create_package.sh b/package/create_package.sh new file mode 100755 index 00000000..28560c6a --- /dev/null +++ b/package/create_package.sh @@ -0,0 +1,188 @@ +#!/bin/bash +args=("$@") + +# be wary of /i /s /q :: -n? (-s is subfolders?) (-q is no confirmation) + +set +v +# create package for Gpufit, assumes everything is compiled + +if [[ -z $1 ]]; +then + echo specify build base path + exit 3 +fi + + +if [[ -z $2 ]]; +then + echo specify version + exit 3 +fi + + +if [[ -z $3 ]]; +then + echo specify source base path + exit 3 +fi + + +# define paths + +export BUILD_BASE=${args[0]} +export VERSION=${args[1]} +export SOURCE_BASE=${args[2]} + +export OUTPUT_NAME=Gpufit_$VERSION +export ROOT_INSTALL=$BUILD_BASE/install +export PACKAGE_INSTALL=$BUILD_BASE/install/$OUTPUT_NAME +export OUTPUT_ZIP=$ROOT_INSTALL/${OUTPUT_NAME}_linux.zip +export OUTPUT_DEB=$ROOT_INSTALL/${OUTPUT_NAME}.deb + +export PERFORMANCE_TEST_INSTALL=$PACKAGE_INSTALL/gpufit_performance_test +export PYTHON_INSTALL=$PACKAGE_INSTALL/PYTHON +export x64_MATLAB_INSTALL=$PACKAGE_INSTALL/matlab64 +export x64_JAVA_INSTALL=$PACKAGE_INSTALL/java64 +export SDK_INSTALL_ROOT=$PACKAGE_INSTALL/gpufit_sdk +export DEB_ROOT=$PACKAGE_INSTALL + +export x64_BUILD=$BUILD_BASE +#export x64_BUILD_LIB=$BUILD_BASE/Gpufit + + +export x64_PYTHON_BUILD=$x64_BUILD/pyGpufit/dist + +export x64_MATLAB_BUILD=$x64_BUILD/matlab + +export x64_JAVA_BUILD=$x64_BUILD/java + +export EXAMPLES_SOURCE=$SOURCE_BASE/examples +export PYTHON_SOURCE=$SOURCE_BASE/Gpufit/python +export MATLAB_SOURCE=$SOURCE_BASE/Gpufit/matlab +export SDK_README_SOURCE=$SOURCE_BASE/package/sdk_readme.txt + +export MANUAL_SOURCE=$SOURCE_BASE/docs/_build/latex/Gpufit.pdf +export MANUAL_INSTALL=$PACKAGE_INSTALL/Gpufit_VERSION_Manual.pdf + +# clean up (if necessary) + +if [[ -e "$ROOT_INSTALL" ]]; +then + rm -r "$ROOT_INSTALL" +fi +#if [[ -e "$OUTPUT_ZIP" ]]; +#then +# rm "$OUTPUT_ZIP" +#fi +#if [[ -e "$OUTPUT_DEB" ]]; +#then +# rm "$OUTPUT_DEB" +#fi + +# create root folder + +echo create root directory +mkdir $ROOT_INSTALL +mkdir $PACKAGE_INSTALL + +# create .deb package +echo collect .deb files +mkdir $DEB_ROOT/DEBIAN +cp "$SOURCE_BASE/package/control" "$DEB_ROOT/DEBIAN" +sed -i "s/version_string/${VERSION}/" $DEB_ROOT/DEBIAN/control + +mkdir $DEB_ROOT/usr +mkdir $DEB_ROOT/usr/local +mkdir $DEB_ROOT/usr/lib +cp "$x64_BUILD/Gpufit/libGpufit.so" "$DEB_ROOT/usr/lib" +cp "$x64_BUILD/Cpufit/libCpufit.so" "$DEB_ROOT/usr/lib" + +mkdir $DEB_ROOT/usr/local/include +cp "$SOURCE_BASE/Gpufit/gpufit.h" "$DEB_ROOT/usr/local/include" + +mkdir $DEB_ROOT/usr/local/bin +cp "$x64_BUILD/Gpufit_Cpufit_Performance_Comparison" "$DEB_ROOT/usr/local/bin" + +echo creating .deb +(cd ${DEB_ROOT}/.. && dpkg-deb --build $OUTPUT_NAME) + +echo delete temp files +rm -r $DEB_ROOT +mkdir $PACKAGE_INSTALL +mv ${OUTPUT_DEB} ${PACKAGE_INSTALL} + +# copy main readme (is markdown, written as txt) and license. + +cp "$SOURCE_BASE/README.md" "$PACKAGE_INSTALL/README.txt" +cp "$SOURCE_BASE/LICENSE.txt" "$PACKAGE_INSTALL" + +# copy manual + +#if [[ ! -e "$MANUAL_SOURCE" ]]; +#then +# echo file $MANUAL_SOURCE required, does not exist +# exit 3 +#fi +# +#cp "$MANUAL_SOURCE" "$MANUAL_INSTALL" + +# copy performance test + +echo collect performance test application +mkdir $PERFORMANCE_TEST_INSTALL +cp "$EXAMPLES_SOURCE/Gpufit_Cpufit_Performance_Comparison_readme.txt" "$PERFORMANCE_TEST_INSTALL/README.txt" + +mkdir $PERFORMANCE_TEST_INSTALL/linux +cp "$x64_BUILD/Gpufit_Cpufit_Performance_Comparison" "$PERFORMANCE_TEST_INSTALL/linux" +cp "$x64_BUILD/Gpufit/libGpufit.so" "$PERFORMANCE_TEST_INSTALL/linux" +cp "$x64_BUILD/Cpufit/libCpufit.so" "$PERFORMANCE_TEST_INSTALL/linux" + + +# copy Python packages + +echo collect python +mkdir $PYTHON_INSTALL +cp "$x64_PYTHON_BUILD/pyGpufit-$VERSION-py2.py3-none-any.whl" "$PYTHON_INSTALL/pyGpufit-$VERSION-py2.py3-none-any.whl" +cp "$PYTHON_SOURCE/README.txt" "$PYTHON_INSTALL" +cp "$PYTHON_SOURCE/examples" "$PYTHON_INSTALL/examples" -n -r + + +# copy Matlab 64 bit + +echo collect matlab64 +mkdir $x64_MATLAB_INSTALL +cp "$x64_MATLAB_BUILD" "$x64_MATLAB_INSTALL" -r +cp "$MATLAB_SOURCE/examples" "$x64_MATLAB_INSTALL/examples" -n -r + + +# copy Java 64 bit + +echo collect java64 +mkdir $x64_JAVA_INSTALL +cp "$x64_JAVA_BUILD" "$x64_JAVA_INSTALL" -r + + +# copy SDK_INSTALL_ROOT + +echo collect SDK +mkdir $SDK_INSTALL_ROOT +cp "$SDK_README_SOURCE" "$SDK_INSTALL_ROOT/README.txt" + +mkdir $SDK_INSTALL_ROOT/include +cp "$SOURCE_BASE/Gpufit/gpufit.h" "$SDK_INSTALL_ROOT/include" + +mkdir $SDK_INSTALL_ROOT/linux +cp "$x64_BUILD/Gpufit/libGpufit.so" "$SDK_INSTALL_ROOT/linux" +#cp "$x64_BUILD_LIB/Gpufit.a" "$SDK_INSTALL_ROOT/linux" + + +# zip content of temp folder with 7-Zip if available +if 7z a -bso0 "${OUTPUT_ZIP}" "${PACKAGE_INSTALL}" +then + #it worked + echo Created ${OUTPUT_ZIP} +else + echo Packing ${OUTPUT_ZIP} failed +fi + + From 90383194f97b693c2ffd35faac1df77eb5004fb0 Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Thu, 11 Jul 2019 11:32:38 -0700 Subject: [PATCH 2/6] Fixed CUBLAS linking on linux, static and dynamic --- Gpufit/CMakeLists.txt | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Gpufit/CMakeLists.txt b/Gpufit/CMakeLists.txt index e1d5d2d5..ef5a08ff 100644 --- a/Gpufit/CMakeLists.txt +++ b/Gpufit/CMakeLists.txt @@ -194,15 +194,29 @@ if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND CUDA_VERSION VERSION_GREATER "6.5") add_custom_command( TARGET Gpufit POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CUBLAS_DLL} $ ) + target_link_libraries( Gpufit ${CUDA_CUBLAS_LIBRARIES} ) else() - set( CUDA_CUBLAS_LIBRARIES - ${CUDA_TOOLKIT_ROOT_DIR}/lib64/libcublas_static.a - ${CUDA_TOOLKIT_ROOT_DIR}/lib64/libculibos.a ) - endif() - + set( STATIC_CUBLAS ON CACHE BOOL "ON | OFF") + if ( STATIC_CUBLAS ) + find_cuda_helper_libs(cublas_static) + find_cuda_helper_libs(cublasLt_static) + find_cuda_helper_libs(culibos) + + set( CUDA_CUBLAS_LIBRARIES + ${CUDA_cublas_static_LIBRARY} + ${CUDA_cublasLt_static_LIBRARY} + ${CUDA_cudart_static_LIBRARY} + ${CUDA_culibos_LIBRARY} + dl + pthread + rt ) + target_link_libraries( Gpufit ${CUDA_CUBLAS_LIBRARIES} ) + else () + # Dynamic Link can be done with a single function call + CUDA_ADD_CUBLAS_TO_TARGET( Gpufit ) + endif () + endif() add_definitions( -DUSE_CUBLAS ) - - target_link_libraries( Gpufit ${CUDA_CUBLAS_LIBRARIES} ) endif() elseif( CMAKE_SIZEOF_VOID_P EQUAL 4 ) message( STATUS "CUBLAS: 32-bit architecture detected; USE_CUBLAS flag ignored." ) From 5787df2ff96842a804f6fec42f1b5f00ac94f486 Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Tue, 10 Aug 2021 11:11:20 -0700 Subject: [PATCH 3/6] Added scripts for binary release, install, and testing in linux --- Gpufit/tests/CMakeLists.txt | 8 ++++++++ Gpufit/tests/test_all.sh | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 Gpufit/tests/test_all.sh diff --git a/Gpufit/tests/CMakeLists.txt b/Gpufit/tests/CMakeLists.txt index 2f037499..cd31a990 100644 --- a/Gpufit/tests/CMakeLists.txt +++ b/Gpufit/tests/CMakeLists.txt @@ -10,3 +10,11 @@ add_boost_test( Gpufit Gauss_Fit_2D_Rotated ) add_boost_test( Gpufit Cauchy_Fit_2D_Elliptic ) add_boost_test( Gpufit Fletcher_Powell_Helix_Fit ) add_boost_test( Gpufit Brown_Dennis_Fit ) + +if( UNIX ) + # Copy over run tests script + file(COPY "${CMAKE_SOURCE_DIR}/Gpufit/tests/test_all.sh" + DESTINATION "${CMAKE_BINARY_DIR}" + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + ) +endif() diff --git a/Gpufit/tests/test_all.sh b/Gpufit/tests/test_all.sh new file mode 100755 index 00000000..640f9058 --- /dev/null +++ b/Gpufit/tests/test_all.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +printf "Gauss 2D Rotated\n" +./Gpufit_Test_Gauss_Fit_2D_Rotated + +printf "\nGauss 2D Elliptic\n" +./Gpufit_Test_Gauss_Fit_2D_Elliptic + +printf "\nGauss 2D\n" +./Gpufit_Test_Gauss_Fit_2D + +printf "\nGauss 1D\n" +./Gpufit_Test_Gauss_Fit_1D + +printf "\nLinear 1D\n" +./Gpufit_Test_Linear_Fit_1D + +printf "\nFletcher Powell Helix\n" +./Gpufit_Test_Fletcher_Powell_Helix_Fit + +printf "\nError Handling\n" +./Gpufit_Test_Error_Handling + +printf "\nCauchy Fit 2D Elliptic\n" +./Gpufit_Test_Cauchy_Fit_2D_Elliptic + +printf "\nBrown Dennis\n" +./Gpufit_Test_Brown_Dennis_Fit + +printf "\nTest Consistency\n" +./Cpufit_Gpufit_Test_Consistency + + + From 14f79f5d45c66db377b6e95c20c2319f8716b5a8 Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Tue, 10 Aug 2021 11:24:37 -0700 Subject: [PATCH 4/6] added linux python install script --- CMakeLists.txt | 7 +++++++ package/install_gpufit_python.sh | 3 +++ 2 files changed, 10 insertions(+) create mode 100644 package/install_gpufit_python.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 898353fd..fb78d781 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -184,6 +184,13 @@ if( PYTHONINTERP_FOUND ) "${Python_WORKING_DIRECTORY}" ) endif() + if( UNIX ) + # Copy over install file for python integration + configure_file( "${CMAKE_SOURCE_DIR}/package/install_gpufit_python.sh" + "${CMAKE_BINARY_DIR}/install_gpufit_python.sh" + COPYONLY + ) + endif() endif() # Tests diff --git a/package/install_gpufit_python.sh b/package/install_gpufit_python.sh new file mode 100644 index 00000000..47fe32f7 --- /dev/null +++ b/package/install_gpufit_python.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +pip3 install pyGpufit/dist/pyGpufit-1.1.0-py2.py3-none-any.whl From f283f450b20cdd2da4964bda88f12e786c205f8c Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Tue, 10 Aug 2021 10:59:33 -0700 Subject: [PATCH 5/6] updated file permissions on copy for linux python install --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb78d781..c83065d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -186,9 +186,9 @@ if( PYTHONINTERP_FOUND ) endif() if( UNIX ) # Copy over install file for python integration - configure_file( "${CMAKE_SOURCE_DIR}/package/install_gpufit_python.sh" - "${CMAKE_BINARY_DIR}/install_gpufit_python.sh" - COPYONLY + file(COPY "${CMAKE_SOURCE_DIR}/package/install_gpufit_python.sh" + DESTINATION "${CMAKE_BINARY_DIR}" + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() endif() From 95b136e8560a096f40b79f57e6403c5fdb9c35eb Mon Sep 17 00:00:00 2001 From: Sam Barnes Date: Tue, 10 Aug 2021 11:04:57 -0700 Subject: [PATCH 6/6] updated version in linus python install script --- package/install_gpufit_python.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/install_gpufit_python.sh b/package/install_gpufit_python.sh index 47fe32f7..d31584c7 100644 --- a/package/install_gpufit_python.sh +++ b/package/install_gpufit_python.sh @@ -1,3 +1,3 @@ #!/bin/bash -pip3 install pyGpufit/dist/pyGpufit-1.1.0-py2.py3-none-any.whl +pip3 install pyGpufit/dist/pyGpufit-1.2.0-py2.py3-none-any.whl