[med-svn] [Git][med-team/libhmsbeagle][upstream] New upstream version 4.0.1+dfsg

Pierre Gruet (@pgt) gitlab at salsa.debian.org
Mon Dec 16 09:16:36 GMT 2024



Pierre Gruet pushed to branch upstream at Debian Med / libhmsbeagle


Commits:
c135b442 by Pierre Gruet at 2024-10-08T11:17:43+02:00
New upstream version 4.0.1+dfsg
- - - - -


12 changed files:

- + .github/workflows/ci.yaml
- CMakeLists.txt
- README.md
- examples/CMakeLists.txt
- libhmsbeagle/CMakeLists.txt
- libhmsbeagle/CPU/BeagleCPUPlugin.cpp
- libhmsbeagle/CPU/BeagleCPUSSEPlugin.cpp
- libhmsbeagle/CPU/CMakeLists.txt
- libhmsbeagle/CPU/SSEDefinitions.h
- libhmsbeagle/CPU/sse2neon.h
- libhmsbeagle/GPU/KernelLauncher.cpp
- hmsbeagle-1.pc → libhmsbeagle/hmsbeagle-1.pc.in


Changes:

=====================================
.github/workflows/ci.yaml
=====================================
@@ -0,0 +1,59 @@
+name: CI
+
+on:
+  push:
+    branches:
+    - master
+  pull_request:
+    branches:
+    - master
+
+jobs:
+  build:
+    name: Build on Linux x86_64
+    runs-on: ubuntu-latest
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout at v4
+
+    - name: Install dependencies
+      run: |
+        sudo apt-get update
+        sudo apt-get install -y cmake file
+
+    - name: Build
+      run: |
+        mkdir build
+        cd build
+        cmake ..
+        make -j
+        file libhmsbeagle/libhmsbeagle.so.* | grep x86-64
+
+  build-aarch64:
+    name: Build on Linux aarch64
+    runs-on: ubuntu-latest
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout at v4
+
+    - name: Build
+      uses: uraimo/run-on-arch-action at v2
+      with:
+        arch: aarch64
+        distro: ubuntu20.04
+        githubToken: ${{ github.token }}
+        dockerRunArgs: |
+          --volume "${PWD}:/beagle-lib"
+        install: |
+          apt-get update -q -y
+          apt-get install -q -y cmake gcc g++ openjdk-11-jdk file
+        run: |
+          export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64
+          cd /beagle-lib
+          mkdir build
+          cd build
+          cmake ..
+          make -j
+          file libhmsbeagle/libhmsbeagle.so.* | grep aarch64


=====================================
CMakeLists.txt
=====================================
@@ -4,16 +4,22 @@ project(BEAGLE)
 set(BEAGLE_PACKAGE_NAME "libhmsbeagle")
 set(BEAGLE_VERSION_MAJOR "4")
 set(BEAGLE_VERSION_MINOR "0")
-set(BEAGLE_VERSION_PATCH "0")
+set(BEAGLE_VERSION_PATCH "1")
+
+set(GENERIC_API_VERSION "1")
 
 set(BEAGLE_VERSION "${BEAGLE_VERSION_MAJOR}.${BEAGLE_VERSION_MINOR}.${BEAGLE_VERSION_PATCH}")
 set(BEAGLE_PLUGIN_VERSION "${BEAGLE_VERSION_MAJOR}${BEAGLE_VERSION_MINOR}")
 
+message(STATUS "BEAGLE_VERSION = ${BEAGLE_VERSION}")
+message(STATUS "BEAGLE_PLUGIN_VERSION = ${BEAGLE_PLUGIN_VERSION}")
+
 set(BEAGLE_OPTIMIZE_FOR_NATIVE_ARCH true)
 
 option(BUILD_OPENCL "Build beagle with OpenCL library" ON)
 option(BUILD_CUDA "Build beagle with CUDA library" ON)
 option(BUILD_JNI "Build beagle with JNI library" ON)
+option(BUILD_SSE "Build beagle with SSE library" ON)
 
 # Old config.h settings
 


=====================================
README.md
=====================================
@@ -27,8 +27,8 @@ The paper describing the algorithms used for calculating likelihoods of sequence
 
 ### Current binary installers
 
-* [BEAGLE v4.0.0 for macOS universal](https://github.com/beagle-dev/beagle-lib/releases/download/v4.0.0/BEAGLE.v4.0.0.pkg)
-* [BEAGLE v4.0.0 for Windows 64-bit](https://github.com/beagle-dev/beagle-lib/releases/download/v4.0.0/BEAGLE.v4.0.0.msi)
+* [BEAGLE v4.0.0 for macOS universal](https://github.com/beagle-dev/beagle-lib/releases/download/v4.0.0/BEAGLE-4.0.0-Darwin-x86-ARM.pkg)
+* [BEAGLE v4.0.0 for Windows 64-bit](https://github.com/beagle-dev/beagle-lib/releases/download/v4.0.0/BEAGLE-4.0.0-win64.msi)
 
 ### Previous binary installers
 


=====================================
examples/CMakeLists.txt
=====================================
@@ -30,16 +30,24 @@ add_executable(synthetictest
 
 target_link_libraries(hmctest
 	hmsbeagle
-	hmsbeagle-cpu-sse
+#	hmsbeagle-cpu-sse
 	hmsbeagle-cpu
 	${CMAKE_DL_LIBS})
 
 target_link_libraries(synthetictest
 		hmsbeagle
-		hmsbeagle-cpu-sse
+#		hmsbeagle-cpu-sse
 		hmsbeagle-cpu
 		${CMAKE_DL_LIBS})
 
+if(BUILD_SSE)
+	target_link_libraries(hmctest
+		hmsbeagle-cpu-sse)
+		
+	target_link_libraries(synthetictest
+		hmsbeagle-cpu-sse)		
+endif(BUILD_SSE)
+
 add_test(hmctest hmctest)
 
 #target_link_libraries(hmctest5 hmsbeagle ${CMAKE_DL_LIBS})


=====================================
libhmsbeagle/CMakeLists.txt
=====================================
@@ -74,7 +74,9 @@ add_library(hmsbeagle SHARED
         ${BEAGLE_PLUGIN_SOURCE}
         )
 
-set_target_properties(hmsbeagle PROPERTIES PUBLIC_HEADER "beagle.h;platform.h")
+set_target_properties(hmsbeagle PROPERTIES
+                                PUBLIC_HEADER "beagle.h;platform.h"
+                                VERSION ${GENERIC_API_VERSION})
 
 if(NOT WIN32 AND NOT APPLE)
 	target_link_libraries(hmsbeagle ${CMAKE_DL_LIBS})
@@ -86,12 +88,43 @@ if(BUILD_JNI)
     add_subdirectory(JNI)
 endif(BUILD_JNI)
 
+set(PKG "hmsbeagle-${GENERIC_API_VERSION}")
+
 install(TARGETS hmsbeagle
+        EXPORT ${PKG}
 	LIBRARY DESTINATION ${BEAGLE_INSTALL_DIR}
 	PUBLIC_HEADER DESTINATION ${BEAGLE_HEADER_DIR}
 	COMPONENT main
+      )
+
+include(CMakePackageConfigHelpers)
+
+write_basic_package_version_file(
+    ${PKG}ConfigVersion.cmake
+    VERSION ${BEAGLE_VERSION}
+    COMPATIBILITY AnyNewerVersion
     )
 
+install(EXPORT ${PKG}
+        FILE ${PKG}Config.cmake
+        NAMESPACE ${PKG}-${BEAGLE_VERSION}::
+        DESTINATION lib/cmake/${PKG}
+      )
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/hmsbeagle-1ConfigVersion.cmake"
+        DESTINATION lib/cmake/${PKG}
+       )
+
+configure_file(
+  ${PKG}.pc.in
+  ${PKG}.pc
+  @ONLY
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PKG}.pc"
+        DESTINATION lib/pkg-config
+)
+
 if(WIN32)
     SET_TARGET_PROPERTIES(hmsbeagle
         PROPERTIES


=====================================
libhmsbeagle/CPU/BeagleCPUPlugin.cpp
=====================================
@@ -17,7 +17,7 @@ BeagleCPUPlugin::BeagleCPUPlugin() :
 Plugin("CPU", "CPU")
 {
 	BeagleResource resource;
-#ifdef __ARM64_ARCH_8__
+#ifdef __aarch64__
 	    resource.name = (char*) "CPU (arm64)";
 #else
         resource.name = (char*) "CPU (x86_64)";


=====================================
libhmsbeagle/CPU/BeagleCPUSSEPlugin.cpp
=====================================
@@ -24,7 +24,7 @@ BeagleCPUSSEPlugin::BeagleCPUSSEPlugin() :
 Plugin("CPU-SSE", "CPU-SSE")
 {
 	BeagleResource resource;
-#ifdef __ARM64_ARCH_8__
+#ifdef __aarch64__
 	    resource.name = (char*) "CPU (arm64)";
 #else
         resource.name = (char*) "CPU (x86_64)";
@@ -116,6 +116,8 @@ bool check_sse2()
   if (edx & bit_SSE2)
 	return true;
   return false;
+#elif defined(__aarch64__)
+  return false;
 #else // HAVE_CPUID.H
 	// Determine if cpuid supported:
     unsigned int res;
@@ -158,8 +160,8 @@ bool check_sse2()
     return result[3] & 0x04000000;
 #endif // HAVE_CPUID.H
 }
-#else // For Mac OS X GNU C
-#if defined(__ARM64_ARCH_8__)
+#else
+#if defined(__aarch64__)
 bool check_sse2() { return 1; }
 #else
 bool check_sse2(){


=====================================
libhmsbeagle/CPU/CMakeLists.txt
=====================================
@@ -25,6 +25,7 @@ SET_TARGET_PROPERTIES(hmsbeagle-cpu
 	SUFFIX "${BEAGLE_PLUGIN_SUFFIX}"
     )
 
+if(BUILD_SSE)
 add_library(hmsbeagle-cpu-sse SHARED
         BeagleCPU4StateSSEImpl.h
         BeagleCPU4StateSSEImpl.hpp
@@ -55,3 +56,4 @@ SET_TARGET_PROPERTIES(hmsbeagle-cpu-sse
     SOVERSION "${BEAGLE_PLUGIN_VERSION_EXTENDED}"
 	SUFFIX "${BEAGLE_PLUGIN_SUFFIX}"
     )
+endif(BUILD_SSE)


=====================================
libhmsbeagle/CPU/SSEDefinitions.h
=====================================
@@ -23,40 +23,12 @@
 #define DLS_USE_SSE2
 
 #if defined(DLS_USE_SSE2)
-#	if defined(__ARM64_ARCH_8__)
+#	if defined(__aarch64__)
 #		include "libhmsbeagle/CPU/sse2neon.h"
 #       define _MM_SHUFFLE2(fp1,fp0) (((fp1) << 1) | (fp0))
 #		define VEC_SHUFFLE0(a,b)	_mm_shuffle_pd(a, b, _MM_SHUFFLE2(0,0)) // vreinterpretq_f64_m128d(a)
 #		define VEC_SHUFFLE1(a,b)	_mm_shuffle_pd(a, b, _MM_SHUFFLE2(1,1)) // vreinterpretq_f64_m128d(a)
-#       if __has_builtin(__builtin_shufflevector)
-#       	define _mm_shuffle_pd(a,b,imm)                                \
-				__extension__({                                           \
-		        float64x2_t _input1 = vreinterpretq_f64_m128(a);          \
-	    	    float64x2_t _input2 = vreinterpretq_f64_m128(b);          \
-		        float64x2_t _shuf = __builtin_shufflevector(              \
-	    	        _input1, _input2, (imm) & (0x1), ((imm) >> 1) & 0x1); \
-	        	vreinterpretq_m128_f32(_shuf);                            \
-    	    })
-#		else
-#			error "Need to implement NEON translation of _mm_shuffle_pd"
-#		endif
-
-		static inline __m128 _mm_div_pd(__m128 a, __m128 b) {
-		    return vreinterpretq_m128_f64(
-        		vdivq_f64(vreinterpretq_f64_m128(a), vreinterpretq_f64_m128(b)));
-		}
-
-		static inline void _mm_store_sd(double* a, __m128 b) {
-			const auto _b = vreinterpretq_f64_m128(b);
-			a[0] = _b[0];
-		}
 
-        static inline __m128 _mm_dp_pd(__m128 lhs, __m128 rhs, const int) {
-            auto const product = vmulq_f64(vreinterpretq_f64_m128d(lhs),
-                                           vreinterpretq_f64_m128d(rhs));
-            auto const sum = product[0] + product[1]; // TODO Almost surely an more efficient way
-            return vreinterpretq_m128d_f64(vdupq_n_f64(sum));
-        }
 #   else
 #		if !defined(DLS_MACOS)
 #			include <emmintrin.h>


=====================================
libhmsbeagle/CPU/sse2neon.h
=====================================
The diff for this file was not included because it is too large.

=====================================
libhmsbeagle/GPU/KernelLauncher.cpp
=====================================
@@ -285,17 +285,12 @@ void KernelLauncher::LoadKernels() {
     fMultipleNodeSiteSquaredReduction = gpu->GetFunction(
             "kernelMultipleNodeSiteSquaredReduction");
 
-
-    fprintf(stderr, "A\n");
-
     fPartialsPartialsCrossProducts = gpu->GetFunction(
             "kernelPartialsPartialsCrossProducts");
 
     fPartialsStatesCrossProducts = gpu->GetFunction(
             "kernelPartialsStatesCrossProducts");
 
-    fprintf(stderr, "B\n");
-
     if (kPaddedStateCount == 4) { // TODO Temporary hack until kernels are written
     fPartialsPartialsByPatternBlockCheckScaling = gpu->GetFunction(
             "kernelPartialsPartialsCheckScale");


=====================================
hmsbeagle-1.pc → libhmsbeagle/hmsbeagle-1.pc.in
=====================================
@@ -1,4 +1,4 @@
-prefix=/usr/local
+prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
 libdir=${exec_prefix}/lib
 includedir=${prefix}/include
@@ -6,6 +6,6 @@ includedir=${prefix}/include
 Name: hmsbeagle
 Description: A library to calculate phylogenetic likelihoods.
 Requires:
-Version: 4.0.0
-Libs: -L${libdir} -lhmsbeagle
-Cflags: -I${includedir}/libhmsbeagle-1
+Version: @BEAGLE_VERSION@
+Libs: -L"${libdir}" -lhmsbeagle
+Cflags: -I"${includedir}/libhmsbeagle-1"



View it on GitLab: https://salsa.debian.org/med-team/libhmsbeagle/-/commit/c135b442fddb03c5045c1375e03b8a367bd7e7a7

-- 
View it on GitLab: https://salsa.debian.org/med-team/libhmsbeagle/-/commit/c135b442fddb03c5045c1375e03b8a367bd7e7a7
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20241216/d5ed2a0d/attachment-0001.htm>


More information about the debian-med-commit mailing list