cmak-mocapy

来源:互联网 发布:淘宝网首页石英加热管 编辑:程序博客网 时间:2024/06/06 07:42

///88888888888888888888888888888888888888888



template<typename T>
void MDArray<T>::inv() {
  int n = shape[1];

  if (n <= 4) // Faster for small matrices
    return inv_old();
 

  // Use LU decomposition
  int m = n;
  int info, lwork;
  int *ipiv = NULL;
  double *work = NULL;
  int err = 0;
  int fpx_i;
   __CLPK_doublereal a[n*n];
  ipiv = (int*) malloc(m * sizeof *ipiv);
  if (ipiv == NULL) {
    fputs("out of memory\n", stderr);
    return ;
  }

  for(fpx_i=0; fpx_i<1;fpx_i++)
    {
 
      work = (double*) malloc(sizeof *work);
      if (work == NULL) {
    fputs("out of memory\n", stderr);
    err = 1;
    break;
    //    goto bailout;
      }   


      //  __CLPK_doublereal a[n*n];
      flat_array(a);
 
      dgetrf_(&m, &n, a, &m, ipiv, &info);   

      if (info != 0) {
    fprintf(stderr, "dgetrf: info = %d\n", info);
    err = 1;
    break; //fpx
    //goto bailout;
      }
 
  // query for workspace size
      lwork = -1;
      dgetri_(&n, a, &n, ipiv, work, &lwork, &info);
 
      if (info != 0 || work[0] <= 0.0) {
    fprintf(stderr, "dgetri (workspace): info = %d\n", info);
    err = 1;
    //goto bailout;
    break; //fpx
    //goto bailout;
      }
 
      lwork = (int) work[0];
 
      work = (double*) realloc(work, lwork * sizeof *work);
      if (work == NULL) {
    fputs("out of memory\n", stderr);
    err = 1;
    break; //fpx
    //goto bailout;
      }
 
      dgetri_(&n, a, &n, ipiv, work, &lwork, &info);
 
      if (info != 0) {
    fprintf(stderr, "dgetri: info = %d\n", info);
    err = 1;
      }
    }
  //bailout:
 
  free(ipiv);
  free(work);
  set_values(a);
  return ;
}








//888888888888888888888888888888888888888888







# The name of our project is "MOCAPY". CMakeLists files in this project can

# refer to the root source directory of the project as ${MOCAPY_SOURCE_DIR} and
# to the root binary directory of the project as ${MOCAPY_BINARY_DIR}.
cmake_minimum_required (VERSION 2.6.2)
project (MOCAPY C CXX Fortran)
# version number
set(MOCAPY_VERSION 0.1)

# Recurse into the "src" and "examples" subdirectories. This does not actually
# cause another cmake executable to run. The same process will walk through
# the project's entire directory structure.
add_subdirectory (src)
add_subdirectory (examples)
add_subdirectory (tests)

# settings for making distribution package
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mocapy is a Dynamic Bayesian Network toolkit")
set(CPACK_PACKAGE_VENDOR "Thomas Hamelryck and Martin Paluszewski")
#set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_SOURCE_DIR}/README)
set(CPACK_GENERATOR TGZ)
set(
        CPACK_SOURCE_PACKAGE_FILE_NAME
        "Mocapy-${MOCAPY_VERSION}"
        CACHE INTERNAL "tarball basename"
        )
set(CPACK_SOURCE_GENERATOR TGZ)
include(CPack)




----------------------------------

SET(BUILD_RELEASE ON)
SET(BUILD_DEBUG OFF)
SET(BUILD_PROFILE OFF)
SET(BUILD_DUMMYRANDOM OFF)

SET(Boost_USE_MULTITHREAD OFF)
       
FIND_PACKAGE(Boost 1.39)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

SET(Mocapy_src
utils/LogFactorial.cpp
multinomial/MultinomialDensities.cpp
multinomial/MultinomialDensity.cpp
multinomial/MultinomialESS.cpp
dirichlet/DirichletDensities.cpp
dirichlet/DirichletDensity.cpp
dirichlet/DirichletESS.cpp
inference/abstractinfengine.cpp
framework/dbn.cpp
discrete/discretedensities.cpp
discrete/discreteess.cpp
discrete/discretepriors.cpp
framework/emengine.cpp
framework/essbase.cpp
inference/detail/forwardbacktracker.cpp
inference/detail/generalinfenginemm.cpp
gaussian/gaussiandensities.cpp
gaussian/gaussianess.cpp
gaussian/shrinkage/Shrinkage.cpp
gaussian/shrinkage/ShrinkageHelpers.cpp
inference/gibbsrandom.cpp
inference/fwbtrandom.cpp
inference/infenginemm.cpp
inference/infenginehmm.cpp
inference/infenginemcmc.cpp
inference/mcmc.cpp
inference/moreabstractinfengine.cpp
gaussian/multigauss.cpp
framework/node.cpp
framework/nodefactory.cpp
framework/parentmap.cpp
poisson/poissondensities.cpp
poisson/poissoness.cpp
poisson/poissonsample.cpp
bippo/bippodensities.cpp
bippo/bippoess.cpp
bippo/bippo.cpp
utils/random_data.cpp
utils/randomgen.cpp
inference/sampleinfengine.cpp
utils/utils.cpp
vonmises/vonmises.cpp
vonmises2d/vonmises2d.cpp
vonmises2d/vonmises2ddensities.cpp
vonmises2d/vonmises2dess.cpp
vonmises/vonmisesdensities.cpp
vonmises/vonmisesess.cpp
kent/kentdensities.cpp
kent/kentess.cpp
)

SET(Integrate_src
utils/netlib/integrate.cpp
utils/netlib/integrate.h
utils/netlib/slatec/d1mach.f
utils/netlib/slatec/d9lgmc.f
utils/netlib/slatec/dcsevl.f
utils/netlib/slatec/dgamlm.f
utils/netlib/slatec/dgamma.f
utils/netlib/slatec/dqags.f
utils/netlib/slatec/dqagse.f
utils/netlib/slatec/dqelg.f
utils/netlib/slatec/dqk21.f
utils/netlib/slatec/dqpsrt.f
utils/netlib/slatec/fdump.f
utils/netlib/slatec/i1mach.f
utils/netlib/slatec/initds.f
utils/netlib/slatec/j4save.f
utils/netlib/slatec/xercnt.f
utils/netlib/slatec/xerhlt.f
utils/netlib/slatec/xermsg.f
utils/netlib/slatec/xerprn.f
utils/netlib/slatec/xersve.f
utils/netlib/slatec/xgetua.f
)

SET(Functions_src
utils/vector_nD.h
utils/optimize.h
utils/netlib/cephes/chbevl.c
utils/netlib/cephes/const.c
utils/netlib/cephes/gamma.c
utils/netlib/cephes/zeta.c
utils/netlib/cephes/i0.c
utils/netlib/cephes/i1.c
utils/netlib/cephes/isnan.c
utils/netlib/cephes/mconf.h
utils/netlib/cephes/mtherr.c
utils/netlib/cephes/polevl.c
)

SET(LIBRARY_OUTPUT_PATH ${MOCAPY_SOURCE_DIR}/libs)

# build release library
IF(BUILD_RELEASE)
add_library (Mocapy STATIC
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )

SET_TARGET_PROPERTIES(Mocapy PROPERTIES COMPILE_FLAGS " -O3 -fPIC -c -fmessage-length=0 -I${MOCAPY_SOURCE_DIR}/src")
ENDIF(BUILD_RELEASE)

#IF(BUILD_RELEASE)
#add_library (Mocapy SHARED
#        ${Mocapy_src}
#        ${Integrate_src}
#        ${Functions_src}
#        )

#SET_TARGET_PROPERTIES(Mocapy PROPERTIES COMPILE_FLAGS " -O3 -fPIC -c -fmessage-length=0 -I${MOCAPY_SOURCE_DIR}/src")
#ENDIF(BUILD_RELEASE)


IF(BUILD_DEBUG)
add_library (MocapyD
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )
SET_TARGET_PROPERTIES(MocapyD PROPERTIES COMPILE_FLAGS "-O0 -fPIC -g -Wall -c -fmessage-length=0")
ENDIF(BUILD_DEBUG)

IF(BUILD_PROFILE)
add_library (MocapyP
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )
SET_TARGET_PROPERTIES(MocapyP PROPERTIES COMPILE_FLAGS "-pg -fPIC -O3 -Wall -c -fmessage-length=0")
ENDIF(BUILD_PROFILE)

IF(BUILD_DUMMYRANDOM)
add_library (MocapyDR
        ${Mocapy_src}
        ${Integrate_src}
        ${Functions_src}
        )
SET_TARGET_PROPERTIES(MocapyDR PROPERTIES COMPILE_FLAGS "-DRANDDUMMY  -O3 -fPIC -Wall -c -fmessage-length=0")
ENDIF(BUILD_DUMMYRANDOM)


# install commands
#INSTALL(TARGETS Mocapy
#        LIBRARY DESTINATION lib
#        ARCHIVE DESTINATION lib
#        )




---------------------------------

SET(BUILD_RELEASE ON)
SET(BUILD_DEBUG OFF)
SET(BUILD_PROFILE OFF)
SET(BUILD_DUMMYRANDOM OFF)
SET(CMAKE_VERBOSE_MAKEFILE OFF)

SET(Boost_USE_STATIC_LIBS ON)

FIND_PACKAGE(Boost COMPONENTS serialization program_options thread REQUIRED)

FIND_LIBRARY(PTHREAD pthread)

# Make sure the compiler can find include files from mocapy.
include_directories (${MOCAPY_SOURCE_DIR}/src)

# find lapack
FIND_LIBRARY(LAPACK_LIBRARY NAMES lapack )
IF(NOT LAPACK_LIBRARY)
message("error: could not find lapack library")
ENDIF(NOT LAPACK_LIBRARY)

# FFLAGS depend on the compiler
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)

if (Fortran_COMPILER_NAME STREQUAL "gfortran")
  # gfortran
  set (CMAKE_FLIB "gfortran")
elseif (Fortran_COMPILER_NAME STREQUAL "g77")
  # g77
  set (CMAKE_FLIB "g2c")
else (Fortran_COMPILER_NAME STREQUAL "gfortran")
#  message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
#  message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
#  message ("No optimized Fortran link flags are known, we just try -lgfortran")
  set (CMAKE_FLIB "gfortran")
endif (Fortran_COMPILER_NAME STREQUAL "gfortran")

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})


IF(BUILD_RELEASE)
SET(CMAKE_CXX_FLAGS "-O3 -fPIC -Wall -fmessage-length=0")
SET(MOCAPYLIB Mocapy CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_RELEASE)

IF(BUILD_DEBUG)
SET(CMAKE_CXX_FLAGS "-g -O0 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyD CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_DEBUG)

IF(BUILD_PROFILE)
SET(CMAKE_CXX_FLAGS "-pg -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyP CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_PROFILE)

IF(BUILD_DUMMYRANDOM)
SET(CMAKE_CXX_FLAGS "-DRANDDUMMY -O3 -Wall -fmessage-length=0")
SET(MOCAPYLIB MocapyDR CACHE STRING "Mocapy library used when linking executables")
ENDIF(BUILD_DUMMYRANDOM)


SET(PROGS mdarray hmm_bippo hmm_factorial hmm_simple hmm_discrete discrete_hmm_with_prior hmm_gauss hmm_gauss_1d hmm_multinomial hmm_dirichlet hmm_poisson hmm_vonmises infenginehmm_example infenginemm_example hmm_torus hmm_kent)
SET(PROGS_BOOST_OPTIONS_THREADS mlr-uni)

FOREACH(p ${PROGS})
        add_executable(${p} ${p}.cpp)
        target_link_libraries (${p} ${MOCAPYLIB}  ${Boost_SYSTEM_LIBRARY} ${Boost_SERIALIZATION_LIBRARY} ${LAPACK_LIBRARY} ${CMAKE_FLIB})
ENDFOREACH(p)

FOREACH(p ${PROGS_BOOST_OPTIONS_THREADS})
        add_executable(${p} ${p}.cpp)
        target_link_libraries (${p} ${MOCAPYLIB} ${Boost_SYSTEM_LIBRARY} ${Boost_SERIALIZATION_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_THREAD_LIBRARY} ${PTHREAD} ${LAPACK_LIBRARY} ${CMAKE_FLIB})
ENDFOREACH(p)

# copy data directory
exec_program(
        ${CMAKE_COMMAND}
        ARGS
        "-E create_symlink \"${CMAKE_CURRENT_SOURCE_DIR}/data\" \"${CMAKE_CURRENT_BINARY_DIR}/data\""
        )
#exec_program(
#        ${CMAKE_COMMAND}
#        ARGS
#        "-E copy_directory \"${CMAKE_CURRENT_SOURCE_DIR}/data\" \"${CMAKE_CURRENT_BINARY_DIR}\""
#        )




---------------------------------

原创粉丝点击