Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package clpeak for openSUSE:Factory checked in at 2026-03-14 22:22:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/clpeak (Old) and /work/SRC/openSUSE:Factory/.clpeak.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clpeak" Sat Mar 14 22:22:01 2026 rev:6 rq:1338759 version:1.1.6 Changes: -------- --- /work/SRC/openSUSE:Factory/clpeak/clpeak.changes 2025-06-18 17:59:27.032308944 +0200 +++ /work/SRC/openSUSE:Factory/.clpeak.new.8177/clpeak.changes 2026-03-14 22:23:00.082637226 +0100 @@ -1,0 +2,16 @@ +Thu Mar 12 15:46:08 UTC 2026 - Martin Hauke <[email protected]> + +- Update to version 1.1.6: + * transfer_bandwidth: allow subtest filtering with --testName + * [workflow] add macos build + * android: Add compute_char.cpp and compute_short.cpp + * android: build fix for missing aligned_alloc in API 26 + * workflows: Add github build workflows + +------------------------------------------------------------------- +Thu Mar 12 15:45:39 UTC 2026 - Martin Hauke <[email protected]> + +- Update to version 1.1.6 + * transfer_bandwidth: allow subtest filtering with --testName. + +------------------------------------------------------------------- Old: ---- clpeak-1.1.5.tar.xz New: ---- clpeak-1.1.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ clpeak.spec ++++++ --- /var/tmp/diff_new_pack.DHC6D0/_old 2026-03-14 22:23:01.418692573 +0100 +++ /var/tmp/diff_new_pack.DHC6D0/_new 2026-03-14 22:23:01.422692739 +0100 @@ -1,8 +1,8 @@ # # spec file for package clpeak # -# Copyright (c) 2025 SUSE LLC -# Copyright (c) 2015-2022, Martin Hauke <[email protected]> +# Copyright (c) 2026 SUSE LLC and contributors +# Copyright (c) 2015-2026, Martin Hauke <[email protected]> # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ Name: clpeak -Version: 1.1.5 +Version: 1.1.6 Release: 0 Summary: Find peak OpenCL capacities like bandwidth & compute License: SUSE-Public-Domain ++++++ _service ++++++ --- /var/tmp/diff_new_pack.DHC6D0/_old 2026-03-14 22:23:01.466694561 +0100 +++ /var/tmp/diff_new_pack.DHC6D0/_new 2026-03-14 22:23:01.474694893 +0100 @@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="manual"> <param name="url">https://github.com/krrishnarraj/clpeak.git</param> - <param name="revision">1.1.5</param> + <param name="revision">1.1.6</param> <param name="scm">git</param> <param name="changesgenerate">enable</param> <param name="filename">clpeak</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.DHC6D0/_old 2026-03-14 22:23:01.494695721 +0100 +++ /var/tmp/diff_new_pack.DHC6D0/_new 2026-03-14 22:23:01.498695887 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/krrishnarraj/clpeak.git</param> - <param name="changesrevision">b2e647ffb8f42aa22ce4b0194d6ef6d16d5002b0</param></service></servicedata> + <param name="changesrevision">f02e442ee618e4610c8b0cc11f4686ae1afbbcda</param></service></servicedata> (No newline at EOF) ++++++ clpeak-1.1.5.tar.xz -> clpeak-1.1.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clpeak-1.1.5/.github/workflows/build.yml new/clpeak-1.1.6/.github/workflows/build.yml --- old/clpeak-1.1.5/.github/workflows/build.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/clpeak-1.1.6/.github/workflows/build.yml 2026-03-07 16:16:38.000000000 +0100 @@ -0,0 +1,147 @@ +name: Build + +on: + push: + branches: [ master, main ] + pull_request: + branches: [ master, main ] + workflow_dispatch: + +jobs: + build-linux: + name: Linux (Debian Trixie) + runs-on: ubuntu-latest + container: + image: debian:trixie + + steps: + - name: Install dependencies + run: | + apt-get update + apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + git \ + ca-certificates \ + ocl-icd-opencl-dev \ + opencl-headers + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Mark directory as safe for git + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=Release + + - name: Build + run: cmake --build build --config Release -j$(nproc) + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: clpeak-linux-x86_64 + path: build/clpeak + + build-windows: + name: Windows + runs-on: windows-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Configure CMake + run: cmake -B build -DCMAKE_BUILD_TYPE=Release + + - name: Build + run: cmake --build build --config Release + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: clpeak-windows-x86_64 + path: build/Release/clpeak.exe + + build-macos: + name: macOS + runs-on: macos-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + brew update + brew install cmake + brew install opencl-headers || true + + - name: Configure CMake (arm64) + run: cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 + + - name: Build + run: cmake --build build --config Release + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: clpeak-macos-arm64 + path: build/clpeak + + build-android: + name: Android + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up JDK 17 (for Android SDK tools) + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Accept Android SDK licenses + run: yes | sdkmanager --licenses || true + + - name: Install Android SDK components + run: | + sdkmanager "ndk;21.4.7075529" + sdkmanager "build-tools;29.0.3" + sdkmanager "platforms;android-29" + + - name: Set up JDK 11 (for Gradle build) + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'temurin' + + - name: Build debug APK + working-directory: android + run: | + chmod +x gradlew + ./gradlew assembleDebug + + - name: Build release APK + working-directory: android + run: ./gradlew assembleRelease + + - name: Upload debug APK + uses: actions/upload-artifact@v4 + with: + name: clpeak-android-debug + path: android/app/build/outputs/apk/debug/app-debug.apk + + - name: Upload release APK + uses: actions/upload-artifact@v4 + with: + name: clpeak-android-release + path: android/app/build/outputs/apk/release/app-release-unsigned.apk diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clpeak-1.1.5/.travis.yml new/clpeak-1.1.6/.travis.yml --- old/clpeak-1.1.5/.travis.yml 2025-06-13 11:42:54.000000000 +0200 +++ new/clpeak-1.1.6/.travis.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,47 +0,0 @@ -language: cpp - -matrix: - include: - - name: "Windows" - os: windows - install: - - choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64" - - name: "Linux" - os: linux - dist: focal - - name: "Linux arm64" - os: linux - arch: arm64 - dist: focal - - name: "OSX" - os: osx - -before_script: - - git submodule update --init --recursive --remote - - mkdir build - - cd build - -script: - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release .. ; fi - - if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then cmake .. ; fi - - cmake --build . --config Release - - ctest -VV - - cmake --build . --config Release --target package - -branches: - except: - - dev - -notifications: - email: false - -deploy: - provider: releases - api_key: - secure: nWkv1F4ZP3YRWiS3g6mYWViOsijmVErbyPBdM1rn5qvai44OJxPRzoa3d24hxTJ7I+RARWxL7GFCVW5+nHOllJImL1TEWi4dMhxxwg6HyMvVKx1rS2RrHhM3kAeF4E9dAharBHi/6ecd3SvPNMdp7tsPxfMjmAVrspkSiD8ynlqT3qsDlB8TYg4ASgTniUJjxzVx5RAfR+Xja5pYctWQW++1ihKbtddtTlKxkV4uCpHCL6vKd3xHIZTl+INMOjPyIAGgQaKlbJYpexLJ6wcs4LLZhehD+dhoISigBOa0ceMqR0F5eBFRDRUbz/i253qhi5jp/JV5otOY0Z0CZiXDcsP+nx8CG9aXKFgYnSinA5qRLvOWi9rh20kpB4sURq5NqiWAlsjo7tGiPhiL5HehlNsGw6RCdXRw4wgO/3NrmO7jXj2Wmsoqx957m0yYC0tgKN5/Sh+GzD504NwY3ZxQqZ1kyE1HS8OkCARUhJ2Zc/Uc2Ka+0xwJqjZLylfWBXsgZljg8Hv4papJ+gHm3CLyMgoo7NID1lbPlcE2hhT3Ia5kDME9D8o0JpaTV+4YwqB0VpKzRQA4xPkphsd4FK4ZxRLlgKtS+HrdMOCdo/nhBDZf2eUKdwfFYrSTdtaynbiw37uX3IxyHUzuHdhuEOekonrHFvjT9yQzCItIbDNvwI0= - file_glob: true - file: clpeak-*.zip - skip_cleanup: true - on: - repo: krrishnarraj/clpeak - tags: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clpeak-1.1.5/README.md new/clpeak-1.1.6/README.md --- old/clpeak-1.1.5/README.md 2025-06-13 11:42:54.000000000 +0200 +++ new/clpeak-1.1.6/README.md 2026-03-07 16:16:38.000000000 +0100 @@ -1,6 +1,6 @@ # clpeak -[](https://app.travis-ci.com/github/krrishnarraj/clpeak) +[](https://github.com/krrishnarraj/clpeak/actions/workflows/build.yml) [](https://snapcraft.io/clpeak) A synthetic benchmarking tool to measure peak capabilities of opencl devices. It only measures the peak metrics that can be achieved using vector operations and does not represent a real-world use case diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clpeak-1.1.5/android/app/src/main/cpp/CMakeLists.txt new/clpeak-1.1.6/android/app/src/main/cpp/CMakeLists.txt --- old/clpeak-1.1.5/android/app/src/main/cpp/CMakeLists.txt 2025-06-13 11:42:54.000000000 +0200 +++ new/clpeak-1.1.6/android/app/src/main/cpp/CMakeLists.txt 2026-03-07 16:16:38.000000000 +0100 @@ -16,6 +16,8 @@ ${SRC_FOLDER}/compute_dp.cpp ${SRC_FOLDER}/compute_integer.cpp ${SRC_FOLDER}/compute_integer_fast.cpp + ${SRC_FOLDER}/compute_char.cpp + ${SRC_FOLDER}/compute_short.cpp ${SRC_FOLDER}/transfer_bandwidth.cpp ${SRC_FOLDER}/kernel_latency.cpp ${SRC_FOLDER}/entry_android.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clpeak-1.1.5/src/transfer_bandwidth.cpp new/clpeak-1.1.6/src/transfer_bandwidth.cpp --- old/clpeak-1.1.5/src/transfer_bandwidth.cpp 2025-06-13 11:42:54.000000000 +0200 +++ new/clpeak-1.1.6/src/transfer_bandwidth.cpp 2026-03-07 16:16:38.000000000 +0100 @@ -1,5 +1,8 @@ #include <clpeak.h> #include <cstdlib> +#if defined(__ANDROID__) +#include <malloc.h> +#endif int clPeak::runTransferBandwidthTest(cl::CommandQueue &queue, cl::Program &prog, device_info_t &devInfo) { @@ -20,6 +23,8 @@ { #if defined(_WIN32) && (_MSC_VER >= 1920) arr = static_cast<float *>(_aligned_malloc(numItems * sizeof(float), 64)); +#elif defined(__ANDROID__) + arr = static_cast<float *>(memalign(64, numItems * sizeof(float))); #else arr = static_cast<float *>(aligned_alloc(64, numItems * sizeof(float))); #endif @@ -33,298 +38,322 @@ /////////////////////////////////////////////////////////////////////////// // enqueueWriteBuffer - log->print(TAB TAB TAB "enqueueWriteBuffer : "); + if (!forceTest || strcmp(specifiedTestName, "enqueuewritebuffer") == 0) + { + log->print(TAB TAB TAB "enqueueWriteBuffer : "); - // Dummy warm-up - queue.enqueueWriteBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); - queue.finish(); + // Dummy warm-up + queue.enqueueWriteBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); + queue.finish(); - timed = 0; + timed = 0; - if (useEventTimer) - { - for (uint i = 0; i < iters; i++) + if (useEventTimer) { - cl::Event timeEvent; - queue.enqueueWriteBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); - queue.finish(); - timed += timeInUS(timeEvent); + for (uint i = 0; i < iters; i++) + { + cl::Event timeEvent; + queue.enqueueWriteBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); + queue.finish(); + timed += timeInUS(timeEvent); + } } - } - else - { - Timer timer; - - timer.start(); - for (uint i = 0; i < iters; i++) + else { - queue.enqueueWriteBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); - } - queue.finish(); - timed = timer.stopAndTime(); - } - timed /= static_cast<float>(iters); + Timer timer; - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("enqueuewritebuffer", gbps); + timer.start(); + for (uint i = 0; i < iters; i++) + { + queue.enqueueWriteBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); + } + queue.finish(); + timed = timer.stopAndTime(); + } + timed /= static_cast<float>(iters); + + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("enqueuewritebuffer", gbps); + } /////////////////////////////////////////////////////////////////////////// // enqueueReadBuffer - log->print(TAB TAB TAB "enqueueReadBuffer : "); + if (!forceTest || strcmp(specifiedTestName, "enqueuereadbuffer") == 0) + { + log->print(TAB TAB TAB "enqueueReadBuffer : "); - // Dummy warm-up - queue.enqueueReadBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); - queue.finish(); + // Dummy warm-up + queue.enqueueReadBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); + queue.finish(); - timed = 0; - if (useEventTimer) - { - for (uint i = 0; i < iters; i++) + timed = 0; + if (useEventTimer) { - cl::Event timeEvent; - queue.enqueueReadBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); - queue.finish(); - timed += timeInUS(timeEvent); + for (uint i = 0; i < iters; i++) + { + cl::Event timeEvent; + queue.enqueueReadBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); + queue.finish(); + timed += timeInUS(timeEvent); + } } - } - else - { - Timer timer; - - timer.start(); - for (uint i = 0; i < iters; i++) + else { - queue.enqueueReadBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); - } - queue.finish(); - timed = timer.stopAndTime(); - } - timed /= static_cast<float>(iters); + Timer timer; - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("enqueuereadbuffer", gbps); + timer.start(); + for (uint i = 0; i < iters; i++) + { + queue.enqueueReadBuffer(clBuffer, CL_TRUE, 0, (numItems * sizeof(float)), arr); + } + queue.finish(); + timed = timer.stopAndTime(); + } + timed /= static_cast<float>(iters); + + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("enqueuereadbuffer", gbps); + } /////////////////////////////////////////////////////////////////////////// // enqueueWriteBuffer non-blocking - log->print(TAB TAB TAB "enqueueWriteBuffer non-blocking : "); + if (!forceTest || strcmp(specifiedTestName, "enqueuewritebuffer_nonblocking") == 0) + { + log->print(TAB TAB TAB "enqueueWriteBuffer non-blocking : "); - // Dummy warm-up - queue.enqueueWriteBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); - queue.finish(); + // Dummy warm-up + queue.enqueueWriteBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); + queue.finish(); - timed = 0; + timed = 0; - if (useEventTimer) - { - for (uint i = 0; i < iters; i++) + if (useEventTimer) { - cl::Event timeEvent; - queue.enqueueWriteBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); - queue.finish(); - timed += timeInUS(timeEvent); + for (uint i = 0; i < iters; i++) + { + cl::Event timeEvent; + queue.enqueueWriteBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); + queue.finish(); + timed += timeInUS(timeEvent); + } } - } - else - { - Timer timer; - - timer.start(); - for (uint i = 0; i < iters; i++) + else { - queue.enqueueWriteBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); - } - queue.finish(); - timed = timer.stopAndTime(); - } - timed /= static_cast<float>(iters); + Timer timer; - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("enqueuewritebuffer_nonblocking", gbps); + timer.start(); + for (uint i = 0; i < iters; i++) + { + queue.enqueueWriteBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); + } + queue.finish(); + timed = timer.stopAndTime(); + } + timed /= static_cast<float>(iters); + + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("enqueuewritebuffer_nonblocking", gbps); + } /////////////////////////////////////////////////////////////////////////// // enqueueReadBuffer non-blocking - log->print(TAB TAB TAB "enqueueReadBuffer non-blocking : "); + if (!forceTest || strcmp(specifiedTestName, "enqueuereadbuffer_nonblocking") == 0) + { + log->print(TAB TAB TAB "enqueueReadBuffer non-blocking : "); - // Dummy warm-up - queue.enqueueReadBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); - queue.finish(); + // Dummy warm-up + queue.enqueueReadBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); + queue.finish(); - timed = 0; - if (useEventTimer) - { - for (uint i = 0; i < iters; i++) + timed = 0; + if (useEventTimer) { - cl::Event timeEvent; - queue.enqueueReadBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); - queue.finish(); - timed += timeInUS(timeEvent); + for (uint i = 0; i < iters; i++) + { + cl::Event timeEvent; + queue.enqueueReadBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr, NULL, &timeEvent); + queue.finish(); + timed += timeInUS(timeEvent); + } } + else + { + Timer timer; + + timer.start(); + for (uint i = 0; i < iters; i++) + { + queue.enqueueReadBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); + } + queue.finish(); + timed = timer.stopAndTime(); + } + timed /= static_cast<float>(iters); + + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("enqueuereadbuffer_nonblocking", gbps); } - else + /////////////////////////////////////////////////////////////////////////// + // enqueueMapBuffer + if (!forceTest || strcmp(specifiedTestName, "enqueuemapbuffer") == 0) { - Timer timer; + log->print(TAB TAB TAB "enqueueMapBuffer(for read) : "); - timer.start(); - for (uint i = 0; i < iters; i++) - { - queue.enqueueReadBuffer(clBuffer, CL_FALSE, 0, (numItems * sizeof(float)), arr); - } queue.finish(); - timed = timer.stopAndTime(); - } - timed /= static_cast<float>(iters); - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("enqueuereadbuffer_nonblocking", gbps); + timed = 0; + if (useEventTimer) + { + for (uint i = 0; i < iters; i++) + { + cl::Event timeEvent; + void *mapPtr; + + mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_READ, 0, (numItems * sizeof(float)), NULL, &timeEvent); + queue.finish(); + queue.enqueueUnmapMemObject(clBuffer, mapPtr); + queue.finish(); + timed += timeInUS(timeEvent); + } + } + else + { + for (uint i = 0; i < iters; i++) + { + Timer timer; + void *mapPtr; + + timer.start(); + mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_READ, 0, (numItems * sizeof(float))); + queue.finish(); + timed += timer.stopAndTime(); + + queue.enqueueUnmapMemObject(clBuffer, mapPtr); + queue.finish(); + } + } + timed /= static_cast<float>(iters); + + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("enqueuemapbuffer", gbps); + } /////////////////////////////////////////////////////////////////////////// - // enqueueMapBuffer - log->print(TAB TAB TAB "enqueueMapBuffer(for read) : "); - - queue.finish(); - timed = 0; - if (useEventTimer) + // memcpy from mapped ptr + if (!forceTest || strcmp(specifiedTestName, "memcpy_from_mapped_ptr") == 0) { + log->print(TAB TAB TAB TAB "memcpy from mapped ptr : "); + queue.finish(); + + timed = 0; for (uint i = 0; i < iters; i++) { cl::Event timeEvent; void *mapPtr; - mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_READ, 0, (numItems * sizeof(float)), NULL, &timeEvent); - queue.finish(); - queue.enqueueUnmapMemObject(clBuffer, mapPtr); + mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_READ, 0, (numItems * sizeof(float))); queue.finish(); - timed += timeInUS(timeEvent); - } - } - else - { - for (uint i = 0; i < iters; i++) - { - Timer timer; - void *mapPtr; timer.start(); - mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_READ, 0, (numItems * sizeof(float))); - queue.finish(); + memcpy(arr, mapPtr, (numItems * sizeof(float))); timed += timer.stopAndTime(); queue.enqueueUnmapMemObject(clBuffer, mapPtr); queue.finish(); } + timed /= static_cast<float>(iters); + + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("memcpy_from_mapped_ptr", gbps); } - timed /= static_cast<float>(iters); - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("enqueuemapbuffer", gbps); /////////////////////////////////////////////////////////////////////////// - // memcpy from mapped ptr - log->print(TAB TAB TAB TAB "memcpy from mapped ptr : "); - queue.finish(); - - timed = 0; - for (uint i = 0; i < iters; i++) + // enqueueUnmap + if (!forceTest || strcmp(specifiedTestName, "enqueueunmap") == 0) { - cl::Event timeEvent; - void *mapPtr; + log->print(TAB TAB TAB "enqueueUnmap(after write) : "); - mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_READ, 0, (numItems * sizeof(float))); queue.finish(); - timer.start(); - memcpy(arr, mapPtr, (numItems * sizeof(float))); - timed += timer.stopAndTime(); - - queue.enqueueUnmapMemObject(clBuffer, mapPtr); - queue.finish(); + timed = 0; + if (useEventTimer) + { + for (uint i = 0; i < iters; i++) + { + cl::Event timeEvent; + void *mapPtr; + + mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_WRITE, 0, (numItems * sizeof(float))); + queue.finish(); + queue.enqueueUnmapMemObject(clBuffer, mapPtr, NULL, &timeEvent); + queue.finish(); + timed += timeInUS(timeEvent); + } + } + else + { + for (uint i = 0; i < iters; i++) + { + Timer timer; + void *mapPtr; + + mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_WRITE, 0, (numItems * sizeof(float))); + queue.finish(); + + timer.start(); + queue.enqueueUnmapMemObject(clBuffer, mapPtr); + queue.finish(); + timed += timer.stopAndTime(); + } + } + timed /= static_cast<float>(iters); + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("enqueueunmap", gbps); } - timed /= static_cast<float>(iters); - - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("memcpy_from_mapped_ptr", gbps); - /////////////////////////////////////////////////////////////////////////// - // enqueueUnmap - log->print(TAB TAB TAB "enqueueUnmap(after write) : "); - - queue.finish(); - - timed = 0; - if (useEventTimer) + // memcpy to mapped ptr + if (!forceTest || strcmp(specifiedTestName, "memcpy_to_mapped_ptr") == 0) { - for (uint i = 0; i < iters; i++) - { - cl::Event timeEvent; - void *mapPtr; + log->print(TAB TAB TAB TAB "memcpy to mapped ptr : "); + queue.finish(); - mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_WRITE, 0, (numItems * sizeof(float))); - queue.finish(); - queue.enqueueUnmapMemObject(clBuffer, mapPtr, NULL, &timeEvent); - queue.finish(); - timed += timeInUS(timeEvent); - } - } - else - { + timed = 0; for (uint i = 0; i < iters; i++) { - Timer timer; + cl::Event timeEvent; void *mapPtr; mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_WRITE, 0, (numItems * sizeof(float))); queue.finish(); timer.start(); + memcpy(mapPtr, arr, (numItems * sizeof(float))); + timed += timer.stopAndTime(); + queue.enqueueUnmapMemObject(clBuffer, mapPtr); queue.finish(); - timed += timer.stopAndTime(); } - } - timed /= static_cast<float>(iters); - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("enqueueunmap", gbps); - /////////////////////////////////////////////////////////////////////////// - - // memcpy to mapped ptr - log->print(TAB TAB TAB TAB "memcpy to mapped ptr : "); - queue.finish(); + timed /= static_cast<float>(iters); - timed = 0; - for (uint i = 0; i < iters; i++) - { - cl::Event timeEvent; - void *mapPtr; - - mapPtr = queue.enqueueMapBuffer(clBuffer, CL_TRUE, CL_MAP_WRITE, 0, (numItems * sizeof(float))); - queue.finish(); - - timer.start(); - memcpy(mapPtr, arr, (numItems * sizeof(float))); - timed += timer.stopAndTime(); - - queue.enqueueUnmapMemObject(clBuffer, mapPtr); - queue.finish(); + gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; + log->print(gbps); + log->print(NEWLINE); + log->xmlRecord("memcpy_to_mapped_ptr", gbps); } - timed /= static_cast<float>(iters); - - gbps = ((float)numItems * sizeof(float)) / timed / 1e3f; - log->print(gbps); - log->print(NEWLINE); - log->xmlRecord("memcpy_to_mapped_ptr", gbps); /////////////////////////////////////////////////////////////////////////// log->xmlCloseTag(); // transfer_bandwidth
