summaryrefslogtreecommitdiff
path: root/silx/opencl/test/test_stats.py
diff options
context:
space:
mode:
Diffstat (limited to 'silx/opencl/test/test_stats.py')
-rw-r--r--silx/opencl/test/test_stats.py116
1 files changed, 0 insertions, 116 deletions
diff --git a/silx/opencl/test/test_stats.py b/silx/opencl/test/test_stats.py
deleted file mode 100644
index 8baf05e..0000000
--- a/silx/opencl/test/test_stats.py
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# Project: Sift implementation in Python + OpenCL
-# https://github.com/silx-kit/silx
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation
-# files (the "Software"), to deal in the Software without
-# restriction, including without limitation the rights to use,
-# copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following
-# conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-# OTHER DEALINGS IN THE SOFTWARE.
-
-"""
-Simple test of an addition
-"""
-__authors__ = ["Henri Payno, Jérôme Kieffer"]
-__contact__ = "jerome.kieffer@esrf.eu"
-__license__ = "MIT"
-__copyright__ = "2013 European Synchrotron Radiation Facility, Grenoble, France"
-__date__ = "19/05/2021"
-
-import logging
-import time
-import numpy
-
-import unittest
-from ..common import ocl
-if ocl:
- import pyopencl
- import pyopencl.array
- from ..statistics import StatResults, Statistics
-from ..utils import get_opencl_code
-logger = logging.getLogger(__name__)
-
-
-@unittest.skipUnless(ocl, "PyOpenCl is missing")
-class TestStatistics(unittest.TestCase):
-
- @classmethod
- def setUpClass(cls):
- cls.size = 1 << 20 # 1 million elements
- cls.data = numpy.random.randint(0, 65000, cls.size).astype("uint16")
- fdata = cls.data.astype("float64")
- t0 = time.perf_counter()
- std = fdata.std()
- cls.ref = StatResults(fdata.min(), fdata.max(), float(fdata.size),
- fdata.sum(), fdata.mean(), std ** 2,
- std)
- t1 = time.perf_counter()
- cls.ref_time = t1 - t0
-
- @classmethod
- def tearDownClass(cls):
- cls.size = cls.ref = cls.data = cls.ref_time = None
-
- @classmethod
- def validate(cls, res):
- return (
- (res.min == cls.ref.min) and
- (res.max == cls.ref.max) and
- (res.cnt == cls.ref.cnt) and
- abs(res.mean - cls.ref.mean) < 0.01 and
- abs(res.std - cls.ref.std) < 0.1)
-
- def test_measurement(self):
- """
- tests that all devices are working properly ...
- """
- logger.info("Reference results: %s", self.ref)
- for pid, platform in enumerate(ocl.platforms):
- for did, device in enumerate(platform.devices):
- try:
- s = Statistics(template=self.data, platformid=pid, deviceid=did)
- except Exception as err:
- failed_init = True
- res = StatResults(0, 0, 0, 0, 0, 0, 0)
- print(err)
- else:
- failed_init = False
- for comp in ("single", "double", "comp"):
- t0 = time.perf_counter()
- res = s(self.data, comp=comp)
- t1 = time.perf_counter()
- logger.info("Runtime on %s/%s : %.3fms x%.1f", platform, device, 1000 * (t1 - t0), self.ref_time / (t1 - t0))
-
- if failed_init or not self.validate(res):
- logger.error("failed_init %s; Computation modes %s", failed_init, comp)
- logger.error("Failed on platform %s device %s", platform, device)
- logger.error("Reference results: %s", self.ref)
- logger.error("Faulty results: %s", res)
- self.assertTrue(False, f"Stat calculation failed on {platform},{device} in mode {comp}")
-
-
-def suite():
- testSuite = unittest.TestSuite()
- testSuite.addTest(TestStatistics("test_measurement"))
- return testSuite
-
-
-if __name__ == '__main__':
- unittest.main(defaultTest="suite")