From fa63006787361e3cbbe01dc7797d300371adac43 Mon Sep 17 00:00:00 2001 From: YangZhou Date: Thu, 17 Nov 2022 12:52:56 +0800 Subject: [PATCH] rrm redundant file which compile audio --- .gitignore | 4 + CMakeLists.txt | 68 -------- audio/paddleaudio/_extension.py | 10 +- audio/paddleaudio/kaldi/kaldi.py | 16 +- audio/paddleaudio/sox_effects/__init__.py | 2 +- audio/paddleaudio/sox_effects/sox_effects.py | 8 +- audio/tests/backends/sox_io/.info_test.py.swp | Bin 16384 -> 0 bytes cmake/FindGFortranLibs.cmake | 153 ----------------- cmake/external/openblas.cmake | 66 -------- cmake/external/pybind.cmake | 11 -- cmake/summary.cmake | 45 ----- tools/setup_helpers/__init__.py | 1 - tools/setup_helpers/extension.py | 157 ------------------ 13 files changed, 22 insertions(+), 519 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 audio/tests/backends/sox_io/.info_test.py.swp delete mode 100644 cmake/FindGFortranLibs.cmake delete mode 100644 cmake/external/openblas.cmake delete mode 100644 cmake/external/pybind.cmake delete mode 100644 cmake/summary.cmake delete mode 100644 tools/setup_helpers/__init__.py delete mode 100644 tools/setup_helpers/extension.py diff --git a/.gitignore b/.gitignore index 07d5499b3..49efb1cad 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,10 @@ paddlespeech/audio/_paddleaudio.so paddlespeech/audio/lib/libpaddleaudio.so paddlespeech/version.py +audio/dist/ +audio/fc_patch/ +audio/paddleaudio/version.py + docs/build/ docs/topic/ctc/warp-ctc/ diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 6c3e7d76f..000000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -cmake_minimum_required(VERSION 3.18 FATAL_ERROR) - -# Use compiler ID "AppleClang" instead of "Clang" for XCode. -# Not setting this sometimes makes XCode C compiler gets detected as "Clang", -# even when the C++ one is detected as "AppleClang". -cmake_policy(SET CMP0010 NEW) -cmake_policy(SET CMP0025 NEW) - -# Suppress warning flags in default MSVC configuration. It's not -# mandatory that we do this (and we don't if cmake is old), but it's -# nice when it's possible, and it's possible on our Windows configs. -if(NOT CMAKE_VERSION VERSION_LESS 3.15.0) - cmake_policy(SET CMP0092 NEW) -endif() - - -project(paddlespeech) - - -# check and set CMAKE_CXX_STANDARD -string(FIND "${CMAKE_CXX_FLAGS}" "-std=c++" env_cxx_standard) -if(env_cxx_standard GREATER -1) - message( - WARNING "C++ standard version definition detected in environment variable." - "paddlespeech requires -std=c++14. Please remove -std=c++ settings in your environment.") -endif() - - -set(CMAKE_CXX_STANDARD 14) -set(CMAKE_C_STANDARD 11) - -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) -set(CMAKE_VERBOSE_MAKEFILE ON) - - - -# Options -option(BUILD_SOX "Build libsox statically" ON) -option(BUILD_MAD "Enable libmad" ON) -option(BUILD_KALDI "Build kaldi statically" ON) -option(BUILD_PADDLEAUDIO_PYTHON_EXTENSION "Build Python extension" ON) - - -# cmake -set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${PROJECT_SOURCE_DIR}/cmake;${PROJECT_SOURCE_DIR}/cmake/external") - - -# fc_patch dir -set(FETCHCONTENT_QUIET off) -get_filename_component(fc_patch "fc_patch" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}") -set(FETCHCONTENT_BASE_DIR ${fc_patch}) - - -include(openblas) -include(pybind) - -# packages -find_package(Python3 COMPONENTS Interpreter Development) -#find_package(pybind11 CONFIG REQUIRED) - - -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -O0 -Wall -g") -add_subdirectory(paddlespeech/audio) - -# Summary -include(cmake/summary.cmake) -onnx_print_configuration_summary() diff --git a/audio/paddleaudio/_extension.py b/audio/paddleaudio/_extension.py index e00aa129d..9ff571d49 100644 --- a/audio/paddleaudio/_extension.py +++ b/audio/paddleaudio/_extension.py @@ -106,7 +106,7 @@ def _load_lib(lib: str) -> bool: if not path.exists(): warnings.warn("lib path is not exists:" + str(path)) return False - #paddleaudio.audio.ops.load_library(path) + #paddleaudio.ops.load_library(path) ops.load_library(path) return True @@ -119,7 +119,7 @@ def _init_ffmpeg(): if _FFMPEG_INITIALIZED: return - if not paddleaudio.audio._paddlleaudio.is_ffmpeg_available(): + if not paddleaudio._paddlleaudio.is_ffmpeg_available(): raise RuntimeError( "paddlleaudio is not compiled with FFmpeg integration. Please set USE_FFMPEG=1 when compiling paddlleaudio." ) @@ -132,9 +132,9 @@ def _init_ffmpeg(): import paddllespeech.audio._paddlleaudio_ffmpeg # noqa - paddleaudio.audio._paddlleaudio.ffmpeg_init() - if paddleaudio.audio._paddlleaudio.ffmpeg_get_log_level() > 8: - paddleaudio.audio._paddlleaudio.ffmpeg_set_log_level(8) + paddleaudio._paddlleaudio.ffmpeg_init() + if paddleaudio._paddlleaudio.ffmpeg_get_log_level() > 8: + paddleaudio._paddlleaudio.ffmpeg_set_log_level(8) _FFMPEG_INITIALIZED = True diff --git a/audio/paddleaudio/kaldi/kaldi.py b/audio/paddleaudio/kaldi/kaldi.py index ff0fd8d9d..1a3010acd 100644 --- a/audio/paddleaudio/kaldi/kaldi.py +++ b/audio/paddleaudio/kaldi/kaldi.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import paddlespeech -from paddlespeech.audio._internal import module_utils +import paddleaudio +from paddleaudio._internal import module_utils __all__ = [ 'fbank', @@ -50,9 +50,9 @@ def fbank( htk_compat: bool=False, use_log_fbank: bool=True, use_power: bool=True): - frame_opts = paddlespeech.audio._paddleaudio.FrameExtractionOptions() - mel_opts = paddlespeech.audio._paddleaudio.MelBanksOptions() - fbank_opts = paddlespeech.audio._paddleaudio.FbankOptions() + frame_opts = paddleaudio._paddleaudio.FrameExtractionOptions() + mel_opts = paddleaudio._paddleaudio.MelBanksOptions() + fbank_opts = paddleaudio._paddleaudio.FbankOptions() frame_opts.samp_freq = samp_freq frame_opts.frame_shift_ms = frame_shift_ms frame_opts.frame_length_ms = frame_length_ms @@ -81,7 +81,7 @@ def fbank( fbank_opts.htk_compat = htk_compat fbank_opts.use_log_fbank = use_log_fbank fbank_opts.use_power = use_power - feat = paddlespeech.audio._paddleaudio.ComputeFbank(frame_opts, mel_opts, fbank_opts, wav) + feat = paddleaudio._paddleaudio.ComputeFbank(frame_opts, mel_opts, fbank_opts, wav) return feat @@ -107,7 +107,7 @@ def pitch(wav, recompute_frame: int=500, nccf_ballast_online: bool=False, snip_edges: bool=True): - pitch_opts = paddlespeech.audio._paddleaudio.PitchExtractionOptions() + pitch_opts = paddleaudio._paddleaudio.PitchExtractionOptions() pitch_opts.samp_freq = samp_freq pitch_opts.frame_shift_ms = frame_shift_ms pitch_opts.frame_length_ms = frame_length_ms @@ -128,5 +128,5 @@ def pitch(wav, pitch_opts.recompute_frame = recompute_frame pitch_opts.nccf_ballast_online = nccf_ballast_online pitch_opts.snip_edges = snip_edges - pitch = paddlespeech.audio._paddleaudio.ComputeKaldiPitch(pitch_opts, wav) + pitch = paddleaudio._paddleaudio.ComputeKaldiPitch(pitch_opts, wav) return pitch diff --git a/audio/paddleaudio/sox_effects/__init__.py b/audio/paddleaudio/sox_effects/__init__.py index d68158776..d78be0de1 100644 --- a/audio/paddleaudio/sox_effects/__init__.py +++ b/audio/paddleaudio/sox_effects/__init__.py @@ -1,4 +1,4 @@ -from paddlespeech.audio._internal import module_utils as _mod_utils +from paddleaudio._internal import module_utils as _mod_utils from .sox_effects import ( apply_effects_file, diff --git a/audio/paddleaudio/sox_effects/sox_effects.py b/audio/paddleaudio/sox_effects/sox_effects.py index e9b839c1a..4444b98e3 100644 --- a/audio/paddleaudio/sox_effects/sox_effects.py +++ b/audio/paddleaudio/sox_effects/sox_effects.py @@ -3,9 +3,9 @@ from typing import List, Optional, Tuple import paddle import numpy -from paddlespeech.audio._internal import module_utils as _mod_utils -from paddlespeech.audio.utils.sox_utils import list_effects -from paddlespeech.audio import _paddleaudio as paddleaudio +from paddleaudio._internal import module_utils as _mod_utils +from paddleaudio.utils.sox_utils import list_effects +from paddleaudio import _paddleaudio as paddleaudio #code is from: https://github.com/pytorch/audio/blob/main/torchaudio/sox_effects/sox_effects.py @@ -235,4 +235,4 @@ def apply_effects_file( ret = paddleaudio.sox_effects_apply_effects_file(path, effects, normalize, channels_first, format) if ret is not None: return (paddle.to_tensor(ret[0]), ret[1]) - raise RuntimeError("Failed to load audio from {}".format(path)) \ No newline at end of file + raise RuntimeError("Failed to load audio from {}".format(path)) diff --git a/audio/tests/backends/sox_io/.info_test.py.swp b/audio/tests/backends/sox_io/.info_test.py.swp deleted file mode 100644 index 0d775acdca276d8d63d357210b1d86fa5d7ac9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2ZKxf^8OO(3Yc(}Wq#qPprW@g&8&1wS_uQbD)C+l$K-6feCW%1G^Md%&`LfCnhz>QL~0RV(EqdVd(OGn zXp@R@7Ji(aoo9Ato}K5JdFD*3v3dOletB&L!*u~;uO17HgO|>pb!YbscKfv3?Fnb9 zIYF88UzQVu!ZGCX&TU3-d-L+%^5#(CdJvdn_57{%xtXB8QJAJJZ}6lvrt6|>T5dg* zK^W9q!kCec8Po%JhmNO~({^>rs(HPkuU8M129yRC)WCUcygAk&k)_(t_=QV0Ehw!r zl?Idslm?Urlm?Urlm?Urlm?UrPA?6F-kEFUN8bagEEeQKLQ*49DMi##{L72f&<_#FatIM4KVP_ zvl!b0HiHrH-uD@M9{dK_UsVoQMuMKM6@eUG$rw*ANJ~HDbdaJZ9m6#( zXNpfwa&7fBt8dbVinXjT&^_tvf#`U)BLEu~bZ|sZ4wBU9X~h%a^k^oS-*H@&S1rD9vheb1 zsY{c^{#7~Dq?^(Urza<>JXP(aCYIY`POE19nH=aCHL)97c2Jv=jvgI<(c6|SD_Ik% zQPdY{w;>ba1Wd=%>0w1PMJQ@>Vphw$QD`s_x>EBX2CrNE=mpsA<}^A^O|K z4dHNOS{gH4pmUrW%MI7}r4iaal!{(!$~LEAsFO^E+I~Xga1)I~o;9pEUe!Q^`9=2e zbp~Shv>u4v6Bvjjv*17+GQf()8S0shSIn^I$=v3O!?bK<-xfC*h*_z_kwo4R?h1aT zmGl#JC;9+gPBen;5W?Q(LRumc%q$NoO^g7EYOf0bAA)m+}!bzf+I z?7ikJc-U<2>bSn-A!ah(T)?kU=Q~|Hw8$#cveEd0`e=BR^jB66Tp`Dm_jk0Kxx8`) zrRdtSqRKI`j9pgc}zPShm)-T@j8qF%@Z+LpOa=R)~dx>tY)6eAnz6 zVLt!ZR*HgYQ(^P7+|#P6yh&cBSnpgDEM zHCE*($Ed0&(W=U8`^t@2^<8QC8>}6cQ{_Wf`Ae~&m)r_?+jl!Fr^C<-R@UoNaBkgJ z&2T$)uNS(0cF4MAyRCXhSWZ29nxDKbr1i9-^f31Dv)HjGqq!hn%QEsw+2k3!t5OGI zfn?H&^WmUOno{Caaek>X>QJP*LV;<~ui@mvHo@I#T97ab>$dQ(eJkf$=` z_3XfF%Y~9!(z4W|KF?H*roq&+@wEPek4y`f94BK*lPx#BbA$9QZho4=YQpPr5pc&# zx@WjfD0hUm)#Axpk|!PEh$-o(B}3uU$~;YG{ylw=epp8F|NDq3cTo(A_&@#s{wU)5 zzknIA9W=mk#P08cKZ9R^TfwE^9mMQ!gTvrO@DSJsromNU6<7(DfWwI2p9c4V5c~vO z0^UFz{|9goIN%Df7`%cQ{`cTPuoujN&0qpt3_e8+{{eUxya0BBZD2iUfY%Vy{~H_x zTfi+~8Tbfs{ULBaxEb68t^iH21W>&H3V0Sg079@CTm#mDpMs-^^Irh_0mc3mK(YUE z#Q0BvC&6BDE#TlS==cfnICu;^3Vsbp_d9{QzFQg~H<=n@ja+eMlv!=A>kgJ#x=!0D zBf3r*x;}z^oPniQFtC+VT5G{k%(v2tOZGW5s<7`-MM0~yw)hkOqp0gMQB_U z2xNKKl=%g5k7@B8q~R+t!TaZfiUCarm6;&jbT|IcYbk>)7SW z2UmYQvo))l)SNjo$fX? n{y$E6C&Q$aHDMwzuL1j3OQ*})@f)%x3f8gsI`uPBzcqaU+kow2 diff --git a/cmake/FindGFortranLibs.cmake b/cmake/FindGFortranLibs.cmake deleted file mode 100644 index 3bb9bb1a2..000000000 --- a/cmake/FindGFortranLibs.cmake +++ /dev/null @@ -1,153 +0,0 @@ -#.rst: -# FindGFortranLibs -# -------- -# https://github.com/Argonne-National-Laboratory/PIPS/blob/master/cmake/Modules/FindGFortranLibs.cmake -# https://enccs.github.io/cmake-workshop/cxx-fortran/ -# -# Find gcc Fortran compiler & library paths -# -# The module defines the following variables: -# -# :: -# -# -# GFORTRANLIBS_FOUND - true if system has gfortran -# LIBGFORTRAN_LIBRARIES - path to libgfortran -# LIBQUADMATH_LIBRARIES - path to libquadmath -# GFORTRAN_LIBARIES_DIR - directory containing libgfortran, libquadmath -# GFORTRAN_INCLUDE_DIR - directory containing gfortran/gcc headers -# LIBGOMP_LIBRARIES - path to libgomp -# LIBGOMP_INCLUDE_DIR - directory containing omp.h header -# GFORTRAN_VERSION_STRING - version of gfortran found -# -set(CMAKE_REQUIRED_QUIET ${LIBIOMP_FIND_QUIETLY}) - -if(NOT CMAKE_REQUIRED_QUIET) - message(STATUS "Looking for gfortran related libraries...") -endif() - -enable_language(Fortran) -if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") - - # Basically, call "gfortran -v" to dump compiler info to the string - # GFORTRAN_VERBOSE_STR, which will be used to get necessary paths - message(STATUS "Extracting library and header information by calling 'gfortran -v'...") - execute_process(COMMAND "${CMAKE_Fortran_COMPILER}" "-v" ERROR_VARIABLE - GFORTRAN_VERBOSE_STR RESULT_VARIABLE FLAG) - - # For debugging - message(STATUS "'gfortran -v' returned:") - message(STATUS "${GFORTRAN_VERBOSE_STR}") - - # Detect gfortran version - string(REGEX MATCH "gcc version [^\t\n ]+" GFORTRAN_VER_STR "${GFORTRAN_VERBOSE_STR}") - string(REGEX REPLACE "gcc version ([^\t\n ]+)" "\\1" GFORTRAN_VERSION_STRING "${GFORTRAN_VER_STR}") - message(STATUS "Detected gfortran version ${GFORTRAN_VERSION_STRING}") - unset(GFORTRAN_VER_STR) - - set(MATCH_REGEX "[^\t\n ]+[\t\n ]+") - set(REPLACE_REGEX "([^\t\n ]+)") - - # Find architecture for compiler - string(REGEX MATCH "Target: [^\t\n ]+" - GFORTRAN_ARCH_STR "${GFORTRAN_VERBOSE_STR}") - message(STATUS "Architecture string: ${GFORTRAN_ARCH_STR}") - string(REGEX REPLACE "Target: ([^\t\n ]+)" "\\1" - GFORTRAN_ARCH "${GFORTRAN_ARCH_STR}") - message(STATUS "Detected gfortran architecture: ${GFORTRAN_ARCH}") - unset(GFORTRAN_ARCH_STR) - - # Find install prefix, if it exists; if not, use default - string(REGEX MATCH "--prefix=[^\t\n ]+[\t\n ]+" - GFORTRAN_PREFIX_STR "${GFORTRAN_VERBOSE_STR}") - if(NOT GFORTRAN_PREFIX_STR) - message(STATUS "Detected default gfortran prefix") - set(GFORTRAN_PREFIX_DIR "/usr/local") # default prefix for gcc install - else() - string(REGEX REPLACE "--prefix=([^\t\n ]+)" "\\1" - GFORTRAN_PREFIX_DIR "${GFORTRAN_PREFIX_STR}") - endif() - message(STATUS "Detected gfortran prefix: ${GFORTRAN_PREFIX_DIR}") - unset(GFORTRAN_PREFIX_STR) - - # Find install exec-prefix, if it exists; if not, use default - string(REGEX MATCH "--exec-prefix=[^\t\n ]+[\t\n ]+" "\\1" - GFORTRAN_EXEC_PREFIX_STR "${GFORTRAN_VERBOSE_STR}") - if(NOT GFORTRAN_EXEC_PREFIX_STR) - message(STATUS "Detected default gfortran exec-prefix") - set(GFORTRAN_EXEC_PREFIX_DIR "${GFORTRAN_PREFIX_DIR}") - else() - string(REGEX REPLACE "--exec-prefix=([^\t\n ]+)" "\\1" - GFORTRAN_EXEC_PREFIX_DIR "${GFORTRAN_EXEC_PREFIX_STR}") - endif() - message(STATUS "Detected gfortran exec-prefix: ${GFORTRAN_EXEC_PREFIX_DIR}") - UNSET(GFORTRAN_EXEC_PREFIX_STR) - - # Find library directory and include directory, if library directory specified - string(REGEX MATCH "--libdir=[^\t\n ]+" - GFORTRAN_LIB_DIR_STR "${GFORTRAN_VERBOSE_STR}") - if(NOT GFORTRAN_LIB_DIR_STR) - message(STATUS "Found --libdir flag -- not found") - message(STATUS "Using default gfortran library & include directory paths") - set(GFORTRAN_LIBRARIES_DIR - "${GFORTRAN_EXEC_PREFIX_DIR}/lib/gcc/${GFORTRAN_ARCH}/${GFORTRAN_VERSION_STRING}") - string(CONCAT GFORTRAN_INCLUDE_DIR "${GFORTRAN_LIBRARIES_DIR}" "/include") - else() - message(STATUS "Found --libdir flag -- yes") - string(REGEX REPLACE "--libdir=([^\t\n ]+)" "\\1" - GFORTRAN_LIBRARIES_DIR "${GFORTRAN_LIB_DIR_STR}") - string(CONCAT GFORTRAN_INCLUDE_DIR "${GFORTRAN_LIBRARIES_DIR}" "/gcc/" "${GFORTRAN_ARCH}" "/" "${GFORTRAN_VERSION_STRING}" "/include") - endif() - message(STATUS "gfortran libraries path: ${GFORTRAN_LIBRARIES_DIR}") - message(STATUS "gfortran include path dir: ${GFORTRAN_INCLUDE_DIR}") - unset(GFORTRAN_LIB_DIR_STR) - - # There are lots of other build options for gcc & gfortran. For now, the - # options implemented above should cover a lot of common use cases. - - # Clean up be deleting the output string from "gfortran -v" - unset(GFORTRAN_VERBOSE_STR) - - # Find paths for libgfortran, libquadmath, libgomp - # libgomp needed for OpenMP support without Clang - find_library(LIBGFORTRAN_LIBRARIES NAMES gfortran libgfortran - HINTS ${GFORTRAN_LIBRARIES_DIR}) - find_library(LIBQUADMATH_LIBRARIES NAMES quadmath libquadmath - HINTS ${GFORTRAN_LIBRARIES_DIR}) - find_library(LIBGOMP_LIBRARIES NAMES gomp libgomp - HINTS ${GFORTRAN_LIBRARIES_DIR}) - - # Find OpenMP headers - find_path(LIBGOMP_INCLUDE_DIR NAMES omp.h HINTS ${GFORTRAN_INCLUDE_DIR}) - -else() - message(STATUS "CMAKE_Fortran_COMPILER_ID does not match 'GNU'!") -endif() - -include(FindPackageHandleStandardArgs) - -# Required: libgfortran, libquadmath, path for gfortran libraries -# Optional: libgomp, path for OpenMP headers, path for gcc/gfortran headers -find_package_handle_standard_args(GFortranLibs - REQUIRED_VARS LIBGFORTRAN_LIBRARIES LIBQUADMATH_LIBRARIES GFORTRAN_LIBRARIES_DIR - VERSION_VAR GFORTRAN_VERSION_STRING) - -if(GFORTRANLIBS_FOUND) - message(STATUS "Looking for gfortran libraries -- found") - message(STATUS "gfortran version: ${GFORTRAN_VERSION_STRING}") -else() - message(STATUS "Looking for gfortran libraries -- not found") -endif() - -mark_as_advanced(LIBGFORTRAN_LIBRARIES LIBQUADMATH_LIBRARIES - LIBGOMP_LIBRARIES LIBGOMP_INCLUDE_DIR - GFORTRAN_LIBRARIES_DIR GFORTRAN_INCLUDE_DIR) -# FindGFortranLIBS.cmake ends here - - -message(STATUS LIBGFORTRAN_LIBRARIES= ${LIBGFORTRAN_LIBRARIES}) -message(STATUS LIBQUADMATH_LIBRARIES= ${LIBQUADMATH_LIBRARIES}) -message(STATUS LIBGOMP_LIBRARIES= ${LIBGOMP_LIBRARIES}) -message(STATUS LIBGOMP_INCLUDE_DIR= ${LIBGOMP_INCLUDE_DIR}) -message(STATUS GFORTRAN_LIBRARIES_DIR= ${GFORTRAN_LIBRARIES_DIR}) -message(STATUS GFORTRAN_INCLUDE_DIR= ${GFORTRAN_INCLUDE_DIR}) \ No newline at end of file diff --git a/cmake/external/openblas.cmake b/cmake/external/openblas.cmake deleted file mode 100644 index c93549703..000000000 --- a/cmake/external/openblas.cmake +++ /dev/null @@ -1,66 +0,0 @@ -include(FetchContent) -include(ExternalProject) - -set(OpenBLAS_SOURCE_DIR ${fc_patch}/OpenBLAS-src) -set(OpenBLAS_PREFIX ${fc_patch}/OpenBLAS-prefix) - -# ###################################################################################################################### -# OPENBLAS https://github.com/lattice/quda/blob/develop/CMakeLists.txt#L575 -# ###################################################################################################################### -enable_language(Fortran) - -include(FortranCInterface) - -# # Clang doesn't have a Fortran compiler in its suite (yet), -# # so detect libraries for gfortran; we need equivalents to -# # libgfortran and libquadmath, which are implicitly -# # linked by flags in CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES -# include(FindGFortranLibs REQUIRED) -# # Add directory containing libgfortran and libquadmath to -# # linker. Should also contain libgomp, if not using -# # Intel OpenMP runtime -# link_directories(${GFORTRAN_LIBRARIES_DIR}) -# # gfortan dir in the docker. -# link_directories(/usr/local/gcc-8.2/lib64) -# # if you are working with C and Fortran -# FortranCInterface_VERIFY() - -# # if you are working with C++ and Fortran -# FortranCInterface_VERIFY(CXX) - - -#TODO: switch to CPM -include(GNUInstallDirs) -ExternalProject_Add( - OPENBLAS - GIT_REPOSITORY https://github.com/xianyi/OpenBLAS.git - GIT_TAG v0.3.10 - GIT_SHALLOW YES - PREFIX ${OpenBLAS_PREFIX} - SOURCE_DIR ${OpenBLAS_SOURCE_DIR} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= - CMAKE_GENERATOR "Unix Makefiles") - - -# https://cmake.org/cmake/help/latest/module/ExternalProject.html?highlight=externalproject_get_property#external-project-definition -ExternalProject_Get_Property(OPENBLAS INSTALL_DIR) -set(OpenBLAS_INSTALL_PREFIX ${INSTALL_DIR}) -add_library(openblas STATIC IMPORTED) -add_dependencies(openblas OPENBLAS) -set_target_properties(openblas PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES Fortran) - -set_target_properties(openblas PROPERTIES IMPORTED_LOCATION ${OpenBLAS_INSTALL_PREFIX}/lib/libopenblas.a) - - -link_directories(${OpenBLAS_INSTALL_PREFIX}/lib) -include_directories(${OpenBLAS_INSTALL_PREFIX}/include/openblas) - - -set(OPENBLAS_LIBRARIES - ${OpenBLAS_INSTALL_PREFIX}/lib/libopenblas.a -) - -add_library(libopenblas INTERFACE) -add_dependencies(libopenblas openblas) -target_include_directories(libopenblas INTERFACE ${OpenBLAS_INSTALL_PREFIX}/include/openblas) -target_link_libraries(libopenblas INTERFACE ${OPENBLAS_LIBRARIES}) \ No newline at end of file diff --git a/cmake/external/pybind.cmake b/cmake/external/pybind.cmake deleted file mode 100644 index ec51c1e55..000000000 --- a/cmake/external/pybind.cmake +++ /dev/null @@ -1,11 +0,0 @@ -include(FetchContent) -include(ExternalProject) - -FetchContent_Declare( - pybind - URL https://github.com/pybind/pybind11/archive/refs/tags/v2.10.0.zip - URL_HASH SHA256=225df6e6dea7cea7c5754d4ed954e9ca7c43947b849b3795f87cb56437f1bd19 -) -FetchContent_MakeAvailable(pybind) -include_directories(${pybind_SOURCE_DIR}/include) - diff --git a/cmake/summary.cmake b/cmake/summary.cmake deleted file mode 100644 index f04d44698..000000000 --- a/cmake/summary.cmake +++ /dev/null @@ -1,45 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -# Prints accumulated ONNX configuration summary -function (onnx_print_configuration_summary) - message(STATUS "") - message(STATUS "******** Summary ********") - message(STATUS " CMake version : ${CMAKE_VERSION}") - message(STATUS " CMake command : ${CMAKE_COMMAND}") - message(STATUS " System : ${CMAKE_SYSTEM_NAME}") - message(STATUS " C++ compiler : ${CMAKE_CXX_COMPILER}") - message(STATUS " C++ compiler version : ${CMAKE_CXX_COMPILER_VERSION}") - message(STATUS " CXX flags : ${CMAKE_CXX_FLAGS}") - message(STATUS " Build type : ${CMAKE_BUILD_TYPE}") - get_directory_property(tmp DIRECTORY ${PROJECT_SOURCE_DIR} COMPILE_DEFINITIONS) - message(STATUS " Compile definitions : ${tmp}") - message(STATUS " CMAKE_PREFIX_PATH : ${CMAKE_PREFIX_PATH}") - message(STATUS " CMAKE_INSTALL_PREFIX : ${CMAKE_INSTALL_PREFIX}") - message(STATUS " CMAKE_MODULE_PATH : ${CMAKE_MODULE_PATH}") - message(STATUS "") - message(STATUS " ONNX version : ${ONNX_VERSION}") - message(STATUS " ONNX NAMESPACE : ${ONNX_NAMESPACE}") - message(STATUS " ONNX_USE_LITE_PROTO : ${ONNX_USE_LITE_PROTO}") - message(STATUS " USE_PROTOBUF_SHARED_LIBS : ${ONNX_USE_PROTOBUF_SHARED_LIBS}") - message(STATUS " Protobuf_USE_STATIC_LIBS : ${Protobuf_USE_STATIC_LIBS}") - message(STATUS " ONNX_DISABLE_EXCEPTIONS : ${ONNX_DISABLE_EXCEPTIONS}") - message(STATUS " ONNX_WERROR : ${ONNX_WERROR}") - message(STATUS " ONNX_BUILD_TESTS : ${ONNX_BUILD_TESTS}") - message(STATUS " ONNX_BUILD_BENCHMARKS : ${ONNX_BUILD_BENCHMARKS}") - message(STATUS " ONNXIFI_DUMMY_BACKEND : ${ONNXIFI_DUMMY_BACKEND}") - message(STATUS " ONNXIFI_ENABLE_EXT : ${ONNXIFI_ENABLE_EXT}") - message(STATUS "") - message(STATUS " Protobuf compiler : ${PROTOBUF_PROTOC_EXECUTABLE}") - message(STATUS " Protobuf includes : ${PROTOBUF_INCLUDE_DIRS}") - message(STATUS " Protobuf libraries : ${PROTOBUF_LIBRARIES}") - message(STATUS " BUILD_ONNX_PYTHON : ${BUILD_ONNX_PYTHON}") - message(STATUS " Python version : ${Python_VERSION}") - message(STATUS " Python executable : ${Python_EXECUTABLE}") - message(STATUS " Python includes : ${Python_INCLUDE_DIR}") - message(STATUS " Python libraries : ${Python_LIBRARY}") - message(STATUS " PYBIND11 : ${pybind11_FOUND}") - message(STATUS " Pybind11 version : ${pybind11_VERSION}") - message(STATUS " Pybind11 include : ${pybind11_INCLUDE_DIR}") - message(STATUS " Pybind11 includes : ${pybind11_INCLUDE_DIRS}") - message(STATUS " Pybind11 libraries : ${pybind11_LIBRARIES}") -endfunction() \ No newline at end of file diff --git a/tools/setup_helpers/__init__.py b/tools/setup_helpers/__init__.py deleted file mode 100644 index 5d375081f..000000000 --- a/tools/setup_helpers/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .extension import * diff --git a/tools/setup_helpers/extension.py b/tools/setup_helpers/extension.py deleted file mode 100644 index fd7d1ae6b..000000000 --- a/tools/setup_helpers/extension.py +++ /dev/null @@ -1,157 +0,0 @@ -import os -import platform -import subprocess -from pathlib import Path - -import distutils.sysconfig -from setuptools import Extension -from setuptools.command.build_ext import build_ext - -__all__ = [ - "get_ext_modules", - "CMakeBuild", -] - -_THIS_DIR = Path(__file__).parent.resolve() -_ROOT_DIR = _THIS_DIR.parent.parent.resolve() -_PADDLESPEECH_DIR = _ROOT_DIR / "paddlespeech" - - -def _get_build(var, default=False): - if var not in os.environ: - return default - - val = os.environ.get(var, "0") - trues = ["1", "true", "TRUE", "on", "ON", "yes", "YES"] - falses = ["0", "false", "FALSE", "off", "OFF", "no", "NO"] - if val in trues: - return True - if val not in falses: - print(f"WARNING: Unexpected environment variable value `{var}={val}`. " - f"Expected one of {trues + falses}") - return False - - -_BUILD_SOX = False if platform.system() == "Windows" else _get_build( - "BUILD_SOX", True) -_BUILD_MAD = _get_build("BUILD_MAD", False) -_BUILD_KALDI = False if platform.system() == "Windows" else _get_build( - "BUILD_KALDI", True) -# _BUILD_RNNT = _get_build("BUILD_RNNT", True) -# _BUILD_CTC_DECODER = False if platform.system() == "Windows" else _get_build("BUILD_CTC_DECODER", True) -# _USE_FFMPEG = _get_build("USE_FFMPEG", False) -# _USE_ROCM = _get_build("USE_ROCM", torch.cuda.is_available() and torch.version.hip is not None) -# _USE_CUDA = _get_build("USE_CUDA", torch.cuda.is_available() and torch.version.hip is None) -# _USE_OPENMP = _get_build("USE_OPENMP", True) and "ATen parallel backend: OpenMP" in torch.__config__.parallel_info() -_PADDLESPEECH_CUDA_ARCH_LIST = os.environ.get("PADDLESPEECH_CUDA_ARCH_LIST", - None) - - -def get_ext_modules(): - modules = [ - Extension(name="paddlespeech.audio.lib.libpaddleaudio", sources=[]), - Extension(name="paddlespeech.audio._paddleaudio", sources=[]), - ] - return modules - - -# Based off of -# https://github.com/pybind/cmake_example/blob/580c5fd29d4651db99d8874714b07c0c49a53f8a/setup.py -class CMakeBuild(build_ext): - def run(self): - try: - subprocess.check_output(["cmake", "--version"]) - except OSError: - raise RuntimeError("CMake is not available.") from None - super().run() - - def build_extension(self, ext): - # Since two library files (libpaddleaudio and _paddleaudio) need to be - # recognized by setuptools, we instantiate `Extension` twice. (see `get_ext_modules`) - # This leads to the situation where this `build_extension` method is called twice. - # However, the following `cmake` command will build all of them at the same time, - # so, we do not need to perform `cmake` twice. - # Therefore we call `cmake` only for `paddleaudio._paddleaudio`. - if ext.name != "paddlespeech.audio._paddleaudio": - return - - extdir = os.path.abspath( - os.path.dirname(self.get_ext_fullpath(ext.name))) - - # required for auto-detection of auxiliary "native" libs - if not extdir.endswith(os.path.sep): - extdir += os.path.sep - - cfg = "Debug" if self.debug else "Release" - - cmake_args = [ - f"-DCMAKE_BUILD_TYPE={cfg}", - # f"-DCMAKE_PREFIX_PATH={torch.utils.cmake_prefix_path}", - f"-DCMAKE_INSTALL_PREFIX={extdir}", - "-DCMAKE_VERBOSE_MAKEFILE=ON", - f"-DPython_INCLUDE_DIR={distutils.sysconfig.get_python_inc()}", - f"-DPython_LIBRARY={distutils.sysconfig.get_config_var('LIBDIR')}", - f"-DBUILD_SOX:BOOL={'ON' if _BUILD_SOX else 'OFF'}", - f"-DBUILD_MAD:BOOL={'ON' if _BUILD_MAD else 'OFF'}", - # f"-DBUILD_KALDI:BOOL={'ON' if _BUILD_KALDI else 'OFF'}", - # f"-DBUILD_RNNT:BOOL={'ON' if _BUILD_RNNT else 'OFF'}", - # f"-DBUILD_CTC_DECODER:BOOL={'ON' if _BUILD_CTC_DECODER else 'OFF'}", - "-DBUILD_PADDLEAUDIO_PYTHON_EXTENSION:BOOL=ON", - # f"-DUSE_ROCM:BOOL={'ON' if _USE_ROCM else 'OFF'}", - # f"-DUSE_CUDA:BOOL={'ON' if _USE_CUDA else 'OFF'}", - # f"-DUSE_OPENMP:BOOL={'ON' if _USE_OPENMP else 'OFF'}", - # f"-DUSE_FFMPEG:BOOL={'ON' if _USE_FFMPEG else 'OFF'}", - ] - build_args = ["--target", "install"] - # Pass CUDA architecture to cmake - if _PADDLESPEECH_CUDA_ARCH_LIST is not None: - # Convert MAJOR.MINOR[+PTX] list to new style one - # defined at https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html - _arches = _PADDLESPEECH_CUDA_ARCH_LIST.replace(".", "").replace( - " ", ";").split(";") - _arches = [ - arch[:-4] if arch.endswith("+PTX") else f"{arch}-real" - for arch in _arches - ] - cmake_args += [f"-DCMAKE_CUDA_ARCHITECTURES={';'.join(_arches)}"] - - # Default to Ninja - if "CMAKE_GENERATOR" not in os.environ or platform.system() == "Windows": - cmake_args += ["-GNinja"] - - if platform.system() == "Windows": - import sys - - python_version = sys.version_info - cmake_args += [ - "-DCMAKE_C_COMPILER=cl", - "-DCMAKE_CXX_COMPILER=cl", - f"-DPYTHON_VERSION={python_version.major}.{python_version.minor}", - ] - - # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level - # across all generators. - if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: - # self.parallel is a Python 3 only way to set parallel jobs by hand - # using -j in the build_ext call, not supported by pip or PyPA-build. - if hasattr(self, "parallel") and self.parallel: - # CMake 3.12+ only. - build_args += ["-j{}".format(self.parallel)] - - if not os.path.exists(self.build_temp): - os.makedirs(self.build_temp) - - print( - f"cmake {_ROOT_DIR} {' '.join(cmake_args)}, cwd={self.build_temp}") - subprocess.check_call( - ["cmake", str(_ROOT_DIR)] + cmake_args, cwd=self.build_temp) - print(f"cmake --build . {' '.join(build_args)}, cwd={self.build_temp}") - subprocess.check_call( - ["cmake", "--build", "."] + build_args, cwd=self.build_temp) - - def get_ext_filename(self, fullname): - ext_filename = super().get_ext_filename(fullname) - ext_filename_parts = ext_filename.split(".") - without_abi = ext_filename_parts[:-2] + ext_filename_parts[-1:] - ext_filename = ".".join(without_abi) - return ext_filename