Code Monkey home page Code Monkey logo

claire's Introduction

CLAIRE

status status status

  • Are you looking for examples? Check the doc/examples folder.
  • Are in interested in how CLAIRE works? Check the documentation.
  • Are you interested in what CLAIRE is? Read the about section.

Documentation

The links above point to individual markdown files. These files can be found in the doc subfolder. Basic examples for how to execute CLAIRE can be found in the doc/examples folder. The NIREP dataset used to test CLAIRE can be downloaded here.

About

CLAIRE stands for Constrained Large Deformation Diffeomorphic Image Registration. It is a C/C++ software package for velocity-based diffeomorphic image registration in three dimensions. Its performance is optimized for multi-core CPU systems (cpu branch) and multi-node, multi-GPU architectures (gpu branch; default). The CPU version uses MPI for data parallelism, and has been demonstrated to scale on several supercomputing platforms. CLAIRE can be executed on large-scale state-of-the-art computing systems as well as on local compute systems with limited resources.

Notice that the CPU version is accurate and running but new features are currently only being added to the GPU version. The GPU code is a major revision and therefore considered the default and recommended for use.

CLAIRE4Brains

If there are any issues, you have questions, you would like to give us feedback or you have feature requests, do not hesitate to send an email to [email protected].

If you plan on using CLAIRE in your research please cite the following manuscript: A. Mang, A. Gholami, C. Davatzikos & G. Biros. CLAIRE: A distributed-memory solver for constrained large deformation diffeomorphic image registration. SIAM Journal on Scientific Computing 41(5):C548--C584, 2019 [arxiv, sisc]. Additional references are listed here.

Contributors

George Biros, Malte Brunn, Amir Gholami, James Herring, Naveen Himthani, Andreas Mang, and Miriam Mehl.

If you want to contribute to CLAIRE, read the guidlines (see doc/CONTRIBUTING.md).

Code of Conduct

See doc/CODE_OF_CONDUCT.md.

License

Read the LICENSE file for more details.

claire's People

Contributors

amirgholami avatar andreasmang avatar herrinj avatar maltebrunn avatar naveenaero avatar shashanksubramanian avatar yiorgb 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

claire's Issues

Request for Docker Image for CLAIRE

Hi CLAIRE Team,

I hope this message finds you well.

First, thank you for your fantastic work on CLAIRE. I read your manuscript with great interest and I’m genuinely excited to use it in our research with total-body PET. It's not every day someone casually drops a diffeomorphic tool, with heavy parallelization/optimization in mind.

However, I’ve been struggling with the installation process. Despite following the instructions carefully, I’ve run into several issues that I haven’t been able to resolve. This has made it difficult for me to get CLAIRE up and running.

I believe an official Docker image for CLAIRE could make the installation much more straightforward. It would help not only me but also others who might be facing similar challenges. I considered creating a Docker image myself to contribute back, but my difficulties with the initial setup have prevented me from doing so.

Would you consider providing a Docker image for CLAIRE? I think it would be a great help to many in the community. If there’s any way I can assist in this process, please let me know.

Thank you for your time and consideration.

Cheers,
Lalith

Installation with CUDA

@andreasmang:
I am hoping that you can help me with the installation of CLAIRE. Any advice would be very welcome and appreciated. I have performed the following steps. Thanks @tjasaki

  1. Installed Nvidia CUDA Toolkit.
    Graphics Card: NVIDIA Corporation TU117GLM [Quadro T2000 Mobile / Max-Q] / Quadro T2000/PCIe/SSE2.
    Processor: Intel® Core™ i9-9880H CPU @ 2.30GHz × 16.
    OS: Ubuntu 20.04.2 LTS.

  2. cmake, niftilib, python all operational

  3. Installed mpich 3.3.2-2build1 (Ubuntu) (MPI-3.1 standard)

  4. mpicc, mpicxx, and nvcc all recognized, with directories
    /usr/bin/mpicc
    /usr/bin/mpicxx
    /usr/bin/nvcc

  5. running make from claire-gpu/deps results in the following message:

===============================================================================
Configuring PETSc to compile on your system

=============================================================================== ***** WARNING: MAKEFLAGS (set to ) found in environment variables - ignori use ./configure MAKEFLAGS=$MAKEFLAGS if you really want to use that value=============================================================================== TESTING: check from config.libraries(config/BuildSystem/config/libraries.py:157)*******************************************************************************
UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log for details):

Unable to find cuda in default locations!
Perhaps you can specify with --with-cuda-dir=
If you do not want cuda, then give --with-cuda=0


  1. Changing makefile with "WITH_CUDA_MPI = no" results in the same message.

  2. Changing makefile with "WITH_CUDA_MPI = no" and "BUILD_GPU = no" results in a completed make.

  3. Moving forward with this configuration, I set the environment variables using: source env_source.sh

  4. I modified the top-level makefile to specify "BUILD_GPU = no" and "WITH_CUDA_MPI = no". Executing :make -j" results in the error mesage

    config.mk:68: *** This branch only supports GPU build. Stop.

  5. I reverted back to "BUILD_GPU = yes". Running "make VERBOSE=1 VVERBOSE=1 config" shows the following:

fatal: not a git repository (or any of the parent directories): .git

Options

BUILD_GPU: yes; [yes, no]
BUILD_TEST: no; [yes, no]
BUILD_PYTHON: no; [yes, no]

WITH_NIFTI: yes; [yes, no]
WITH_PNETCDF: no; [yes, no]
WITH_DOUBLE: no; [yes, no]
WITH_DEBUG: no; [yes, no]
WITH_DEVELOP: no; [yes, no]
WITH_CUDA_MPI: no; [yes, no]

BUILD_DIR: ./bin

CXX: mpicxx
NVCC: nvcc

internal build options

BUILD_SHARED: no; [yes, no]
BUILD_TARGET: X86; [POWER9, X86]

MPI_DIR: /usr
CUDA_DIR: /usr
PETSC_DIR: /home/asaki/Software/claire-gpu/deps/lib
NIFTI_DIR: /home/asaki/Software/claire-gpu/deps/lib
ZLIB_DIR: ./
PNETCDF_DIR:
PYTHON_DIR: /usr/include/python3.5

GPU_VERSION:
CPP_VERSION: c++11

APP_DIR: ./apps
SRC_DIR: ./src
OBJ_DIR: ./obj
LIB_DIR: ./lib
EXSRC_DIR: ./3rdparty

CXX_FLAGS:
NVCC_FLAGS:
LD_FLAGS:

Unable to compile

I am trying to install Claire on ubuntu 20.04 and am unable to compile.

Error 1:
petscmat.h:685:1: error: ‘PETSC_CXX_INLINE’ does not name a type; did you mean ‘PETSC_C_INLINE’?
685 | PETSC_STATIC_INLINE PetscErrorCode MatGetValue(Mat v,PetscInt i,PetscInt j,PetscScalar *va) {return MatGetValues(v,1,&i,1,&j,va);}

Error 2:
./include/MemoryUtils.hpp: In member function ‘PetscErrorCode reg::ManagedMemory::CopyDeviceToHost()’:
./include/MemoryUtils.hpp:260:3: error: ‘PETSC_FUNCTION_NAME_CXX’ was not declared in this scope; did you mean ‘PETSC_FUNCTION_NAME_C’?
260 | PetscFunctionBegin;

Has anyone else seen these there is a huge barrage of these errors I just selected one instance.

Best,
Ahsan

JOSS Review: Unit Tests

Issue Description

Hi @andreasmang, how you have tested/validated your code and it's outputs? Currently, as far as I can find, there is no automated test suite via Github Actions or other.

CUDA error (700) when using "h1s-stokes" regularization

when using "h1s-stokes" like

./bin/claire -mr ./doc/data/brain01.nii.gz -mt ./doc/data/brain02.nii.gz -regnorm h1s-stokes

return CUDA error string: an illegal memory access was encountered
CUDA error code src/Spectral/mpicufft.cpp:276: 700

other parameters works well

gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
nvcc Build cuda_11.0_bu.TC445_37.28540450_0
petsc 3.14.2
openmpi mpirun (Open MPI) 4.0.3

Python support

Dear Claire developers,

Thank you for open sourcing this great package. I would like to ask you, if you have solution to adopt this package to python env. ?
Second question is related to data size, Is this package able of handling data larger than RAM size? Like data with size of terabyte.

Docker File

I am wondering if Claire has a docker file and if not, are you planning to release one?

build script

the build script for external libraries fails for directories with spaces in the name

cpu branch configure: pnetcdf.h

I have been unable to install a working copy of claire-gpu. The installation
initially appeared to have completed successfully up until running the makefile:

make -j

The terminal output begins with the message:

fatal: not a git repository (or any of the parent directories): .git

and continues. The next error message is

./include/ReadWriteReg.hpp:29:10: fatal error: pnetcdf.h: No such file or directory
29 | #include "pnetcdf.h"
| ^~~~~~~~~~~
compilation terminated.

Several similar messages appear refering to pnetcdf.h. Working backwards, I
found that that the compilation process ran into a compilation error:

Error during compile, check cxx_opt_sgl/lib/petsc/conf/make.log
Send it and cxx_opt_sgl/lib/petsc/conf/configure.log to [email protected]

The two files in question are included. Note that all dependencies were downloaded/installed using the provided build scipt and all paths have been set.
Thank you for any help you can provide.

Tom

configure.log

make.log

Add PNETCDF support

PNETCDF support for multi-GPU code needs to be added (for large-scale applications)

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.