Skip to content

Commit

Permalink
examples/PyOpenCL: update & fix
Browse files Browse the repository at this point in the history
  • Loading branch information
franz committed Apr 4, 2024
1 parent 6363203 commit aad934f
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 67 deletions.
105 changes: 49 additions & 56 deletions examples/PyOpenCL/CMakeLists.txt
Expand Up @@ -32,14 +32,16 @@ set(TS_SRCDIR "${TS_BASEDIR}/src/${TS_NAME}")
# is not included in pyopencl release tars. For now force using git
set(EXAMPLES_USE_GIT_MASTER 1)

set(GIT_TAG v2024.1)

if(EXAMPLES_USE_GIT_MASTER)
set(FETCH_SOURCE
GIT_REPOSITORY "https://github.com/inducer/pyopencl.git"
GIT_TAG v2023.1.4
GIT_TAG ${GIT_TAG}
${GIT_OPTIONS}
GIT_SUBMODULES "pyopencl/compyte")
else()
set(FETCH_SOURCE URL "https://github.com/inducer/pyopencl/archive/v2023.1.4.tar.gz")
set(FETCH_SOURCE URL "https://github.com/inducer/pyopencl/archive/${GIT_TAG}.tar.gz")
endif()

if(NOT TESTS_USE_ICD)
Expand All @@ -48,7 +50,6 @@ elseif(NOT BASH)
message(STATUS "Disabling testsuite ${TS_NAME}, can't find bash shell")
else()

find_program(VIRTUALENV NAMES "virtualenv")
find_package(Python3 3.8 COMPONENTS Interpreter Development)
if(NOT Python3_FOUND)
message(STATUS "Disabling testsuite ${TS_NAME}, can't find suitable python3")
Expand All @@ -58,68 +59,60 @@ else()
set(PYTHON_INTERP "${Python3_EXECUTABLE}")
endif()

if(VIRTUALENV)

message(STATUS "Enabling testsuite ${TS_NAME}")
list(APPEND ACTUALLY_ENABLED_TESTSUITES "${TS_NAME}")
set(ACTUALLY_ENABLED_TESTSUITES ${ACTUALLY_ENABLED_TESTSUITES} PARENT_SCOPE)

ExternalProject_Add(
${TS_NAME}
PREFIX "${TS_BASEDIR}"
${FETCH_SOURCE}

PATCH_COMMAND /bin/sh -c "patch -N -r- -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/CL_UNORM_INT24.patch || echo patch already applied"

# have to use external scripts, because CMake has /bin/sh hardcoded,
# and /bin/sh on Ubuntu is dash, which doesn't support "source"
# command.
CONFIGURE_COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/configure.sh"
"${TS_BASEDIR}"
"${TS_BUILDDIR}"
"${TS_SRCDIR}"
"${VIRTUALENV}"
"${PYTHON_INTERP}"

BUILD_COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/build.sh"
"${TS_BASEDIR}"
"${TS_BUILDDIR}"
"${TS_SRCDIR}"

INSTALL_COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/install.sh"
"${TS_BASEDIR}"
"${TS_BUILDDIR}"
"${TS_SRCDIR}"
message(STATUS "Enabling testsuite ${TS_NAME}")
list(APPEND ACTUALLY_ENABLED_TESTSUITES "${TS_NAME}")
set(ACTUALLY_ENABLED_TESTSUITES ${ACTUALLY_ENABLED_TESTSUITES} PARENT_SCOPE)

ExternalProject_Add(
${TS_NAME}
PREFIX "${TS_BASEDIR}"
${FETCH_SOURCE}

UPDATE_COMMAND ${GIT_CMD} stash push --quiet --include-untracked -m "Saved changes" && ${GIT_CMD} checkout ${GIT_TAG}

# have to use external scripts, because CMake has /bin/sh hardcoded,
# and /bin/sh on Ubuntu is dash, which doesn't support "source"
# command.
CONFIGURE_COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/configure.sh"
"${TS_BASEDIR}"
"${TS_BUILDDIR}"
"${TS_SRCDIR}"
"${PYTHON_INTERP}"

BUILD_COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/build.sh"
"${TS_BASEDIR}"
"${TS_BUILDDIR}"
"${TS_SRCDIR}"

INSTALL_COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/install.sh"
"${TS_BASEDIR}"
"${TS_BUILDDIR}"
"${TS_SRCDIR}"
)


set_target_properties(${TS_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(prepare_examples ${TS_NAME})
set_target_properties(${TS_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE)
add_dependencies(prepare_examples ${TS_NAME})

# add_test(NAME "PyOpenCL_" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" )
add_test(NAME "PyOpenCL_test_algorithm" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_algorithm.py )
add_test(NAME "PyOpenCL_test_array" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_array.py )
add_test(NAME "PyOpenCL_test_arrays_in_structs" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_arrays_in_structs.py )
add_test(NAME "PyOpenCL_test_clmath" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_clmath.py )
add_test(NAME "PyOpenCL_test_clrandom" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_clrandom.py )
add_test(NAME "PyOpenCL_test_enqueue_copy" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_enqueue_copy.py )
add_test(NAME "PyOpenCL_test_algorithm" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_algorithm.py )
add_test(NAME "PyOpenCL_test_array" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_array.py )
add_test(NAME "PyOpenCL_test_arrays_in_structs" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_arrays_in_structs.py )
add_test(NAME "PyOpenCL_test_clmath" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_clmath.py )
add_test(NAME "PyOpenCL_test_clrandom" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_clrandom.py )
add_test(NAME "PyOpenCL_test_enqueue_copy" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_enqueue_copy.py )
# The wrapper test seems to be broken. Tests an AMD topology constructor
# which is not found. Doesn't seem to have anything to do with PoCL-
# add_test(NAME "PyOpenCL_test_wrapper" COMMAND "${BASH}" "${CMAKE_CURRENT_SOURCE_DIR}/runtest.sh" "${TS_BASEDIR}" "${TS_BUILDDIR}" "${TS_SRCDIR}" test_wrapper.py )

set_tests_properties("PyOpenCL_test_algorithm"
"PyOpenCL_test_array" "PyOpenCL_test_arrays_in_structs"
"PyOpenCL_test_clmath" "PyOpenCL_test_clrandom"
"PyOpenCL_test_enqueue_copy" #"PyOpenCL_test_wrapper"
PROPERTIES
ENVIRONMENT "PYOPENCL_NO_CACHE=1;PYOPENCL_TEST=portable"
COST 400.0
LABELS "PyOpenCL")

else()
set_tests_properties("PyOpenCL_test_algorithm"
"PyOpenCL_test_array" "PyOpenCL_test_arrays_in_structs"
"PyOpenCL_test_clmath" "PyOpenCL_test_clrandom"
"PyOpenCL_test_enqueue_copy" #"PyOpenCL_test_wrapper"
PROPERTIES
ENVIRONMENT "PYOPENCL_NO_CACHE=1;PYOPENCL_TEST=portable"
COST 400.0
LABELS "PyOpenCL")

message(STATUS "Disabling testsuite ${TS_NAME}, requires python virtualenv")

endif()

endif()
10 changes: 2 additions & 8 deletions examples/PyOpenCL/README
Expand Up @@ -2,14 +2,8 @@ Installation:

$ mkdir PyOpenCL-build && cd PyOpenCL-build
$ git clone --recursive git://github.com/inducer/pyopencl
$ apt-get install python-pip python-virtualenv python-numpy python-mako python-dev

(or equivalent, for example:
curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py
sudo pip install virtualenv)

$ virtualenv --system-site-packages mypy
$ apt-get install python-pip python-numpy python-mako python-dev
$ python -m venv --system-site-packages mypy
$ source mypy/bin/activate
$ cd pyopencl
$ ./configure.py
Expand Down
5 changes: 2 additions & 3 deletions examples/PyOpenCL/configure.sh
Expand Up @@ -3,7 +3,6 @@
TS_BASEDIR="$1"
TS_BUILDDIR="$2"
TS_SRCDIR="$3"
VIRTUALENV="$4"
PYTH="$5"
PYTH="$4"

cd "${TS_BASEDIR}/src" && "${VIRTUALENV}" "--python=$PYTH" "PyOpenCL-build" && cd "${TS_SRCDIR}" && ${TS_BUILDDIR}/bin/pip3 install mako pybind11 pytest && ${TS_BUILDDIR}/bin/python3 configure.py
cd "${TS_BASEDIR}/src" && $PYTH -m venv --clear "${TS_BUILDDIR}" && cd "${TS_SRCDIR}" && ${TS_BUILDDIR}/bin/pip3 install mako pybind11 pytest numpy && ${TS_BUILDDIR}/bin/python3 configure.py

0 comments on commit aad934f

Please sign in to comment.