robbert-harms / MDT

Microstructure Diffusion Toolbox
GNU Lesser General Public License v3.0
50 stars 18 forks source link

MDT crash #25

Closed Nerooh closed 4 years ago

Nerooh commented 4 years ago

Dear Robbert,

I am trying to have a go at using the MDT with the provided example data, following along with the great documentation you wrote. However, the program seems to crash whenever I try to do the NODDI estimation in section 3.3.

What happens is that MDT starts processing and after a few seconds the log gives a "CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more" message.

From what I gather from some online searches about the error, it may have something to do with openCL and mac compatibility issues, but I'm hoping you might be familiar with this issue in MDT and could give me some insight whether there is a way to resolve it.

For reference, my specs are below: OS X Yosemite (indeed, it's ancient, perhaps you have a suggestion for which mac OS seems to be most reliable for MDT?) CPU used: Intel Xeon-e5-1650 v2.0 @ 3.5GHz Using Python 3.7.6 and anaconda v2020.20 build py37.0

Many thanks for developing this wonderful toolbox and kind regards, Roy

robbert-harms commented 4 years ago

Hi Roy,

The message "CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more" is actually harmless and typically does not affect the working of MDT nor the results. It is possible that MDT is still computing. Have you tried with a simpler model (e.g. BallStick_r1) first to see if that computes?

In addition, OSX may not be the ideal option for running MDT. OSX dropped support for OpenCL several years ago and the performance has been lackluster. I personally recommend Linux for serious computations.

Best wishes,

Robbert

Nerooh commented 4 years ago

Hi Robbert,

Thank you for your quick reply. I see now that I forgot to mention in my original question a quite important detail that it indeed crashes after showing me the openCL warning. After the warning the gui closes and shows a "Python quit unexpectedly" message.

I've just tried it with the BallStick_r1 model and it does the same thing. I suppose that switching to Linux is probably still the best remedy in this case?

Kind regards, Roy

robbert-harms commented 4 years ago

Hi Roy,

That changes the story slightly. Then indeed I would go with Linux. I get this question often and there are really only three options:

  1. get a Linux machine
  2. upgrade to the latest OSX version and try again
  3. try installing an alternative OpenCL runtime (http://portablecl.org/docs/html/install.html) and try with that

I am sorry I can't offer more than that.

Best wishes,

Robbert

Nerooh commented 4 years ago

Hi Robbert,

Thank you for your previous help! I have another issue, though, unfortunately.

I managed to install a boot disk with Ubuntu 20.04 to try the toolbox in a Linux environment. When I try to run ball&stick or NODDI on the b1k_b2k example data, the MDT GUI crashes and the terminal shows me the report below.

Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/mdt/gui/model_fit/tabs/fit_model_tab.py", line 54, in self.runButton.clicked.connect(lambda: self._run_model()) File "/usr/local/lib/python3.8/dist-packages/mdt/gui/model_fit/tabs/fit_model_tab.py", line 177, in _run_model model = mdt.get_model(model_name)() File "/usr/local/lib/python3.8/dist-packages/mdt/component_templates/composite_models.py", line 47, in init CompartmentModelTree(parse_composite_model_expression(template.model_expression)), File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 88, in init self._init_tree(model_lists) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 113, in _init_tree nn = CompartmentModelTree(node) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 88, in init self._init_tree(model_lists) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 113, in _init_tree nn = CompartmentModelTree(node) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 88, in init self._init_tree(model_lists) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 113, in _init_tree nn = CompartmentModelTree(node) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 88, in init self._init_tree(model_lists) File "/usr/local/lib/python3.8/dist-packages/mdt/model_building/trees.py", line 110, in _init_tree raise ValueError('Double operator in model listing.') ValueError: Double operator in model listing.

Aborted (core dumped)

Do you have any idea what might cause this?

Kind regards, Roy

robbert-harms commented 4 years ago

Hi Roy,

It looks like there is a misconfigured model in your ~/.mdt/ folder. Part of the error seems to be:

... parse_composite_model_expression(template.model_expression)...

it seems like one of the models is faulty. Did you add models yourself?

If not, then maybe it is a problem with the newest Python version running on Ubuntu 20.04. I am planning on upgrading myself this summer, which would allow me to check. Aside from removing all models and adding them one by one, I would not know how you could identify which model is giving problems.

Best,

Robbert

Nerooh commented 4 years ago

Hi Robbert,

This is using the default installation, I did not add any models myself.

I've now tried running NODDI with only the NODDI.py model in the compartment_models folder, which also results in a crash and gives a very long list of error messages. Do you perhaps know which would be the absolute minimum models required in this folder to run NODDI?

Alternatively, perhaps you could tell me what the latest Linux OS is that the toolbox is confirmed to work well on?

Kind regards, Roy

robbert-harms commented 4 years ago

Hi Roy,

Could you try with Ubuntu 18.10, that is the version I am currently using.

Best,

Robbert

robbert-harms commented 4 years ago

Hi Roy,

I found the problem and fixed it in minor release MDT v1.2.6.

The problem originated due changes in the dependency Tatsu. Fixing it was relatively easy.

Best wishes,

Robbert