Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build fixes to lapacke, GLEW. Updating Boost compute. Bug fix to median. #1423

Merged
merged 4 commits into from May 23, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Expand Up @@ -63,7 +63,7 @@ IF(BUILD_GRAPHICS)

IF(FORGE_FOUND)
ADD_DEFINITIONS(-DGLEW_MX -DWITH_GRAPHICS)
INCLUDE("${CMAKE_MODULE_PATH}/FindGLEWmx.cmake")
FIND_PACKAGE(GLEWmx REQUIRED)

INCLUDE_DIRECTORIES(
${FORGE_INCLUDE_DIRECTORIES}
Expand Down
10 changes: 5 additions & 5 deletions CMakeModules/FindForge.cmake
Expand Up @@ -73,9 +73,9 @@ FIND_LIBRARY(FORGE_LIBRARY
NAMES forge
HINTS "${FORGE_PACKAGE_DIR}/lib")

INCLUDE("${CMAKE_MODULE_PATH}/FindGLEWmx.cmake")
FIND_PACKAGE(GLEWmx REQUIRED)

IF(GLEWmx_FOUND AND OPENGL_FOUND)
IF(GLEWMX_FOUND AND OPENGL_FOUND)
IF(FORGE_INCLUDE_DIRECTORIES)
SET(FORGE_INCLUDE_DIRECTORIES ${FORGE_INCLUDE_DIRECTORIES} ${GLEW_INCLUDE_DIR}
CACHE INTERNAL "All include dirs required for FORGE'")
Expand All @@ -90,10 +90,10 @@ IF(GLEWmx_FOUND AND OPENGL_FOUND)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FORGE DEFAULT_MSG FORGE_LIBRARIES FORGE_INCLUDE_DIRECTORIES)
MARK_AS_ADVANCED(FORGE_LIBRARIES FORGE_INCLUDE_DIRECTORIES)

ELSE(GLEWmx_FOUND AND OPENGL_FOUND)
IF(NOT GLEWmx_FOUND)
ELSE(GLEWMX_FOUND AND OPENGL_FOUND)
IF(NOT GLEWMX_FOUND)
MESSAGE(FATAL_ERROR "GLEW-MX Not Found")
ELSEIF(NOT OPENGL_FOUND)
MESSAGE(FATAL_ERROR "OpenGL Not Found")
ENDIF()
ENDIF(GLEWmx_FOUND AND OPENGL_FOUND)
ENDIF(GLEWMX_FOUND AND OPENGL_FOUND)
1 change: 1 addition & 0 deletions CMakeModules/FindGLEWmx.cmake
Expand Up @@ -87,5 +87,6 @@ ENDIF(USE_GLEWmx_STATIC)
MARK_AS_ADVANCED(GLEWmxs_LIBRARY GLEWmxd_LIBRARY GLEWmx_LIBRARY GLEW_INCLUDE_DIR)

INCLUDE(FindPackageHandleStandardArgs)
# Sets GLEWMX_FOUND
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLEWmx DEFAULT_MSG
GLEW_INCLUDE_DIR GLEWmx_LIBRARY)
2 changes: 1 addition & 1 deletion CMakeModules/FindLAPACKE.cmake
Expand Up @@ -143,7 +143,7 @@ ELSE(PC_LAPACKE_FOUND)
ENDIF(LAPACKE_ROOT_DIR)
ENDIF(PC_LAPACKE_FOUND)

IF(LAPACKE_LIB AND LAPACK_LIB)
IF(PC_LAPACKE_FOUND OR (LAPACKE_LIB AND LAPACK_LIB))
SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
ENDIF()
IF(LAPACKE_INCLUDES)
Expand Down
6 changes: 3 additions & 3 deletions CMakeModules/build_boost_compute.cmake
@@ -1,9 +1,9 @@
# If using a commit, remove the v prefix to VER in URL.
# If using a tag, don't use v in VER
# This is because of how github handles it's release tar balls
SET(VER 0.5)
SET(URL https://github.com/boostorg/compute/archive/v${VER}.tar.gz)
SET(MD5 69a52598ac539d3b7f6005a3dd2b6f58)
SET(VER boost-1.61.0)
SET(URL https://github.com/boostorg/compute/archive/${VER}.tar.gz)
SET(MD5 7e1c433b48825d8cb2effa963823aec8)

SET(thirdPartyDir "${CMAKE_BINARY_DIR}/third_party")
SET(srcDir "${thirdPartyDir}/compute-${VER}")
Expand Down
27 changes: 25 additions & 2 deletions src/api/c/median.cpp
Expand Up @@ -27,14 +27,30 @@ template<typename T>
static double median(const af_array& in)
{
dim_t nElems = getInfo(in).elements();
double mid = (nElems + 1) / 2;
af_seq mdSpan[1]= {af_make_seq(mid-1, mid, 1)};
dim4 dims(nElems, 1, 1, 1);

af_array temp = 0;
AF_CHECK(af_moddims(&temp, in, 1, dims.get()));
const Array<T> input = getArray<T>(temp);

// Shortcut cases for 1 or 2 elements
if(nElems == 1) {
T result;
AF_CHECK(af_get_data_ptr((void*)&result, in));
return result;
} else if(nElems == 2) {
T result[2];
AF_CHECK(af_get_data_ptr((void*)&result, in));
if (input.isFloating()) {
return division(result[0] + result[1], 2.0);
} else {
return division(result[0] + result[1], 2.0);
}
}

double mid = (nElems + 1) / 2;
af_seq mdSpan[1]= {af_make_seq(mid-1, mid, 1)};

Array<T> sortedArr = sort<T, true>(input, 0);

af_array sarrHandle = getHandle<T>(sortedArr);
Expand Down Expand Up @@ -66,6 +82,13 @@ template<typename T>
static af_array median(const af_array& in, const dim_t dim)
{
const Array<T> input = getArray<T>(in);

// Shortcut cases for 1 element along selected dimension
if(input.dims()[dim] == 1) {
Array<T> result = copyArray<T>(input);
return getHandle<T>(result);
}

Array<T> sortedIn = sort<T, true>(input, dim);

int dimLength = input.dims()[dim];
Expand Down