robbert-harms/MDT

Array problems

franciscofritz opened this issue · 1 comments

To whom may concern,
glad to contact. I have a question. I am running a code that it used to work months ago but nowadays it is not working anymore. To be more precise, when mdt.fit_model(...) is running, the following console output shows up:

C:\Users\lagos\Anaconda3\python.exe C:/Users/lagos/Desktop/Toolbox/mt-scripts/mt_scripts/franc/relaxometry/Experimental_Studies/20201207_InSilico_R2sAngularDependency_MyelinStudy.py
pixdim[0] (qfac) should be 1 (default) or -1; setting qfac to 1
pixdim[0] (qfac) should be 1 (default) or -1; setting qfac to 1
pixdim[0] (qfac) should be 1 (default) or -1; setting qfac to 1
pixdim[0] (qfac) should be 1 (default) or -1; setting qfac to 1
[2020-12-07 16:06:05,182] [INFO] [mdt] [fit_model] - Preparing S0-QuadTE with the cascaded initializations.
[2020-12-07 16:06:05,185] [INFO] [mdt.lib.processing.model_fitting] [fit_composite_model] - Using MDT version 1.2.5
[2020-12-07 16:06:05,185] [INFO] [mdt.lib.processing.model_fitting] [fit_composite_model] - Preparing for model S0-QuadTE
[2020-12-07 16:06:05,372] [INFO] [mdt.models.composite] [_prepare_input_data] - No volume options to apply, using all 16 volumes.
[2020-12-07 16:06:05,373] [INFO] [mdt.lib.processing.model_fitting] [_model_fit_logging] - Fitting S0-QuadTE model
[2020-12-07 16:06:05,373] [INFO] [mdt.lib.processing.model_fitting] [_model_fit_logging] - The 3 parameters we will fit are: ['S0.s0', 'QuadTE.beta1', 'QuadTE.beta2']
[2020-12-07 16:06:05,373] [INFO] [mdt.lib.processing.model_fitting] [fit_composite_model] - Saving temporary results in G:\Projects\Optic_Chiasm_R2_Dispersion\Simulation_Dataset\Data_InSilico\output\InSilico_NoDispNoMye_AngMeas1\MaxTE16_2\S0-QuadTE\tmp_results.
[2020-12-07 16:06:05,726] [INFO] [mdt.lib.processing.processing_strategies] [_process_chunk] - Computations are at 0.00%, processing next 100000 voxels (335000 voxels in total, 0 processed). Time spent: 0:00:00:00, time left: ? (d:h:m:s).
[2020-12-07 16:06:05,727] [INFO] [mdt.lib.processing.model_fitting] [_process] - Starting optimization
[2020-12-07 16:06:05,727] [INFO] [mdt.lib.processing.model_fitting] [_process] - Using MOT version 0.11.3
[2020-12-07 16:06:05,727] [INFO] [mdt.lib.processing.model_fitting] [_process] - We will use a double precision float type for the calculations.
[2020-12-07 16:06:05,727] [INFO] [mdt.lib.processing.model_fitting] [_process] - Using device 'GPU - Intel(R) HD Graphics 520 (Intel(R) OpenCL HD Graphics)'.
[2020-12-07 16:06:05,727] [INFO] [mdt.lib.processing.model_fitting] [_process] - Using compile flags: ('-cl-denorms-are-zero', '-cl-mad-enable', '-cl-no-signed-zeros')
[2020-12-07 16:06:05,728] [INFO] [mdt.lib.processing.model_fitting] [_process] - We will use the optimizer Powell with optimizer settings {'patience': 10}
InvalidArraySize: Array size must be at least 1: [0 x i8] [Src: d:\qb\workspace\22235\source\llvm_source\projects\llvm-spirv\lib\spirv\spirvwriter.cpp:332 T->getArrayNumElements() >= 1 ]

This last warning is weird because the dataset (mdt.load_input_data) is being loaded properly (all the volumes, the protocol, the extra protocol and noise_std = value). I would like to ask where the problem can be.

Best regards,
Francisco

Well, a little bit more of details while I was debugging the code:
The error occurs at:
model.fitting.py > def _process(self, roi_indices, next_indices = None):
(Line 371) x0 = self._codec.encode(self._initial_params[roi_indices], kernel_data_subset)
More in deep:
In cl_function.py
(Line 356) kernels = get_kernels(kernel_source, cl_function.get_cl_function_name())

(Line 349) if key not in self._compilation_cache:
self._compilation_cache[key] = cl.Program(
env.context, kernel_source).build(' '.join(cl_runtime_info.compile_flags))
kernels[env] = getattr(self._compilation_cache[key], function_name)