GithubHelp home page GithubHelp logo

leoliuf / mrilab Goto Github PK

View Code? Open in Web Editor NEW
186.0 14.0 63.0 116.04 MB

A Numerical Magnetic Resonance Imaging (MRI) Simulation Platform

Home Page: https://leoliuf.github.io/MRiLab/

License: BSD 2-Clause "Simplified" License

MATLAB 70.22% C++ 3.81% C 14.21% Limbo 0.08% M 0.02% CMake 0.77% Cuda 10.89%
magnetic-resonance-imaging gpu-acceleration medical-imaging artificial-intelligence data-simulation medical-physics biomedical-engineering

mrilab's Introduction

MRiLab #MRiLab

A Numerical Magnetic Resonance Imaging (MRI) Simulation Platform

https://leoliuf.github.io/MRiLab/

The MRiLab is a numerical MRI simulation package. It has been developed and optimized to simulate MR signal formation, k-space acquisition and MR image reconstruction. MRiLab provides several dedicated toolboxes to analyze RF pulse, design MR sequence, configure multiple transmitting and receiving coils, investigate magnetic field related properties and evaluate real-time imaging technique. The main MRiLab simulation platform combined with those toolboxes can be applied to customize various virtual MR experiments which can serve as a prior stage for prototyping and testing new MR technique and application.

The main portal for access to source code and documentation is the GitHub. If you find MRiLab useful for the publication of any scientific results, please cite this paper:

"Fast Realistic MRI Simulations Based on Generalized Multi-Pool Exchange Tissue Model. IEEE Transactions on Medical Imaging. 2016. doi: 10.1109/TMI.2016.2620961"

Updates

Video Demo for ISMRM 2019 Open-Source Software Tools Weekend Course:

MRiLab v1.3 is now available, with new features of:

  • Support multi-pool exchange tissue model
  • Provide simulation in batch mode
  • Provide spatial SAR and power evaluation
  • Polish graphical interface
  • More...

mrilab's People

Contributors

leoliuf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mrilab's Issues

Installation on Ubuntu

Hi,

I am trying to install MRiLab on Ubuntu. I could to compile all itens but not the ISMRMRD. In fact, I could to compile it, but when I do the cmake ../ command in /MRiLab/Lib/src/build the following error occur.

Then I noted that the file ismrmrd.hxx does not exist. It wasn't generated.

Can anybody imagine what I am doing wrong?

ISMRMRD and Boost Found, MRiLab to Gadgetron interface will be compiled
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
ISMRMRD_XSD_INCLUDE_DIR
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5
used as include directory in directory /home/apaschoal/Documents/MRiLab/Lib/src/interface/DoMatToHDF5

Thank you,

André.

user-made phantoms have a too ideal FID

Hi, I noticed that if I create a Phantom in phantom creating tool the FID response looks too ideal even with a low and highly inhomogeneous field, but if I use a ready phantom it produces more realistic FIDs. What could be a problem? I will attach the characteristics of phantom to this question. My phantom is a simple water tube.
image

Simulations on the GPU sometimes return all zero images

Simulations performed on the GPU sometimes return images without any signal, where the same simulation performed on the CPU returns reasonable result.

Software environment:
MRiLab v1.3, Jan 10th 2017
Matlab R2016a
Windows 7 Professional SP1
CUDA 7.5
IPP 2017
Microsoft Visual Studio 2012

Hardware environment:
i7 3930K, 32GB ram
GTX Titan Black (GK110, 15 SMXs, 2304 shaders, 192 TMUs, 48 ROPs)
GTX Titan (GK110, 14 SMXs, 2880 shaders, 240 TMUs, 48 ROPs)

To reproduce:
Start MRiLab in Matlab. In my case the GTX Titan Black card is used by default.

  1. Load > Load Phantom Example > Brain (High Resolution 215x180x180)
  2. Click "<Localizer", then "Update"
  3. "Sequence", GradientEcho > PSD_GRE3D, "Accept", "Update", "Scan"
    -> The output shown in the preview contains only noise.
  4. "Hardware" tab > NoiseLevel -> set to 0, "Update", "Scan"
    -> The output shown in the preview is an image of all zeros

The same steps performed with the GTX Titan yield the same results.
The same steps performed with the CPU solver yield a reasonable image.
The same steps performed with the standard resolution brain phantom calculated on either one of the GPUs also yield a reasonable image that is visually indistinguishable from the one calculated on the CPU.

Sometimes, even high resolution images can be calculated on the GPU, but I haven't yet figured out the exact circumstances. Very similar simulations sometimes work, and sometimes they don't.

I'm willing to spend time helping to debug this, but I would need some suggestion of where to look or what tests to perform. I consider myself an expert in Matlab and have some limited experience writing C++/CUDA code to create mex files.

Jan

T1 and T2 for varying B0s

Hi,

I've been doing simulations with very low and high field strengths and was wondering whether T1 and T2 values of the phantom were adjusted automatically in MRiLab as the field strength changes following some formula, or whether they remained the same?

I ask as in the latter case I would have to adjust the T1s and T2s for the various field strengths I am using.

Many thanks.

Error maximum gradient amplitude follow-up

Thanks for the previous reply.

I can get the simulation to work with the following parameters:
ResFreq=ResPhase=60
FOVPhase=FOVFreq=20e-2
SliceThick = 8.5e-3
TE = 11e-3
DP_TR = TR = 22.5e-3
B0 = 0.0065T

And all other parameters set to the FIESTA defaults. These are the parameters in the paper I am trying to replicate (Low-Cost High-Performance MRI published 2015 by Mathieu Sarracanie et al).

However, in this paper the MaxSlewRate, MaxGrad and bandwith are different to the defaults, being
MaxSlewRate = 0.7 mT/m/ms = 0.7T/m/s (MRiLab default 200)
MaxGrad = 1e-3 T/m (MRiLab default 50e-3)
Bandwidth = 10e3 (MRiLab default 80e3)

The sequence diagrams are mostly unaffected by changes to MaxSlewRate and MaxGrad, though these changes from the defaults then produce errors when I want to simulate a scan. Changing the bandwidth causes serious overlap in the sequence, which I can then fix by changing the CV values to CV1 = 6e-3 and CV2 = 7e-3 which keep the sequence as 3D bSSFP I believe.

Would you happen to have any ideas why the slew rates and max gradients are still causing errors with these other settings? The minimum values I seem to be able to reach are a MaxSlewRate of 35 T/m/s and MaxGrad of 4 mT/m.

About B0 field design

Dear MRILAB members,

I want to do some research on artifact caused by inhomogeneous field, first I want to check the code describing magnetic field interpolation and signal integration within a single voxel to see if I need to do some change. My programming is poor,so could you please tell me the specific location of this code?(in which folder and the specific name).

I would appreciate it if you could reply to me.

PSD_FIESTA3D

Hello

I was interested to simulate the banding artefact for different phase cycling of th bSSFp sequence.
So I play a little bit with the phase increment (CV3)
I first test on the GM/WM/CSF phantome, with one uniform coil, uniform B0.
with the default phase (2*pi/2) the image looks ok, but when I put a RF phase increment (CV3 = 0) I get a big aliasing (in the phase encoding direction) only for the csf compartment.
I do not expect such an artifact ...
Any idea where it may come from ?

Many thanks

Romain

SAR Watcher

Hello Dr. Liu,

I just wanted to ask if the SAR tool is still in development, as I am having trouble getting it to show anything.

Many Thanks!
-Katya

K-space

In sequence design panel I chose GzSelective at the same time with RF pulse, with TE=5.5, default CVs, GzRamp=100e-6 and GzAmp 1e-4
After plotting the k-space I gain an oblique shape of it, but if set the GzAmp=7e-4 I get a correct k-space parallel to Kx- Ky plane.
I have attached these images for you
May I ask you to tell me, why I gained these kinds of images just by changing the GzAmp? Where is the problem?

seq

k1

Answer: There is an extended event (on Ext line) to reset k space location to zero before the imaging gradient. The offset might be caused because GzSelective gradient is not reset properly in the calculating of k space location. You can simply change the Ext event time to be after GzSelective and before the regular imaging gradients. For more information, please see user manual 5.2.8. Thanks.

https://leoliuf.github.io/MRiLab/manual/MRiLab_User_Guide_v1_3/MRiLab_User_Guide.html

Frequency Encoding

Hi, I have a problem with frequency encoding
According to the below image in VCtl. TE when we set TE, the frequency encoding (tMiddle) should be equal to VCtl.TE, here TE is 8ms but tMiddle in frequency direction is somewhere around 9. Actually, I did not change anything here, it is your default. If I change TE to every other value, the tMiddle will change to a number near VCtl.TE+1 or +2.
How can I fix this problem?
1

Banding Artifact

I have a question about banding artifact on PSD-FIESTA
When I Loaded Brain (Standard Resolution 108 × 90 × 90) and Mag GaussianHead, I got this image:
What are these parts around image that I am showing by red color? How can I remove it?
band

CV3 variable is not taken into account in PSD_FIESTA3D sequence

Hello

First many thanks for this nice sofware, it is quite an amazing work. I do not know if it is the right place to ask. but in case :
I notice that if I change the CV3 value in the graphical interface click on update, and then scan the new value is not taken into account.
I compare it to the case where I change the CV3 value in the .xml config file of the sequence, before loading it in the gui

Is there a quick fix, or can you tel me where to have a look ?

Many thanks

Romain

Manual Shimming - Very Simple Bug

Hello,

Thank you for the tool, it has been quite useful for me so far.

One issue is: Although the shimming tab is loaded, when I set shimming to manual, the program gives the warning "Please load Shim tab. Manual Shimming was not performed!".

The 8th line of \Src\Main\DoManualShim.m should be 'Sh_X2_Y2' instead of 'X2_Y2'. I did not want to create a pull request for such a simple mistake :)

Have a nice day!

Multiecho RESHAPE Error

I was trying to use the multiecho feature in some sequences (Standard SE and GRE).
However, I get the following error : "Recon process aborted. To RESHAPE the number of elements must not change.". I tried different "TEPerTR" values and different "ME_TEs" arrays but nothing changed.
I think that the incriminated reshape function is that in "DoCartRecon.m". Am I missing something?

Thank you very much!

Umberto

Design Options grayed out

Helllo,

I have the issue that all options in the Design tab are grayed out, besides "Phantom Design Panel".
I can activate them by adding e.g.
"handles.rf_uimenu.Enable = 'on';"
in the SimuPanel_OpeningFcn. But the rfDesignPanel is not usable as the execution of e.g. rfSinc gives the following error message

"ERROR!!! rf exectution process aborted. Reference to non-existent field "ISO"

Also other uimenues are grayed out like for example in tab Tools the "Spin Evolution" option. Is this done on purpose?

Best,
Luca

signal and noice after simulation

Dear MRILAB members,
really great work, i have a question can you please tell me at which section you implemented a sequences? actually I am doing PhD in which I need a signals and noise of different phantoms to calculate the snr and cnr.
can you tell me how can I get these things from your work?
kind regards,
Hafiz

SeqXMLFile error

Hi i work on matlab 2021b, MRILab-1.3 and I got SeqXMLFile error

error

I don't know why this error is happening. Can you give me some advice?

Linux?

Tried this on linux distribution Ubuntu 16.04. Can't run the demo Gradient Echo sequence. It's looking for libcudart version 7.0. This distribution of linux uses libcudart 7.5. Any suggestions? Can I force CPU simulation somehow?

T1 Mapping

Hi,
I'm having troubles about T1 Mapping with Inversion Recovery of MriLab;
I set TR=15000,TE=50 and TI=[700-900-1100-1300-1500-1700-1900] and acquire 7 images to make a t1 map
But there is a problem: with these TIs, the intensity of WM and GM (in brain tissues Phantom) are increasing but the CSF intensity is constant.
After TI around 3000 the CSF Intensity is increasing and WM and GM intensities are constant. What is the problem? Is it possible to do t1 mapping with MRi-Lab?

Interslice Gap

Hi,

I'm doing Fast Spin Echo 3-D acquisitions and was wondering if there is any way I can fix an interslice gap? I didn't see anything about it in the user guide although I might have missed it.

Many Thanks.

free induction decay and other corresponding signals from a voxel

Hi, I am having an issue finding out where to obtain the FID signal from? I can only see how to construct a sequence but not the output. I created a sequence with only 90 deg RF pulse. I saw there is "series" mat data in output files but I cannot find the FID signal. I have tried plotting VSig.Sx but it just looks like noise.

Issue with boost

I am having issues with installing MRiLab. I have updated my cmake with the BOOST libraries and the compilation output states that Boost is detected. However, the output also says that the code failed to compile because boost could not be found. Is there a way to fix this?

Also I have downloaded ISMRMRD and it is also not being recognised.

Cheers,

-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- MATLAB_ROOT: /usr/local/MATLAB/R2016b/
-- Matlab mex will be used
-- IPP_ROOT (IPP 7): /opt/intel/compilers_and_libraries_2017.4.196/linux/ipp/
-- Found IPP: /opt/intel/compilers_and_libraries_2017.4.196/linux/ipp/lib/intel64/libipps.so;/opt/intel/compilers_and_libraries_2017.4.196/linux/ipp/lib/intel64/libippvm.so;/opt/intel/compilers_and_libraries_2017.4.196/linux/ipp/lib/intel64/libippcore.so
-- FRAMEWAVE_ROOT environment variable not set.
-- In Linux this can be done in your user .bashrc file by appending the corresponding line, e.g:
-- export FRAMEWAVE_ROOT=/usr/local/framewave/build
-- In Windows this can be done by adding system variable, e.g:
-- FRAMEWAVE_ROOT=C:\Program Files\FRAMEWAVE_1.3.1_SRC\Framewave\build
-- Could NOT find Framewave (missing: FW_LIBRARIES FW_INCLUDE_DIR)
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Try OpenMP CXX flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Found OpenMP: -fopenmp
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY)
CMake Warning at CMakeLists.txt:18 (find_package):
By not providing "FindVTK.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "VTK", but
CMake did not find one.

Could not find a package configuration file provided by "VTK" with any of
the following names:

VTKConfig.cmake
vtk-config.cmake

Add the installation prefix of "VTK" to CMAKE_PREFIX_PATH or set "VTK_DIR"
to a directory containing one of the above files. If "VTK" provides a
separate development package or SDK, be sure it has been installed.

-- Could NOT find Ismrmrd (missing: ISMRMRD_SCHEMA_DIR)
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- thread
-- system
-- chrono
-- date_time
-- atomic
-- IPP and/or Framewave Found, CPU engine will be compiled
-- IPP will be used
CUDA not found. GPU engine will not be compiled
CMake Error at renderer/CMakeLists.txt:2 (include):
include called with wrong number of arguments. include() only takes one
file.

VTK not found. MRiLab DoKSpaceTrajVTK will not be compiled.
ISMRMRD and/or Boost not found. MRiLab to Gadgetron interface will not be compiled

SNR and noise level

Hi, I was wondering how is the noise level measured? Is the value in db or is it the(SNR) ratio of the average signal intensity over the standard deviation of the noise? The formula in the manual is hard to follow and it would be nice to have some kind of measurement unit also. Thank you.

VobjDesignPanel

Dear Dr. Liu
I have a question about VobjDesignPanel. I want to make a brain phantom with a tumor inside, but I need to have diffusion property. Is it possible to add it, if yes, may I ask you to guide me?
Thanks

GPU acceleration issue

Hi,

I'm running MRiLab v1.3 on a computer equipped with NVDA Tesla V100 GPU and CUDA 11.0. As long as I lunch MRiLab in MATLAB the attached message pops up, and I cannot run simulation with GPU. I noticed the user manual mentioned development environment with CUDA 7.0.28. My question is whether my GPU and CUDA version is too advanced for MRiLab? CUDA 7.0 cannot support my GPU.
Thanks much!

MRiLab GPU error

Phantom creation

Hi, I would like to know how to create a phantom on your platform. I checked online and in the user guide but I am still stuck. I would like to create various phantoms such as spheres, cubes etc. I am rather a newbie in MatLab maybe that's why I couldn't make it

DoScanAtCPU

I have a problem after compiling MEX files,
I set Matlab2015a and Framewave 1.3 in my system environment path.
By following the MRiLab manual:
Build the INSTALL project, compiled MEX binaries will be copied to MRiLab/Lib/bin folder by default,
A DoScanAtCPU.mexaw64 copied in the bin folder, which is 94 KB.
After pressing K-space in sequence design panel I got this message:
ksp

2

Could you please help me where is the problem?

GPU make error

Hi all,

I have successfully gotten MRiLab running on a CPU however I am now trying to install it on a machine with a GPU and keep getting a bizarre error which I do not understand (I am a relative novice with CUDA and GPUs).

I am running a GEforce GTX 1070 on a 64 bit machine and a Ubuntu OS. I can run the cmake file successfully with CUDA being found as well as the other major dependencies. However when I run make I get the following error. Has anyone else run into this problem and been able to fix it?

Terminal Output
[ 11%] Linking CXX shared library DoCalSARAtCPU.mexa64
[ 11%] Built target DoCalSARAtCPU
Scanning dependencies of target DoScanAtCPU
[ 11%] Building CXX object engine/CPUEngine/CMakeFiles/DoScanAtCPU.dir/DoScanAtCPU.cpp.o
[ 11%] Linking CXX shared library DoScanAtCPU.mexa64
[ 11%] Built target DoScanAtCPU
[ 11%] Building NVCC (Device) object engine/GPUEngine/CMakeFiles/cuda_compile.dir/cuda_compile_generated_DoCESTScanAtGPU.cu.o

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

ptxas info : 0 bytes gmem
ptxas info : Compiling entry function '_Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii' for 'sm_20'
ptxas info : Function properties for _Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii
128 bytes stack frame, 152 bytes spill stores, 152 bytes spill loads
ptxas info : Used 63 registers, 296 bytes cmem[0], 48 bytes cmem[16]
/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

ptxas info : 0 bytes gmem
ptxas info : Compiling entry function '_Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii' for 'sm_30'
ptxas info : Function properties for _Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii
144 bytes stack frame, 168 bytes spill stores, 168 bytes spill loads
ptxas info : Used 63 registers, 584 bytes cmem[0], 88 bytes cmem[2]
/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

ptxas info : 0 bytes gmem
ptxas info : Compiling entry function '_Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii' for 'sm_35'
ptxas info : Function properties for _Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 126 registers, 584 bytes cmem[0], 88 bytes cmem[2]
/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "MaxThreadNum" was set but never used

/home/ksinghrao/Documents/MRiLab/Lib/src/engine/GPUEngine/DoCESTScanAtGPU.cu(94): warning: variable "ThreadNum" was declared but never referenced

ptxas info : 0 bytes gmem
ptxas info : Compiling entry function '_Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii' for 'sm_50'
ptxas info : Function properties for _Z18BlochKernelCESTGPUfPdPfS0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_S0_ffS0_S0_fiiiiS0_S0_S0_iiiiiiii
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 108 registers, 584 bytes cmem[0], 92 bytes cmem[2]
/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’:
/usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
return (char *) memcpy (__dest, __src, __n) + __n;
^
CMake Error at cuda_compile_generated_DoCESTScanAtGPU.cu.o.cmake:266 (message):
Error generating file
/home/ksinghrao/Documents/MRiLab/Lib/build/engine/GPUEngine/CMakeFiles/cuda_compile.dir//./cuda_compile_generated_DoCESTScanAtGPU.cu.o

engine/GPUEngine/CMakeFiles/DoCESTScanAtGPU.dir/build.make:63: recipe for target 'engine/GPUEngine/CMakeFiles/cuda_compile.dir/cuda_compile_generated_DoCESTScanAtGPU.cu.o' failed
make[2]: *** [engine/GPUEngine/CMakeFiles/cuda_compile.dir/cuda_compile_generated_DoCESTScanAtGPU.cu.o] Error 1
CMakeFiles/Makefile2:208: recipe for target 'engine/GPUEngine/CMakeFiles/DoCESTScanAtGPU.dir/all' failed
make[1]: *** [engine/GPUEngine/CMakeFiles/DoCESTScanAtGPU.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

FSE streak artifact

Hi,

I've been having difficulties simulating an FSE sequence with images coming out looking very 'streaky' e.g. below. They seem to maintain only the high frequency information.

Steaky

I was wondering what this might be due to? My current parameters are:
ResFreqxResPhase: 448 x 290
FOVFreqxFOVPhase: 23x20 cm
FlipAng: 90
TE: 96ms
TR: 5420ms
B0: 1.5T

FSE_ShotNum: 29
FSE_ETL: 10
FSE_ESP: 10e-3

CV1: 1e-3
CV2: 3e-3

phantom creator, phantom rotation

Hi, I would like to ask if it is possible to rotate the phantom in space through the phantom creator? I have a phantom cylinder but it doesn't seem to be able to be rotated. I need to rotate it because when I scan a tube phantom that I created I cannot scan it from a different angle.

image

Functional/dynamic support

Does MRiLab currently support functional/dynamic MRI? For example situations where certain area of the brain would have increasing/decreasing signal as a function of time.

Question about "spin per voxel"

Hi,

I have a question about how multiple spins are distributed in a voxel. For example, the phantom to be simulated has in plane resolution of 1mm x 1mm, and I set 5 spins per voxel. Does this "voxel" refer to the phantom resolution or image resolution? How are these 5 spins (or any number larger than 1) physically located in this voxel?

Thank you!

MR image simulation of a digital phantom using MRI-Lab

Pre requisites:
The digital phantom was constructed by attaching a digital breast phantom to a computational mesh-grid model of the upper body. The digital breast phantoms were derived from realistic CT breast volumes for different patients. The digital phantom was voxelized into 512 x 512 x100 voxels with XY resolution as 1.0mm and slice thickness equal to 2.2mm. Each voxel was represented by a label or integer which represented a particular tissue or organ (for ex. 1=Fat, 7=Lungs, etc.)

Pre-processing:
Using the voxelized digital phantom, we created a virtual phantom with properties required by MriLab to acquire the MR signal. A new virtual object was created in MATLAB as a structured array of 3D matrices. Each of these matrices was identical in dimension to the original digital phantom and the voxel indices were replaced with corresponding tissue properties such as T1, T2, T2*, proton density, mass density and electrical conductivity. Each of these properties were required by the MriLab package to successfully acquire the MR signal. The resultant virtual object consisted of all the mentioned matrices and some other phantom properties such as Gyromagnetic ratio, number of voxels in X-Y-Z dimension and X-Y-Z voxel size. The virtual object could now be loaded into the MriLab GUI.

Simulation:
Upon successful loading of the digital phantom, other MR k-space acquisition and subsequent reconstruction parameters were fed to the GUI which were: pulse sequence (MriLab has a variety of in-built pulse sequences including general gradient echo, spoiled gradient echo, spin echo, STIR, etc.), T_E,T_R, FOV_freq,FOV_phase, slice thickness, receiver bandwidth, primary magnetic field strength, scan plane, flip angle, number of voxels in the frequency and phase encode direction. MriLab features a lot of other user dependent parameters which were not necessary to get started and the default value for such parameters was suffice.

Attempts at obtaining images-
The following image was obtained using general gradient echo pulse (T_E=100ms & T_R=1000ms) sequence and smaller number of voxels (100X120) in the frequency and phase encode direction which led to the poor resolution. Also, there was a mistake in specifying the T2 value for blood which made the heart appear unusually bright. The receiver bandwidth was specified as 80kHz. The slice thickness & X-Y voxel dimensions were specified identical to the digital phantom parameters mentioned earlier. The FOV in the frequency and phase encode direction is specified using the MriLab GUI which shows a preview of the loaded digital phantom. The FOV values are taken such that the green box (see Fig. 1) sufficiently encloses the image in the preview (the preview is just a mapping of the T1/T2 values as given in the loaded digital phantom).

image image
Figure 1: left - generated image; right - describing the FOV in the MriLab GUI

The resolution of the image can be improved by increasing the number of voxels in the freq. and phase encode direction being used to obtain the k-space data. After correcting the T2 value for blood, the following image was obtained.

image
Figure 2: 256*256 resolution.

Up until now T_E=100ms & T_R=1000ms were being used but for our purpose we needed images acquired using much smaller T_E=2.4ms & T_R=5.5ms. After some searching, spoiled gradient echo pulse sequence was identified as suitable for this purpose. However, the generated image had artifacts (see Fig. 3) which were removed after increasing the value of the receiver bandwidth from 80kHz to 640 kHz.

imageimage
Figure 3: left – image with artifacts; right – image after increasing receiver bandwidth

The images obtained till this point were not fat suppressed and hence they do not resemble real breast fat suppressed images. Subsequently, STIR pulse sequence was tried for generating fat suppressed images (Fig. 4) but that pulse sequence requires very large T_E & T_R for generation of good fat suppressed images. In order to obtain realistic fat suppressed images with small echo and repetition times, a pulse sequence needs to be used which has a preparation segment of short T1 inversion before each imaging segment. Although MriLab does not have such an in-built pulse sequence but it allows the users to design their own pulse.

imageimage
Figure 4: left – fat suppressed image generated using STIR; right – same image with different intensity scale to highlight breast tissue contrast (notice the brighter glandular tissue compared to fat)

At this point we realized that there was a mistake in the manually assigned tissue parameters for fat tissue. The relative proton density that had been assigned while creating the virtual object was too low. After correction of the PD values for fat and glandular tissue, the following images (Fig. 5) were obtained which correctly depicted fat with the brightest intensity in the T1 weighted image.

imageimage
Figure 5: left – spoiled gradient echo image; right – same slice with fat suppression using STIR pulse.

Problem:
It was mentioned earlier that a fat suppressed image generated using spoiled gradient echo pulse sequence would be ideal for our purpose. This is possible if a inversion preparation pulse targeting the fat tissue is added before the imaging segment. MriLab has provision for pulse design where I added a 180^o inversion segment (Fig. 6(a)) before each k-space acquisition imaging segment (Fig. 6(b)) such that the inversion segment and the imaging segment were separated by TI=ln2*T1_fat. However, this method does not generate the fat suppressed spoiled gradient echo image that we want. Instead, it gives an image that is almost identical to normal spoiled gradient echo image.

image

  Figure 6 (a): Inversion prep segment shown with time in x-axis in milliseconds.

image

 Figure 6(b): Imaging segment starting at TI=ln2*T1_fat=243ms; MriLab features Ext macros which act as spoilers by dephasing X-Y magnetization after each imaging segment.

Solution:
It turned out that the problem was not only in the pulse sequence but also a lack of compatibility of our digital phantom to incorporate fat chemical shift. However, MRI lab had provision for using a digital phantom with multiple spin species i.e. fat and water such that a chemical shift between the 2 spin species can be utilized for imaging. This chemical shift was introduced in the digital phantom by extending the aforementioned 3D matrices PD, T1, T2 & T2Star along a 4th dimension so as to have 2 elements in the 4th dimension, one for each spin species.
After modifying our phantom, the preparatory RF pulse of the pulse sequence was adjusted to have a central frequency at fat proton’s resonant frequency and a smaller bandwidth such that the prep pulse does not excite the water protons.

Upon successful implementation of these changes, we were able to simulate images using a SPIR pulse sequence where a prep pulse is used to selectively invert only the fat signal and the imaging sequence starts at TI=ln2*T1_fat. The pulse sequence being used had a prep pulse before each line of k-space imaging segment (Fig. 7).

image

Figure 7: Fat suppressed image acquired using SPIR pulse sequence with T_E=2.4ms & T_R=5.5ms. Notice that there is kind of an abrupt boundary between the suppressed fat part and glandular part in the breast; compare this with the non-uniform brightness of the dense tissue in Fig. 5b where the fat-dense tissue boundary is not very well defined.

Current challenge:
To achieve realistic images of glandular tissues post fat suppression using SPIR sequence, we aim to get images which have non uniform brightness of the dense tissue (similar to that in Fig. 5b). This non-uniformity arises due to the fact that our digital phantom has 5 different types of voxels which are: 100% dense tissue; 75-25% dense-fat tissue; 50-50% dense-fat tissue; 25-75% dense-fat tissue; and 100% fat tissue. The mentioned ratios have been derived from CT numbers of different voxels.
However, this non-uniformity is absent from the image (Fig. 7) acquired using SPIR sequence since the inverting pulse only acts on the voxel labeled as 100% fat. In the current framework of MRI lab, we can mark one voxel as having only one type of spin species. Therefore, a particular voxel either gets fully suppressed or not suppressed at all. Currently we are looking for ways to partially suppress the signal originating from voxels labeled as having 25-75%; 50-50% or 75-25% of fat-dense tissue composition.

Solution:
The mentioned challenge was overcome by dividing each voxel into 8 equal and smaller voxels and then labelling them with the required tissues. This made the digital phantom size very big and the simulating such a large phantom caused the simulation to crash frequently. However, by decreasing the FOV for the acquisition process the simulation was made to work. The FOV was centered around the glandular tissue area of the breast and the contrast achieved among different types of glandular tissues was pretty good.

imageimage
Figure 8: Images acquired with voxelized phantom using the SPIR pulse sequence.

Converting BrainWeb models and simulating intensity non-uniformity

Dear Fang Liu,

Thank you very much for answering my former questions. I have tried the 20 new anatomical McGill BrainWeb models. Comparing to the normal model, the new models' file format is a bit different, thus I made a function in MatLab that converts the new models to VObj structures. I have attached the code, maybe it can be useful in the future. I have already tried the new models, they work perfectly in MRiLab.

Regarding the simulations I have some questions:

  1. In addition to the noiselevel, is it possible to simulate other distortions like the intensity non-uniformity?
  2. In the 20 new anatomical models there are additional tissues like Dura and Marrow. Is there any convention to set these values like you did in the "Phantom Parameter Table.xls"? Currently, I dont consider these tissue types, i.e. I just set their tissue parameters to zero.

Thank you in advance for your help.

Best regards,
Peter

convert_BrainWeb_to_MRiLab.zip

Why scale B1 in this method?

The following code snippet was adopted from function DoB1Scaling:
`function rfGain=DoB1Scaling(PulSeg,dt,ActFA)

global VObj;

flag=zeros(size(PulSeg));
ind=diff(abs(PulSeg));
flag(find(ind<0)+1)=1;
flag(ind>=0)=1;
rfGain=((ActFA/180)pi)/(VObj.Gyrosum(PulSeg.*flag)*dt);`

What's the reason for these operations?

Using a bespoke phantom object

Hi,

I've been trying to get MRiLab to work with a bespoke phantom brain, in the VObj format as for the other brain phantoms, except my dimensions are 120x77x120. The brain loads into MRiLab fine, and the previews also appear fine, but any attempt at using the object for simulation results in a falied reconstruction which is essentially just noise, for any sequence selected.
I tried to upload the file here bad sadly the .mat format is not supported.

Many thanks,
Ignacio

about load phantom

Hi, I want to load new phantom, like knee phantom. what shall I do? Do I need to design it myself? Many parameters may not be clear to me. Thank you all very much for answering my question.

Troubles running and compiling MRiLab

I'm having troubles running and compiling MRiLab:

This is my system:
+++++++++++++++++++++++++
Machine | Lenovo M800
CPU | Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
GPU | - [ Intel(R) HD Graphics 530 ]
OS | Windows 7 Enterprise 64-bit
Matlab | Matlab R2015b 64-bit / R2017b 64-bit
C Compiler | Visual Studio 9 2008
VTK | VTK 7.1.1 Standalone Python Interface (Installer)
CUDA | -
IPP | Integrated Performance Primitives 2019 Update 4 ( Intel Parallel Studio XE 2019 )
Framewave | -
ISMRMRD | -
Boost | -
+++++++++++++++++++++++++

Problems are occurring when trying to plot the K-Space trajectory:
Matlab R2015b 64-bit:
"Error occurred at plotting K-Space trajectory. Invalid MEX-file 'DoKSpaceTrajVTK.mexw64': The specified module could not be found."
( Trying it on Matlab R2017b 64-bit throws a whole bunch of "Missing symbol in .dll required by ..." Error Messages. )

So now I'm trying to generate a MSVS2008 Project using cmake-gui to recompile MRiLab.

  • I've installed Intel IPP 2019 Update 4 ( Intel Parallel Studio XE 2019 )
    IPP_ROOT = C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019\windows\ipp
    IPP_ROOT\include contains ipp.h
    IPP_ROOT\lib\intel64 contains ipps.lib, ippvm.lib, ippcore.lib but no ipps_l.lib, ippvm_l.lib, ippcore_l.lib
  • MATLAB_ROOT = C:\Program Files\MATLAB\R2015b
  • I've installed VTK 7.1.1 Standalone Python Interface (Installer)

This is the CMake output for "Configure":
+++++++++++++++++++++++++
The C compiler identification is MSVC 15.0.30729.1
The CXX compiler identification is MSVC 15.0.30729.1
Check for working C compiler: C:/MSVS2008/VC/bin/cl.exe
Check for working C compiler: C:/MSVS2008/VC/bin/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: C:/MSVS2008/VC/bin/cl.exe
Check for working CXX compiler: C:/MSVS2008/VC/bin/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
CMake Warning (dev) at CMakeLists.txt:13 (find_package):
Policy CMP0074 is not set: find_package uses _ROOT variables.
Run "cmake --help-policy CMP0074" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.

Environment variable Matlab_ROOT is set to:

C:\Program Files\MATLAB\R2015b

For compatibility, CMake is ignoring the variable.
This warning is for project developers. Use -Wno-dev to suppress it.

MATLAB_ROOT: C:\Program Files\MATLAB\R2015b
Matlab mex will be used
CMake Warning (dev) at CMakeLists.txt:14 (find_package):
Policy CMP0074 is not set: find_package uses _ROOT variables.
Run "cmake --help-policy CMP0074" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.

Environment variable IPP_ROOT is set to:

C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019\windows\ipp

For compatibility, CMake is ignoring the variable.
This warning is for project developers. Use -Wno-dev to suppress it.

IPP_ROOT (IPP 6): C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019\windows\ipp
Could NOT find IPP (missing: IPP_LIBRARIES)
FRAMEWAVE_ROOT environment variable not set.
In Linux this can be done in your user .bashrc file by appending the corresponding line, e.g:
export FRAMEWAVE_ROOT=/usr/local/framewave/build
In Windows this can be done by adding system variable, e.g:
FRAMEWAVE_ROOT=C:\Program Files\FRAMEWAVE_1.3.1_SRC\Framewave\build
Could NOT find Framewave (missing: FW_LIBRARIES FW_INCLUDE_DIR)
Found OpenMP_C: -openmp (found version "2.0")
Found OpenMP_CXX: -openmp (found version "2.0")
Found OpenMP: TRUE (found version "2.0")
CUDA_TOOLKIT_ROOT_DIR not found or specified
Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY)
CMake Warning at CMakeLists.txt:18 (find_package):
By not providing "FindVTK.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "VTK", but
CMake did not find one.

Could not find a package configuration file provided by "VTK" with any of
the following names:

VTKConfig.cmake
vtk-config.cmake

Add the installation prefix of "VTK" to CMAKE_PREFIX_PATH or set "VTK_DIR"
to a directory containing one of the above files. If "VTK" provides a
separate development package or SDK, be sure it has been installed.

Could NOT find Ismrmrd (missing: ISMRMRD_INCLUDE_DIR ISMRMRD_LIBRARIES ISMRMRD_SCHEMA_DIR)
Looking for pthread.h
Looking for pthread.h - not found
Found Threads: TRUE
Could NOT find Boost (missing: Boost_INCLUDE_DIR thread system)
Neither IPP nor Framewave found. MRiLab engine will not be compiled.
CMake Error at renderer/CMakeLists.txt:2 (include):
include called with wrong number of arguments. include() only takes one
file.

VTK not found. MRiLab DoKSpaceTrajVTK will not be compiled.
ISMRMRD and/or Boost not found. MRiLab to Gadgetron interface will not be compiled
Configuring incomplete, errors occurred!
See also "D:/MRiLab-master/Lib/bin/CMakeFiles/CMakeOutput.log".
See also "D:/MRiLab-master/Lib/bin/CMakeFiles/CMakeError.log".
+++++++++++++++++++++++++

Apparently IPP and VTK are not found.

Any ideas, what can I do to resolve this? Thanks in advance for your help.

Best wishes

EEEOR!!!Recon process aborted. To RESHAPE the number of elements must not change

My systerm is Windows10, Matlab 2017a, MRilab 1.3
When I do a simulation, all seems successful, and the scan progress bar increase 0% to 100%
qq 20180515214808
however at the end of simulation, two Out of error
1
2
I don't what the error mean, can you help me

there are some information about my simulation

  1. Vobj
    size:512,512,35
    XDimRes:1.5mm
    ZDimRes:5mm
    Gyro:73997000
    2.Sequence
    PSD_FIESTA3D
    3.Imaging
    3

Slice thickness not working properly?

Hi,

I'm confused about how slice selection is implemented in MRiLab. I tried an experiment like this: loaded built-in PSD_SPGR3D sequence. Slice thickness was 88mm. Examined sequence details in SeqDesignPanel: RF pulse: duration 0.3ms, TBP = 4. GzSS: same duration, amplitude = 10^-4 T/m. This RF pulse and SS gradient combination actually produced slice thickness of ~3m and can be confirmed with rfDesignPanel. Furthermore, if I changed slice thickness RF pulse and GzSS parameters did not change. Could you please provide some insights on this?

Thanks much!

Running MriLab from MATLAB command window.

I have multiple 3D digital phantoms and I want to simulate MR image volumes using those. However, in order to change the phantom to be used I have to load the new phantom using the GUI of MriLab and this process takes a lot of time given that I want to simulate using a lot of digital phantoms. Is it possible to run MriLab directly from MATLAB command window with prescribed digital phantom location, the pulse sequence to be used and the default attributes associated with the pulse sequence.
Thanks.

Installation on MacOS High Sierra

Hello, I'd like to run MRiLab on Mac, but I'm running into cmake compilation issues. I'm not a cmake expert, but what I did is:

  1. Install packages with homebrew:
~$ brew install cmake
~$ brew install vtk
~$ brew install boost
  1. obtain and install IPP from https://software.seek.intel.com/performance-libraries.

  2. add to .bash_profile:

MATLAB_ROOT=/Applications/MATLAB_R2017b.app/bin
export MATLAB_ROOT
. /opt/intel/ipp/bin/ippvars.sh #sets environment variables for IPP 
IPP_ROOT=$IPPROOT
export IPP_ROOT
  1. modify FindIPP.cmake:

IF ($ENV{IPP_ROOT} MATCHES .*compilers_and_libraries_2018.1.126.*)

However, the libraries on Mac have different names than on Linux..which one is which?

libipp_iw.a       libippchk0.dylib* libippcvp8.dylib* libippie9.dylib*  libippsp8.dylib*
libippcc.a        libippchl9.dylib* libippcvs8.dylib* libippig9.dylib*  libippss8.dylib*
libippcc.dylib*   libippchn8.dylib* libippcvy8.dylib* libippih9.dylib*  libippsy8.dylib*
libippcce9.dylib* libippchp8.dylib* libippdc.a        libippik0.dylib*  libippvm.a
libippccg9.dylib* libippchs8.dylib* libippdc.dylib*   libippil9.dylib*  libippvm.dylib*
libippcch9.dylib* libippchy8.dylib* libippdce9.dylib* libippin8.dylib*  libippvme9.dylib*
libippcck0.dylib* libippcore.a      libippdcg9.dylib* libippip8.dylib*  libippvmg9.dylib*
libippccl9.dylib* libippcore.dylib* libippdch9.dylib* libippis8.dylib*  libippvmh9.dylib*
libippccn8.dylib* libippcore_tl.a   libippdck0.dylib* libippiy8.dylib*  libippvmk0.dylib*
libippccp8.dylib* libippcv.a        libippdcl9.dylib* libipps.a         libippvml9.dylib*
libippccs8.dylib* libippcv.dylib*   libippdcn8.dylib* libipps.dylib*    libippvmn8.dylib*
libippccy8.dylib* libippcve9.dylib* libippdcp8.dylib* libippse9.dylib*  libippvmp8.dylib*
libippch.a        libippcvg9.dylib* libippdcs8.dylib* libippsg9.dylib*  libippvms8.dylib*
libippch.dylib*   libippcvh9.dylib* libippdcy8.dylib* libippsh9.dylib*  libippvmy8.dylib*
libippche9.dylib* libippcvk0.dylib* libippi.a         libippsk0.dylib*
libippchg9.dylib* libippcvl9.dylib* libippi.dylib*    libippsl9.dylib*
libippchh9.dylib* libippcvn8.dylib* libippi_tl.a      libippsn8.dylib*

the include/ files are:

ipp.h         ippch.h       ippcv.h       ippdefs_l.h   ipps.h        ippversion.h
ippbase.h     ippcore.h     ippcv_l.h     ippi.h        ipps_l.h      ippvm.h
ippcc.h       ippcore_l.h   ippdc.h       ippi_l.h      ipptypes.h    iw/
  1. try to compile with cmake:
~/bin/MRiLab/build$ cmake ../Lib/src/
-- MATLAB_ROOT: /Applications/MATLAB_R2017b.app/bin
-- IPP_ROOT (IPP 7): /opt/intel/compilers_and_libraries_2018.1.126/mac/ipp
-- Could NOT find IPP (missing: IPP_LIBRARIES) 
-- FRAMEWAVE_ROOT environment variable not set.
-- In Linux this can be done in your user .bashrc file by appending the corresponding line, e.g:
-- export FRAMEWAVE_ROOT=/usr/local/framewave/build
-- In Windows this can be done by adding system variable, e.g:
-- FRAMEWAVE_ROOT=C:\Program Files\FRAMEWAVE_1.3.1_SRC\Framewave\build
-- Could NOT find Framewave (missing: FW_LIBRARIES FW_INCLUDE_DIR) 
-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES) 
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES) 
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND) 
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY) 
-- Could NOT find Ismrmrd (missing: ISMRMRD_INCLUDE_DIR ISMRMRD_LIBRARIES ISMRMRD_SCHEMA_DIR) 
CMake Warning at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:801 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1542 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:20 (find_package)


CMake Warning at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:801 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1542 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:20 (find_package)


CMake Warning at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:801 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1542 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:20 (find_package)


CMake Warning at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:801 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1542 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:20 (find_package)


CMake Warning at /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:801 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:907 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/local/Cellar/cmake/3.10.2/share/cmake/Modules/FindBoost.cmake:1542 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:20 (find_package)


-- Boost version: 1.66.0
-- Found the following Boost libraries:
--   thread
--   system
--   chrono
--   date_time
--   atomic
MATLAB not found...nothing will be built.
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
MATLAB_INCLUDE_DIR (ADVANCED)
   used as include directory in directory /Users/pimpullens/bin/MRiLab/Lib/src
   used as include directory in directory /Users/pimpullens/bin/MRiLab/Lib/src

-- Configuring incomplete, errors occurred!

Any idea how to continue? Your help will be very much appreciated!

Cheers,

Pim
Univ. Hospital Gent, Belgium

Issue with GPU

I am having an issue using my GPU, it gives an error on start saying "Detecting local GPU Information failed! Unrecognized function or variable 'gpuDeviceCount'"

compilation on linux

Hello

I first try the code with a great interest, (but with the given precompiled mex) but I need now to re-compiler them in order to use a more powerfull graphic card

I am working on a linux ubuntu 16.04.
I install the l_ipp_2017.2.174

the cmake fonction always tel me :
-- MATLAB_ROOT: /export/data/applications/matlab/upmc/R2016b/
-- Matlab mex will be used
-- IPP_ROOT (IPP 6): /opt/intel/ipp/
-- Could NOT find IPP (missing: IPP_LIBRARIES)
...

so no compilation is available

I try to specify a bash varaible IPP_LIBRARIES, but it does not changes

Any idea ?

I am not expert in cmake files, but I had a quick look to the file
./cmake/FindIPP.cmake you search for instance for ippsemergedem64t, but I do not find such a file in /opt/intel

Many thanks

Romain

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.