From 4d7629f5d0a3b119d225f041fb23123f0730cd46 Mon Sep 17 00:00:00 2001 From: "Daniel L. Ayres" Date: Wed, 25 Apr 2018 12:34:39 +0100 Subject: [PATCH 1/8] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ff9fbc07..accb81d5 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,8 @@ The paper describing the algorithms used for calculating likelihoods of sequence ### Binary installers -* [BEAGLE v3.0.0 pre-release for Mac OS X 10.6 and later](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0-pre20180420/BEAGLE.v3.0.0pre.pkg) -* [BEAGLE v2.1 for Windows XP and later](https://www.dropbox.com/s/61z48jvruzkwkku/BEAGLE-2.1.msi) (v3.0.0 for Windows coming soon) +* [BEAGLE v3.0.0 for macOS](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0/BEAGLE.v3.0.0.pkg) +* [BEAGLE v3.0.0 for Windows 64-bit](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0/BEAGLE.v3.0.0.msi) ### Installation instructions From 6423133890a5b35fdbbbe0e71be17840a4ef6927 Mon Sep 17 00:00:00 2001 From: "Daniel L. Ayres" Date: Wed, 25 Apr 2018 12:45:44 +0100 Subject: [PATCH 2/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index accb81d5..eec14823 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The paper describing the algorithms used for calculating likelihoods of sequence ### Installation instructions -* [Instructions for installing BEAGLE on Mac OS X](https://github.com/beagle-dev/beagle-lib/wiki/MacInstallInstructions) +* [Instructions for installing BEAGLE on macOS](https://github.com/beagle-dev/beagle-lib/wiki/MacInstallInstructions) * [Instructions for installing BEAGLE on Windows](https://github.com/beagle-dev/beagle-lib/wiki/WindowsInstallInstructions) * [Instructions for installing BEAGLE on Linux](https://github.com/beagle-dev/beagle-lib/wiki/LinuxInstallInstructions) From 8cb46158de1aba1096ad9d0cb01708705a656055 Mon Sep 17 00:00:00 2001 From: "Daniel L. Ayres" Date: Wed, 2 May 2018 09:02:32 +0100 Subject: [PATCH 3/8] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index eec14823..b5691bd8 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,10 @@ The paper describing the algorithms used for calculating likelihoods of sequence * [BEAGLE v3.0.0 for macOS](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0/BEAGLE.v3.0.0.pkg) * [BEAGLE v3.0.0 for Windows 64-bit](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0/BEAGLE.v3.0.0.msi) + +* [BEAGLE v2.1.2 for Mac OS X 10.6 and later](https://www.dropbox.com/s/11kgt2jlq3lzln3/BEAGLE-2.1.2.pkg) +* [BEAGLE v2.1 for Windows XP and later](https://www.dropbox.com/s/61z48jvruzkwkku/BEAGLE-2.1.msi) + ### Installation instructions * [Instructions for installing BEAGLE on macOS](https://github.com/beagle-dev/beagle-lib/wiki/MacInstallInstructions) From d9d40da3e83fbe8fe6f162a26c190a15eb04b8bc Mon Sep 17 00:00:00 2001 From: "Daniel L. Ayres" Date: Wed, 2 May 2018 09:10:43 +0100 Subject: [PATCH 4/8] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b5691bd8..d2335027 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,8 @@ The paper describing the algorithms used for calculating likelihoods of sequence * [BEAGLE v3.0.0 for macOS](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0/BEAGLE.v3.0.0.pkg) * [BEAGLE v3.0.0 for Windows 64-bit](https://github.com/beagle-dev/beagle-lib/releases/download/v3.0.0/BEAGLE.v3.0.0.msi) - -* [BEAGLE v2.1.2 for Mac OS X 10.6 and later](https://www.dropbox.com/s/11kgt2jlq3lzln3/BEAGLE-2.1.2.pkg) -* [BEAGLE v2.1 for Windows XP and later](https://www.dropbox.com/s/61z48jvruzkwkku/BEAGLE-2.1.msi) +- [BEAGLE v2.1.2 for Mac OS X 10.6 and later](https://www.dropbox.com/s/11kgt2jlq3lzln3/BEAGLE-2.1.2.pkg) +- [BEAGLE v2.1.0 for Windows XP and later](https://www.dropbox.com/s/61z48jvruzkwkku/BEAGLE-2.1.msi) ### Installation instructions From cc72f9144bb3c1f2b1d29d3c22b43da3f18db637 Mon Sep 17 00:00:00 2001 From: Daniel L Ayres Date: Thu, 10 May 2018 17:02:37 +0100 Subject: [PATCH 5/8] GPU implementation upPartials grid array allocation fix --- libhmsbeagle/GPU/BeagleGPUImpl.h | 3 ++ libhmsbeagle/GPU/BeagleGPUImpl.hpp | 47 +++++++++++++++++------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/libhmsbeagle/GPU/BeagleGPUImpl.h b/libhmsbeagle/GPU/BeagleGPUImpl.h index 18aae713..9b850b23 100644 --- a/libhmsbeagle/GPU/BeagleGPUImpl.h +++ b/libhmsbeagle/GPU/BeagleGPUImpl.h @@ -182,6 +182,9 @@ class BeagleGPUImpl : public BeagleImpl { int* hIntegratePartitionsStartBlocks; int* hPatternsNewOrder; int* hGridOpIndices; + int* hGridStartOp; + int* hGridOpType; + int* hGridOpBlocks; unsigned int* hPtrQueue; diff --git a/libhmsbeagle/GPU/BeagleGPUImpl.hpp b/libhmsbeagle/GPU/BeagleGPUImpl.hpp index e85255b0..992267a4 100644 --- a/libhmsbeagle/GPU/BeagleGPUImpl.hpp +++ b/libhmsbeagle/GPU/BeagleGPUImpl.hpp @@ -182,6 +182,10 @@ BeagleGPUImpl::~BeagleGPUImpl() { // gpu->FreeMemory(dPartitionOffsets); free(hPartitionOffsets); free(hGridOpIndices); + + free(hGridStartOp); + free(hGridOpType); + free(hGridOpBlocks); } gpu->FreeMemory(dPartialsOrigin); @@ -770,6 +774,10 @@ void BeagleGPUImpl::allocateMultiGridBuffers() { checkHostMemory(hPartitionOffsets); hGridOpIndices = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount * (ptrsPerOp-2)); + + hGridStartOp = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount); + hGridOpType = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount); + hGridOpBlocks = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount); } #ifdef CUDA @@ -1942,9 +1950,6 @@ int BeagleGPUImpl::upPartials(bool byPartition, } int gridLaunches = 0; - std::vector gridStartOp(operationCount); - std::vector gridOpType(operationCount); - std::vector gridOpBlocks(operationCount); int parentMinIndex = 0; int lastStreamIndex = 0; int gridOpIndex = 0; @@ -2087,10 +2092,10 @@ int BeagleGPUImpl::upPartials(bool byPartition, if (op == 0) { newLaunch = true; - } else if (opType != gridOpType[gridLaunches-1]) { + } else if (opType != hGridOpType[gridLaunches-1]) { newLaunch = true; } else if (child1Index >= parentMinIndex || child2Index >= parentMinIndex) { - for (int i=gridStartOp[gridLaunches-1]; i < op; i++) { + for (int i=hGridStartOp[gridLaunches-1]; i < op; i++) { int previousParentIndex = operations[i * numOps]; if (child1Index == previousParentIndex || child2Index == previousParentIndex) { newLaunch = true; @@ -2100,9 +2105,9 @@ int BeagleGPUImpl::upPartials(bool byPartition, } if (newLaunch) { - gridStartOp[gridLaunches] = op; - gridOpBlocks[gridLaunches] = opBlockCount; - gridOpType[gridLaunches] = opType; + hGridStartOp[gridLaunches] = op; + hGridOpBlocks[gridLaunches] = opBlockCount; + hGridOpType[gridLaunches] = opType; parentMinIndex = parIndex; if (!byPartition) { @@ -2116,7 +2121,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, gridLaunches++; } else { - gridOpBlocks[gridLaunches-1] += opBlockCount; + hGridOpBlocks[gridLaunches-1] += opBlockCount; } if (parIndex < parentMinIndex) @@ -2266,21 +2271,21 @@ int BeagleGPUImpl::upPartials(bool byPartition, gpu->MemcpyHostToDevice(dPartialsPtrs, hPartialsPtrs, transferSize); #endif // int statesStatesCount = 0; - gridStartOp[gridLaunches] = operationCount; + hGridStartOp[gridLaunches] = operationCount; int gridStart = 0; for (int i=0; i < gridLaunches; i++) { - int gridSize = gridOpBlocks[i]; -// printf("%d ", (gridStartOp[i+1] - gridStartOp[i])); + int gridSize = hGridOpBlocks[i]; +// printf("%d ", (hGridStartOp[i+1] - hGridStartOp[i])); int rescaleMulti = BEAGLE_OP_NONE; GPUPtr scalingFactorsMulti = (GPUPtr)NULL; - if (gridOpType[i] < 0) { + if (hGridOpType[i] < 0) { scalingFactorsMulti = dScalingFactors[0]; rescaleMulti = 0; - gridOpType[i] *= -1; + hGridOpType[i] *= -1; } -// printf("rescaleMulti[%d] = %d, opType = %d\n", i, rescaleMulti, gridOpType[i]); +// printf("rescaleMulti[%d] = %d, opType = %d\n", i, rescaleMulti, hGridOpType[i]); - if (((gridStartOp[i+1] - gridStartOp[i]) == 1) && !byPartition && (kDeviceCode != BEAGLE_OPENCL_DEVICE_AMD_GPU)) { + if (((hGridStartOp[i+1] - hGridStartOp[i]) == 1) && !byPartition && (kDeviceCode != BEAGLE_OPENCL_DEVICE_AMD_GPU)) { int child1Index = hGridOpIndices[i*6+0]; int child2Index = hGridOpIndices[i*6+1]; int parIndex = hGridOpIndices[i*6+2]; @@ -2303,7 +2308,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, // printf("op[%03d]: c1 %03d (%d), c2 %03d (%d), c1m %03d, c2m %03d, par %03d, rescale %d\n", i, child1Index, (tipStates1?1:0), child2Index, (tipStates2?1:0), child1TransMatIndex, child2TransMatIndex, parIndex, rescaleMulti); - if (gridOpType[i] == 1) { + if (hGridOpType[i] == 1) { kernels->PartialsPartialsPruningDynamicScaling(partials1, partials2, partials3, matrices1, matrices2, scalingFactorsMulti, cumulativeScalingBuffer, @@ -2311,7 +2316,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, kPaddedPatternCount, kCategoryCount, rescaleMulti, -1, -1); - } else if (gridOpType[i] == 2) { + } else if (hGridOpType[i] == 2) { if (tipStates1 != 0) { kernels->StatesPartialsPruningDynamicScaling(tipStates1, partials2, partials3, matrices1, matrices2, scalingFactorsMulti, @@ -2339,14 +2344,14 @@ int BeagleGPUImpl::upPartials(bool byPartition, -1, -1); } } else { - if (gridOpType[i] == 1) { + if (hGridOpType[i] == 1) { kernels->PartialsPartialsPruningMulti(dPartialsOrigin, dMatrices[0], scalingFactorsMulti, dPartialsPtrs, kPaddedPatternCount, gridStart, gridSize, rescaleMulti); - } else if (gridOpType[i] == 2) { + } else if (hGridOpType[i] == 2) { kernels->StatesPartialsPruningMulti(dStatesOrigin, dPartialsOrigin, dMatrices[0], scalingFactorsMulti, dPartialsPtrs, @@ -2367,7 +2372,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, // gpu->SynchronizeHost(); } // printf("gridLaunches total = %d\n", gridLaunches); -// printf(" gridSize total = %d\n", gridStart/gridOpBlocks[0]); +// printf(" gridSize total = %d\n", gridStart/hGridOpBlocks[0]); // printf("statesStatesCount = %d\n", statesStatesCount); // exit(-1); #ifdef FW_OPENCL From 7226a42ce6c85bb68068582432494f04cde7a9a2 Mon Sep 17 00:00:00 2001 From: Daniel L Ayres Date: Thu, 10 May 2018 20:23:02 +0100 Subject: [PATCH 6/8] more robust fix for GPU implementation grid allocations --- libhmsbeagle/GPU/BeagleGPUImpl.h | 3 -- libhmsbeagle/GPU/BeagleGPUImpl.hpp | 59 +++++++++++++++++------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/libhmsbeagle/GPU/BeagleGPUImpl.h b/libhmsbeagle/GPU/BeagleGPUImpl.h index 9b850b23..18aae713 100644 --- a/libhmsbeagle/GPU/BeagleGPUImpl.h +++ b/libhmsbeagle/GPU/BeagleGPUImpl.h @@ -182,9 +182,6 @@ class BeagleGPUImpl : public BeagleImpl { int* hIntegratePartitionsStartBlocks; int* hPatternsNewOrder; int* hGridOpIndices; - int* hGridStartOp; - int* hGridOpType; - int* hGridOpBlocks; unsigned int* hPtrQueue; diff --git a/libhmsbeagle/GPU/BeagleGPUImpl.hpp b/libhmsbeagle/GPU/BeagleGPUImpl.hpp index 992267a4..87bbe418 100644 --- a/libhmsbeagle/GPU/BeagleGPUImpl.hpp +++ b/libhmsbeagle/GPU/BeagleGPUImpl.hpp @@ -182,10 +182,6 @@ BeagleGPUImpl::~BeagleGPUImpl() { // gpu->FreeMemory(dPartitionOffsets); free(hPartitionOffsets); free(hGridOpIndices); - - free(hGridStartOp); - free(hGridOpType); - free(hGridOpBlocks); } gpu->FreeMemory(dPartialsOrigin); @@ -774,10 +770,6 @@ void BeagleGPUImpl::allocateMultiGridBuffers() { checkHostMemory(hPartitionOffsets); hGridOpIndices = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount * (ptrsPerOp-2)); - - hGridStartOp = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount); - hGridOpType = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount); - hGridOpBlocks = (int*) malloc(sizeof(int) * kInternalPartialsBufferCount); } #ifdef CUDA @@ -1950,10 +1942,19 @@ int BeagleGPUImpl::upPartials(bool byPartition, } int gridLaunches = 0; + int* gridStartOp; + int* gridOpType; + int* gridOpBlocks; int parentMinIndex = 0; int lastStreamIndex = 0; int gridOpIndex = 0; + if (kUsingMultiGrid) { + gridStartOp = (int*) malloc(sizeof(int) * (operationCount + 1)); + gridOpType = (int*) malloc(sizeof(int) * (operationCount + 1)); + gridOpBlocks = (int*) malloc(sizeof(int) * (operationCount + 1)); + } + int anyRescale = BEAGLE_OP_NONE; if (kUsingMultiGrid && (kFlags & BEAGLE_FLAG_SCALING_MANUAL)) { for (int op = 0; op < operationCount; op++) { @@ -2092,10 +2093,10 @@ int BeagleGPUImpl::upPartials(bool byPartition, if (op == 0) { newLaunch = true; - } else if (opType != hGridOpType[gridLaunches-1]) { + } else if (opType != gridOpType[gridLaunches-1]) { newLaunch = true; } else if (child1Index >= parentMinIndex || child2Index >= parentMinIndex) { - for (int i=hGridStartOp[gridLaunches-1]; i < op; i++) { + for (int i=gridStartOp[gridLaunches-1]; i < op; i++) { int previousParentIndex = operations[i * numOps]; if (child1Index == previousParentIndex || child2Index == previousParentIndex) { newLaunch = true; @@ -2105,9 +2106,9 @@ int BeagleGPUImpl::upPartials(bool byPartition, } if (newLaunch) { - hGridStartOp[gridLaunches] = op; - hGridOpBlocks[gridLaunches] = opBlockCount; - hGridOpType[gridLaunches] = opType; + gridStartOp[gridLaunches] = op; + gridOpBlocks[gridLaunches] = opBlockCount; + gridOpType[gridLaunches] = opType; parentMinIndex = parIndex; if (!byPartition) { @@ -2121,7 +2122,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, gridLaunches++; } else { - hGridOpBlocks[gridLaunches-1] += opBlockCount; + gridOpBlocks[gridLaunches-1] += opBlockCount; } if (parIndex < parentMinIndex) @@ -2271,21 +2272,21 @@ int BeagleGPUImpl::upPartials(bool byPartition, gpu->MemcpyHostToDevice(dPartialsPtrs, hPartialsPtrs, transferSize); #endif // int statesStatesCount = 0; - hGridStartOp[gridLaunches] = operationCount; + gridStartOp[gridLaunches] = operationCount; int gridStart = 0; for (int i=0; i < gridLaunches; i++) { - int gridSize = hGridOpBlocks[i]; -// printf("%d ", (hGridStartOp[i+1] - hGridStartOp[i])); + int gridSize = gridOpBlocks[i]; +// printf("%d ", (gridStartOp[i+1] - gridStartOp[i])); int rescaleMulti = BEAGLE_OP_NONE; GPUPtr scalingFactorsMulti = (GPUPtr)NULL; - if (hGridOpType[i] < 0) { + if (gridOpType[i] < 0) { scalingFactorsMulti = dScalingFactors[0]; rescaleMulti = 0; - hGridOpType[i] *= -1; + gridOpType[i] *= -1; } -// printf("rescaleMulti[%d] = %d, opType = %d\n", i, rescaleMulti, hGridOpType[i]); +// printf("rescaleMulti[%d] = %d, opType = %d\n", i, rescaleMulti, gridOpType[i]); - if (((hGridStartOp[i+1] - hGridStartOp[i]) == 1) && !byPartition && (kDeviceCode != BEAGLE_OPENCL_DEVICE_AMD_GPU)) { + if (((gridStartOp[i+1] - gridStartOp[i]) == 1) && !byPartition && (kDeviceCode != BEAGLE_OPENCL_DEVICE_AMD_GPU)) { int child1Index = hGridOpIndices[i*6+0]; int child2Index = hGridOpIndices[i*6+1]; int parIndex = hGridOpIndices[i*6+2]; @@ -2308,7 +2309,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, // printf("op[%03d]: c1 %03d (%d), c2 %03d (%d), c1m %03d, c2m %03d, par %03d, rescale %d\n", i, child1Index, (tipStates1?1:0), child2Index, (tipStates2?1:0), child1TransMatIndex, child2TransMatIndex, parIndex, rescaleMulti); - if (hGridOpType[i] == 1) { + if (gridOpType[i] == 1) { kernels->PartialsPartialsPruningDynamicScaling(partials1, partials2, partials3, matrices1, matrices2, scalingFactorsMulti, cumulativeScalingBuffer, @@ -2316,7 +2317,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, kPaddedPatternCount, kCategoryCount, rescaleMulti, -1, -1); - } else if (hGridOpType[i] == 2) { + } else if (gridOpType[i] == 2) { if (tipStates1 != 0) { kernels->StatesPartialsPruningDynamicScaling(tipStates1, partials2, partials3, matrices1, matrices2, scalingFactorsMulti, @@ -2344,14 +2345,14 @@ int BeagleGPUImpl::upPartials(bool byPartition, -1, -1); } } else { - if (hGridOpType[i] == 1) { + if (gridOpType[i] == 1) { kernels->PartialsPartialsPruningMulti(dPartialsOrigin, dMatrices[0], scalingFactorsMulti, dPartialsPtrs, kPaddedPatternCount, gridStart, gridSize, rescaleMulti); - } else if (hGridOpType[i] == 2) { + } else if (gridOpType[i] == 2) { kernels->StatesPartialsPruningMulti(dStatesOrigin, dPartialsOrigin, dMatrices[0], scalingFactorsMulti, dPartialsPtrs, @@ -2372,7 +2373,7 @@ int BeagleGPUImpl::upPartials(bool byPartition, // gpu->SynchronizeHost(); } // printf("gridLaunches total = %d\n", gridLaunches); -// printf(" gridSize total = %d\n", gridStart/hGridOpBlocks[0]); +// printf(" gridSize total = %d\n", gridStart/gridOpBlocks[0]); // printf("statesStatesCount = %d\n", statesStatesCount); // exit(-1); #ifdef FW_OPENCL @@ -2385,6 +2386,12 @@ int BeagleGPUImpl::upPartials(bool byPartition, gpu->SynchronizeDevice(); } + if (kUsingMultiGrid) { + free(gridStartOp); + free(gridOpType); + free(gridOpBlocks); + } + #ifdef BEAGLE_DEBUG_SYNCH gpu->SynchronizeHost(); #endif From eda9a6ea2b64fc92471e032efb5678c5b91f3656 Mon Sep 17 00:00:00 2001 From: Daniel L Ayres Date: Fri, 11 May 2018 11:38:08 +0100 Subject: [PATCH 7/8] updated version number to 3.0.1 --- configure.ac | 4 ++-- project/beagle-macos-packages/BEAGLE.pkgproj | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index b9dcc4fb..5663030f 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.59]) -AC_INIT(libhmsbeagle, 3.0.0, beagle-dev@googlegroups.com) +AC_INIT(libhmsbeagle, 3.0.1, beagle-dev@googlegroups.com) : ${CXXFLAGS=" -std=c++11 -O3"} @@ -13,7 +13,7 @@ GENERIC_LIBRARY_NAME=libhmsbeagle #release versioning GENERIC_MAJOR_VERSION=3 GENERIC_MINOR_VERSION=0 -GENERIC_MICRO_VERSION=0 +GENERIC_MICRO_VERSION=1 #API version GENERIC_API_VERSION=1 diff --git a/project/beagle-macos-packages/BEAGLE.pkgproj b/project/beagle-macos-packages/BEAGLE.pkgproj index 5b0f33dd..bbc309f1 100644 --- a/project/beagle-macos-packages/BEAGLE.pkgproj +++ b/project/beagle-macos-packages/BEAGLE.pkgproj @@ -786,7 +786,7 @@ USE_HFS+_COMPRESSION VERSION - 3.0.0 + 3.0.1 PROJECT_COMMENTS From bdca7326e849e2e5cdca0da7b73241aa68c292a3 Mon Sep 17 00:00:00 2001 From: Daniel Ayres Date: Fri, 11 May 2018 12:08:07 +0100 Subject: [PATCH 8/8] updated version in vs-2017 project --- project/beagle-vs-2017/libhmsbeagle/PropertySheet.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/beagle-vs-2017/libhmsbeagle/PropertySheet.props b/project/beagle-vs-2017/libhmsbeagle/PropertySheet.props index 8afe98c0..9739e9dc 100644 --- a/project/beagle-vs-2017/libhmsbeagle/PropertySheet.props +++ b/project/beagle-vs-2017/libhmsbeagle/PropertySheet.props @@ -2,7 +2,7 @@ - 3.0 + 3.0.1 30