summaryrefslogtreecommitdiffstats
path: root/opencl
Commit message (Collapse)AuthorAgeFilesLines
* cppcheck: memleak (false positive)Jochen Nitschke2017-01-221-3/+2
| | | | | | | | | but manage ownership from start Change-Id: I22d855d89bd93c56fbbcc1fb64e757fc950aa791 Reviewed-on: https://gerrit.libreoffice.org/33391 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* New loplugin:conststringvar: openclStephan Bergmann2017-01-101-1/+1
| | | | Change-Id: Ib5762151cff4c903c73ec8d487ec8fbe54a9255a
* No apparent reason for an unnamed namespace in an include file hereStephan Bergmann2016-12-211-5/+0
| | | | Change-Id: I1017459520ba4f0e544f0fa00419789c8cd86609
* tdf#103395 opencl: don't initialize OpenCL when disabledTomaž Vajngerl2016-10-241-3/+18
| | | | | | | | | | | | | | If SAL_DISABLE_OPENCL is set we don't want to do any kind of OpenCL initialization. Put an extra guard in fillOpenCLInfo (and similar methods in opencl package) to prevent that. Put the check if OpenCL can be used into one place which checks SAL_DISABLE_OPENCL and UseOpenCL in configuration. Change-Id: Icc216d4299d3a7942843117ab9b9411de8075b11 Reviewed-on: https://gerrit.libreoffice.org/30025 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
* opencl: convert to C++11 for loopTomaž Vajngerl2016-10-181-7/+5
| | | | | | | Change-Id: Id96a3816eb7ef2241f5a6a57b164e1e366eb357a Reviewed-on: https://gerrit.libreoffice.org/29693 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
* tdf#103204 opencl: initialize command queue on demandTomaž Vajngerl2016-10-181-33/+48
| | | | | | | Change-Id: Ie3da1d6ec91e951b1ffc15abf376c7af57789e47 Reviewed-on: https://gerrit.libreoffice.org/29802 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Tomaž Vajngerl <quikee@gmail.com>
* clang-cl loplugin: openclStephan Bergmann2016-10-161-1/+1
| | | | | | | Change-Id: I7e0e79d67d6701e519f841d893c9b7b2f5ebef80 Reviewed-on: https://gerrit.libreoffice.org/29858 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
* Fix typosAndrea Gelmini2016-10-011-1/+1
| | | | | | | Change-Id: Icfc61fcc5ace717bca4bea988243674afe31e6f8 Reviewed-on: https://gerrit.libreoffice.org/29435 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* Valgrind reports read of uninitialized bCLBoolStephan Bergmann2016-09-211-1/+3
| | | | | | | | | | ...during e.g. CppunitTest_sc_subsequent_filters_test, where CL_DEVICE_LINKER_AVAILABLE is apparently a later addition (<https:// www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clGetDeviceInfo.html> mentions it while <https://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/ clGetDeviceInfo.html> doesn't). Change-Id: Icdaeffa4adb0765a6317f443130fa295761eb93f
* replace sal_Size with std::size_t (or sal_uInt64 for SvStream pos)Michael Stahl2016-09-151-1/+1
| | | | | | | | ... except in include/rtl, include/sal, include/uno, where sal_Size is retained for compatibility, and where callers of rtl functions pass in pointers that are incompatible on MSVC. Change-Id: I8344453780689f5120ba0870e44965b6d292450c
* loplugin:stringconstant: adapt to improved OUStringLiteral1 (opencl)Stephan Bergmann2016-08-301-1/+1
| | | | Change-Id: I0da7434b67148824d1c2343f8ecb2b069df6baa2
* put StreamMode masks in scope of enum classJochen Nitschke2016-08-271-1/+1
| | | | | | | | Change-Id: I77682f7e289a59b986bb84edf014029a20266470 Reviewed-on: https://gerrit.libreoffice.org/28420 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>
* coverity#1371130 'Constant' variable guards dead codeCaolán McNamara2016-08-191-5/+8
| | | | Change-Id: I94ac63f009cb398ef88e4889084bb9a99eb8bf6c
* tdf#100965: Restart on initialisation-time OpenCL crashTor Lillqvist2016-08-141-0/+6
| | | | | | | | | | | | | | | | | Add a flag to the OpenCLZone indicating whether we are performing the first-start OpenCL functionality verification, so that if we run into a crash that is caught by the VCL VCLExceptionSignal_impl() handler, we terminate the process with the EXITHELPER_NORMAL_RESTART status after first having disabled OpenCL use. The wrapper process will then restart soffice.bin. This is for Windows only so far. This matches what we do if OpenGL fails early during start of LibreOffice. Change-Id: Ibb9bf3a86b7521bf16728de2a118ad4323be674b Reviewed-on: https://gerrit.libreoffice.org/28086 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com>
* loplugin:countusersofdefaultparams in oox..sdNoel Grandin2016-08-051-1/+1
| | | | | | | Change-Id: I4504939a3957606979c6ac36af6611e1fe072d01 Reviewed-on: https://gerrit.libreoffice.org/27902 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
* improve passstuffbyref return analysisNoel Grandin2016-07-273-3/+3
| | | | | | | Change-Id: I4258bcc97273d8bb7a8c4879fac02a427f76e18c Reviewed-on: https://gerrit.libreoffice.org/27317 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
* Need to try to avoid TDR also with NVIDIA cards on Windows 7 or earlierLaszlo Nemeth2016-07-261-3/+38
| | | | | | | | | (TDR is Timeout detection and recovery, was introduced in Vista.) Change-Id: Ic49629adf7630e61cebcdfcc431ca96ba3fbaf7e Reviewed-on: https://gerrit.libreoffice.org/27518 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
* SAL_DETAIL_WHERE already ends with a spaceTor Lillqvist2016-07-221-1/+1
| | | | Change-Id: I273e0e4301246122bd9e02556b771dc485877350
* tdf#100883 - opencl impls. that use SEH are still bad.Michael Meeks2016-07-121-0/+1
| | | | | | | | | | Amazingly we fell-back to the old calculation path for crashes in older LibreOffices, might as well have this on master. Change-Id: Ifc1de41c93329207d7a1917c736e361d840c2821 Reviewed-on: https://gerrit.libreoffice.org/27166 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
* desktop: validate OpenCL drivers before use.Michael Meeks2016-07-123-2/+13
| | | | | | | | | | | | | | | | | | | | | | OpenCL validation needs to happen before drivers are used in anger. This should isolate any crashes, and/or mis-behavior to We use app version, CL driver version and file time-stamp to trigger re-testing the device. If anything fails: hard disable OpenCL. We use an opencl validation sheet (cl-test.ods) and install it. It is a minimal CL set - it requires a very short formula group length, and combines several CL functions into few formulae to test more. The sheet structure, in particular the manual squaring / SQRT is necessary to stick within the default CL subset, and ensure that formulae are CL enabled from the root of the dependency tree up. Change-Id: I18682dbdf9a8ba9c16d52bad4447e9acce97f0a3 Reviewed-on: https://gerrit.libreoffice.org/27131 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
* Remove bogus dependency from opencl to configmgrStephan Bergmann2016-07-121-1/+0
| | | | | | | | | | | | Since f41eb66302208f384a475fb20c98b6d1b0676cb6 "opencl: OpenCLZone, detect CL device change and disable CL on crash" vcl links against opencl (so indirectly linked against configmgr), which caused CppunitTest_configmgr_unit to include the configmgr object files both statically (through gb_CppunitTest_use_library_objects) and through the linked-in configmgr dynamic library, which in turn caused ASan builds to report an ODR violation for a doubly defined 'typeinfo name for configmgr::Access'. Change-Id: I9ae8637ac02c116dd2d03017f2ebb4004f4b14ad
* loplugin:nullptr: Better heuristic to determine code shared between C and C++Stephan Bergmann2016-07-111-3/+3
| | | | Change-Id: I51e1c5fa4639e51fac90f92adf3d87d12960d589
* opencl: OpenCLZone, detect CL device change and disable CL on crashTomaž Vajngerl2016-07-115-51/+131
| | | | | | | | | | | | | | | | | | | Guard OpenCL calls with OpenCLZone, so if a OpenCL call crashes we detect this and disable OpenCL so next time the user doesn't encounter the crash at the same calculation because he has a broken OpenCL drivers. Similar has been implemented for OpenGL with good results. Additionaly we persistently remember a known good OpenCL device ID and driver version so we can match this and perform calculation tests when they change. This is to ensure that the selected OpenCL device performs as we expect. In this commit the calculation tests aren't included yet. Remove complex static initializer in opencl wrapper library. Change-Id: I1a8b81ee31298731efcf63dc6a476955afc035e9 Reviewed-on: https://gerrit.libreoffice.org/27064 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Tomaž Vajngerl <quikee@gmail.com>
* tdf#90336 - further cleanup of OpenCL options page.Michael Meeks2016-07-011-0/+5
| | | | | | | | | | Still problematic; since we only show OpenCL as being available if it has already been initialized and used. Change-Id: I5e82a3f778f4f2025408330b6d9da51402d01e79 Reviewed-on: https://gerrit.libreoffice.org/26866 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
* Don't waste too much time evaluating the "score" for the "native CPU"Tor Lillqvist2016-06-291-3/+14
| | | | | | | | | | | | | | | | | This code took tens of second typically, which is utterly pointless. Instead run the loop for max a second, after which estimate how long it would have taken to process all of the data. Don't confuse the "native CPU" term here with a CPU-based device of an actual OpenCL implementation. That is a completely different thing. This "native CPU" thing here is just our way to estimate how much time it takes to do calculations using normal C++ code on the CPU. Change-Id: I92f5eedc06bbaaef6a9b5322fefec9d41f0db505 Reviewed-on: https://gerrit.libreoffice.org/26774 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org>
* Add some SAL_INFO outputTor Lillqvist2016-06-271-0/+6
| | | | Change-Id: I8b47034f5b1fed465415399de89979102df8d9a7
* Add some informative commentsTor Lillqvist2016-06-271-0/+5
| | | | Change-Id: I3c85543efe824c06781486aff2d836e5ba48e66e
* Let loplugin:passstuffbyref also look at fn defn not preceded by any declStephan Bergmann2016-06-082-4/+4
| | | | Change-Id: I752bc96d2d521d790e919283cabb14b6526626f4
* tools: rename SvStream::Read/Write to ReadBytes/WriteBytesMichael Stahl2016-06-061-2/+2
| | | | | | | Change-Id: Ib788a30d413436aa03f813aa2fddcbc4d6cd2f9a Reviewed-on: https://gerrit.libreoffice.org/25972 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
* Ensure that OpenCL device id returned from getDeviceSelection() is valid.Mark Hung2016-06-062-3/+10
| | | | | | | | Change-Id: I756bb57d471db3d3ca1d9c3733d359c7c16b4e66 Reviewed-on: https://gerrit.libreoffice.org/24959 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mark Page <aptitude@btconnect.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
* cppcheck: noExplicitConstructorCaolán McNamara2016-05-261-1/+1
| | | | Change-Id: Ibb6bc9a17418a8fb0b5f882285088a5b80fd5beb
* Fix typosAndrea Gelmini2016-05-101-1/+1
| | | | | | | Change-Id: I1c1894fcf533291b34a662b6efb96dcfa75b92b3 Reviewed-on: https://gerrit.libreoffice.org/24760 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
* clang-tidy modernize-loop-convert in oox to saxNoel Grandin2016-05-051-6/+5
| | | | | | | Change-Id: If0d87b6679765fc6d1f9300c6972845cf3742b9c Reviewed-on: https://gerrit.libreoffice.org/24674 Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>
* coverity#1358844 Uninitialized pointer fieldCaolán McNamara2016-04-291-0/+3
| | | | Change-Id: I66f34570c49f647cb1fd7775ef263e5e720d8064
* coverity#1358843 Argument cannot be negativeCaolán McNamara2016-04-291-1/+1
| | | | Change-Id: I97911406d55464f042922a2e37b33f92e2c024ef
* update loplugin stylepolice to check local pointers varsNoel Grandin2016-04-261-2/+2
| | | | | | | | | | | | are actually pointer vars. Also convert from regex to normal code, so we can enable this plugin all the time. Change-Id: Ie36a25ecba61c18f99c77c77646d6459a443cbd1 Reviewed-on: https://gerrit.libreoffice.org/24391 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
* Various loplugin warnings in opencl/Stephan Bergmann2016-04-223-12/+10
| | | | Change-Id: Ia6254777bc7972e2272dba542e315a8d3bd0fdf0
* opencl: better logging of devices and device selectionTomaž Vajngerl2016-04-225-566/+539
| | | | | | | | | | | | | | | | | changes: - Clew misses a lot of things, added defines needed for gathering platform and device info. - Refactored profile saving and loading to use libxml2 instead the weird type of saving the profile data. - Added an additional "log" file which is similar to the OpenGL but it writes the OpenCL relevant information like which devices and platforms are available (+ all the extra useful version information) and which device was selected (if any at all). Change-Id: I0fe793c756f8f4f1761fe120fc361df36e581903 Reviewed-on: https://gerrit.libreoffice.org/24270 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Tomaž Vajngerl <quikee@gmail.com>
* Move clew/clew.h into external, tooStephan Bergmann2016-04-121-1/+1
| | | | | | | | | | | For consistency with what 38cd1d9a5f00dc69ba0d60e2fe6957090c7a26d1 "clew: move this foreign code to external/clew" did for clew.c. Library_scfilt depends on clew/clew.h, simply make it depend on the full clew external. Change-Id: Idcbf56a69084e108832c8970507ebea0f7ff400b Reviewed-on: https://gerrit.libreoffice.org/24035 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
* The OpenCL shared library is called libOpenCL.so.1 on LinuxTor Lillqvist2016-03-291-1/+1
| | | | | | | | | | | libOpenCL.so is just the symbolic link to it, typically from a development package. (On Fedora, from ocl-icd-devel.) (Sure, libOpenCL.so.1 is also a symbolic link on Fedora, to libOpenCL.so.1.0.0. But anyway, libOpenCL.so.1 is not from a development package, but from ocl-icd.) Change-Id: I18ca2e52e025001f709b1b57e12cd01d5b52d08e
* use consistent #define checks for the Windows platformNoel Grandin2016-02-171-1/+1
| | | | | | | | | | | | stage 2 of replacing usage of various checks for the windows platform with the compiler-defined '_WIN32' macro In this stage we focus on replacing usage of the WIN macro Change-Id: Ie8a4a63198a6de96bd158ecd707dadafb9c8ea84 Reviewed-on: https://gerrit.libreoffice.org/22393 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
* loplugin:fpcomparison in opencl/Noel Grandin2016-02-041-1/+2
| | | | | | | Change-Id: Ia5b4a5010afd72ce59629dbc9b2045177a155182 Reviewed-on: https://gerrit.libreoffice.org/21867 Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>
* new loplugin: memoryvarNoel Grandin2015-11-112-8/+6
| | | | | | | | | | detect when we can convert a new/delete sequence on a local variable to use std::unique_ptr Change-Id: Iecae4e4197eccdfacfce2eed39aa4a69e4a660bc Reviewed-on: https://gerrit.libreoffice.org/19884 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
* loplugin:nullptr (automatic rewrite; Mac-specific code)Stephan Bergmann2015-11-101-1/+1
| | | | Change-Id: I414c1e7fa1b13d23f15f82d883ab95cf11f09299
* loplugin:nullptr (automatic rewrite)Stephan Bergmann2015-11-103-53/+53
| | | | Change-Id: I60189077f872dd5da3633b15b67b7b7729a75d0d
* clang-analyzer-deadcode.DeadStoresStephan Bergmann2015-10-071-2/+2
| | | | Change-Id: I95404b553f594ced1e2e8b4b8ddf34c08180128f
* loplugin:unusedmethodsNoel Grandin2015-10-011-15/+0
| | | | | | | | | | | | - improvements to the plugin to find more method calls - improvements to python script to remove more false+ - fix the FORCE_COMPILE_ALL build flag to include code in the $WORKDIR Change-Id: I4d6015dcb9b9d60c26f0bcee8abad807177a7836 Reviewed-on: https://gerrit.libreoffice.org/19064 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
* loplugin:removeunusedmethods, remove unused stuffNoel Grandin2015-09-291-2/+0
| | | | Change-Id: I35456b2a3ad2a84a1d045f09cdfb29e4c19b8350
* YAGNITor Lillqvist2015-09-161-105/+46
| | | | | | | | We use only one OpenCL device per context or program, so get rid of half-implemented (or half-reverted?) "support" for multiple devices per context. Change-Id: I951f29e867e5b3f96f6e051567ee38d607bd7ecf
* Split formula group for OpenCL up into smaller bits when necessaryTor Lillqvist2015-09-151-0/+5
| | | | | | | | | | | | | | | | | Will make it less demanding on low-end hardware, where the device driver is unresponsive for too long when an OpenCL kernel handling lots of data is executing. This makes Windows restart the driver which is problematic. I tried several approaches of splitting, both at higher levels in sc and at the lowest level just before creating and executing the OpenCL kernel(s). This seems to be the most minimal and local approach. Doing it at the lower level would have required too much poking into our obscure OpenCL code, like passing an offset parameter to every kernel. Use a simple heuristic to find out whether to split. On the problematic low-end devices, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT is 4, while for more performant devices it is 1 or 8.