Commit 6bed706f authored by berenger-bramas's avatar berenger-bramas

Make a conditional system to compile with or without blas or mpi.

@FUSE_BLAS
@FUSE_MPI
If one of this keyword appear in the cpp file it will be compiled if possible.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/scalfmm/scalfmm/trunk@438 2616d619-271b-44dc-8df4-d4a8f33a7222
parent 179277ee
......@@ -12,7 +12,7 @@
#define FMPITREEBUILDER_H
#include "../Utils/FMpi.hpp"
#include "../Utils/FQuickSort.hpp"
#include "../Utils/FQuickSortMpi.hpp"
#include "../Utils/FBitonicSort.hpp"
#include "../Utils/FMemUtils.hpp"
......@@ -87,7 +87,7 @@ private:
// sort particles
if(type == QuickSort){
FQuickSort<IndexedParticle,MortonIndex, FSize>::QsMpi(realParticlesIndexed, loader.getNumberOfParticles(), *outputArray, *outputSize,communicator);
FQuickSortMpi<IndexedParticle,MortonIndex, FSize>::QsMpi(realParticlesIndexed, loader.getNumberOfParticles(), *outputArray, *outputSize,communicator);
delete [] (realParticlesIndexed);
}
else {
......@@ -122,7 +122,7 @@ private:
// sort particles
if(type == QuickSort){
FQuickSort<IndexedParticle,MortonIndex, FSize>::QsMpi(realParticlesIndexed, size, *outputArray, *outputSize,communicator);
FQuickSortMpi<IndexedParticle,MortonIndex, FSize>::QsMpi(realParticlesIndexed, size, *outputArray, *outputSize,communicator);
delete [] (realParticlesIndexed);
}
else {
......
......@@ -27,135 +27,8 @@
/////////////////////////////////////////////////////////////////////////////////////////
#ifdef SCALFMM_USE_MPI
#include <mpi.h>
#else
struct MPI_Request{};
struct MPI_Status{ int MPI_SOURCE; };
typedef int MPI_Datatype;
typedef long long MPI_Offset;
typedef int MPI_Comm;
typedef int MPI_Group;
typedef int MPI_File;
typedef int MPI_Op;
typedef int MPI_Info;
typedef int MPI_File;
MPI_Status* MPI_STATUSES_IGNORE = 0;
MPI_Status* MPI_STATUS_IGNORE = 0;
enum{
MPI_SUCCESS,
MPI_LONG_LONG,
MPI_LONG,
MPI_DOUBLE,
MPI_FLOAT,
MPI_INT,
MPI_COMM_WORLD,
MPI_BYTE,
MPI_SUM,
MPI_THREAD_MULTIPLE,
MPI_ANY_SOURCE,
MPI_MODE_RDONLY,
MPI_INFO_NULL,
MPI_MODE_WRONLY,
MPI_MODE_CREATE
};
int MPI_Barrier( MPI_Comm comm ){ return 0; }
int MPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status){ return 0;}
int MPI_File_set_view(MPI_File fh, MPI_Offset disp,
MPI_Datatype etype, MPI_Datatype filetype,
char *datarep, MPI_Info info){ return 0; }
int MPI_Comm_rank( MPI_Comm comm, int *rank ){ return 0; }
int MPI_Comm_size( MPI_Comm comm, int *size ){ return 0; }
int MPI_Probe( int source, int tag, MPI_Comm comm, MPI_Status *status ){ return 0; }
int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm){ return 0; }
int MPI_Comm_group(MPI_Comm comm, MPI_Group *group){ return 0; }
int MPI_Comm_free(MPI_Comm *comm){ return 0; }
int MPI_Group_free(MPI_Group *group){ return 0; }
int MPI_Group_incl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup){ return 0; }
int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm){ return 0; }
int MPI_Init_thread(int *argc, char ***argv, int required, int *provided ){ return 0; }
int MPI_Finalize(){ return 0; }
int MPI_Abort(MPI_Comm comm, int errorcode){ return 0; }
int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
MPI_Op op, int root, MPI_Comm comm){ return 0; }
int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
MPI_Comm comm){ return 0; }
int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source,
int tag, MPI_Comm comm, MPI_Request *request){ return 0; }
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag,
MPI_Comm comm, MPI_Status *status){ return 0; }
int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, int tag,
MPI_Comm comm, MPI_Request *request){ return 0; }
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag,
MPI_Comm comm){ return 0; }
int MPI_Alltoallv(void *sendbuf, int *sendcnts, int *sdispls,
MPI_Datatype sendtype, void *recvbuf, int *recvcnts,
int *rdispls, MPI_Datatype recvtype, MPI_Comm comm){ return 0; }
int MPI_Wait(MPI_Request *request, MPI_Status *status){ return 0; }
int MPI_Waitany(int count, MPI_Request array_of_requests[], int *index,
MPI_Status *status){ return 0; }
int MPI_Waitall(int count, MPI_Request array_of_requests[],
MPI_Status array_of_statuses[]){ return 0; }
int MPI_Waitsome(int incount, MPI_Request array_of_requests[],
int *outcount, int array_of_indices[],
MPI_Status array_of_statuses[]){ return 0; }
int MPI_File_open(MPI_Comm comm, char *filename, int amode,
MPI_Info info, MPI_File *fh){ return 0; }
int MPI_File_read(MPI_File mpi_fh, void *buf, int count,
MPI_Datatype datatype, MPI_Status *status){ return 0; }
int MPI_File_get_position(MPI_File mpi_fh, MPI_Offset *offset){ return 0; }
int MPI_File_get_size(MPI_File mpi_fh, MPI_Offset *size){ return 0; }
int MPI_File_read_at(MPI_File mpi_fh, MPI_Offset offset, void *buf,
int count, MPI_Datatype datatype, MPI_Status *status){ return 0; }
int MPI_Get_count( MPI_Status *status, MPI_Datatype datatype, int *count ){ return 0; }
int MPI_File_close(MPI_File *mpi_fh){ return 0; }
int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
int dest, int sendtag,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
int source, int recvtag,
MPI_Comm comm, MPI_Status *status){ return 0; }
int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype,
int dest, int sendtag, int source, int recvtag,
MPI_Comm comm, MPI_Status *status){ return 0; }
int MPI_Bcast( void *buffer, int count, MPI_Datatype datatype, int root,
MPI_Comm comm ){ return 0; }
#endif
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
......
This diff is collapsed.
This diff is collapsed.
......@@ -40,14 +40,38 @@ foreach(exec ${source_tests_files})
execname ${exec}
NAME_WE
)
add_executable(
${execname}
${exec}
)
target_link_libraries(
${execname}
${fmb_lib}
${BLAS_LIBRARIES}
${LAPACK_LIBRARIES}
)
set(compile_exec "TRUE")
# Test Blas dependency
file(STRINGS "${exec}" lines_blas REGEX "@FUSE_BLAS")
if(lines_blas)
if( NOT SCALFMM_USE_CBLAS )
MESSAGE( STATUS "This needs BLAS = ${exec}" )
set(compile_exec "FALSE")
endif()
endif()
# Test MPI dependency
file(STRINGS "${exec}" lines_mpi REGEX "@FUSE_MPI")
if(lines_mpi)
if( NOT SCALFMM_USE_MPI )
MESSAGE( STATUS "This needs MPI = ${exec}" )
set(compile_exec "FALSE")
endif()
endif()
# Dependency are OK
if( compile_exec )
add_executable(
${execname}
${exec}
)
target_link_libraries(
${execname}
${fmb_lib}
${BLAS_LIBRARIES}
${LAPACK_LIBRARIES}
)
endif()
endforeach(exec)
// ===================================================================================
// Ce LOGICIEL "ScalFmm" est couvert par le copyright Inria 20xx-2012.
// Inria détient tous les droits de propriété sur le LOGICIEL, et souhaite que
// la communauté scientifique l'utilise afin de le tester et de l'évaluer.
// Inria donne gracieusement le droit d'utiliser ce LOGICIEL. Toute utilisation
// dans un but lucratif ou à des fins commerciales est interdite sauf autorisation
// expresse et préalable d'Inria.
// Toute utilisation hors des limites précisées ci-dessus et réalisée sans l'accord
// expresse préalable d'Inria constituerait donc le délit de contrefaçon.
// Le LOGICIEL étant un produit en cours de développement, Inria ne saurait assurer
// aucune responsabilité et notamment en aucune manière et en aucun cas, être tenu
// de répondre d'éventuels dommages directs ou indirects subits par l'utilisateur.
// Tout utilisateur du LOGICIEL s'engage à communiquer à Inria ses remarques
// relatives à l'usage du LOGICIEL
// ===================================================================================
// ==== CMAKE =====
// @FUSE_BLAS
// ================
#include <iostream>
#include <stdlib.h>
#include "../Src/Utils/FBlas.hpp"
FReal FRandom() { return (FReal(rand()) / FReal(RAND_MAX)); }
/**
......
......@@ -14,6 +14,10 @@
// relatives à l'usage du LOGICIEL
// ===================================================================================
// ==== CMAKE =====
// @FUSE_BLAS
// ================
#include <iostream>
#include <cstdio>
......
......@@ -9,6 +9,10 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_MPI
// ================
#include "../Src/Utils/FMpi.hpp"
#include "../Src/Utils/FTic.hpp"
......
......@@ -9,6 +9,9 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_MPI
// ================
#include <iostream>
......
......@@ -10,6 +10,10 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_MPI
// ================
#include <iostream>
#include <cstdio>
......
......@@ -9,6 +9,10 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_MPI
// ================
#include <iostream>
#include <cstdio>
......
......@@ -9,6 +9,10 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_BLAS
// ================
#include <iostream>
#include <cstdio>
......
......@@ -9,6 +9,10 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_BLAS
// ================
#include <iostream>
#include <cstdio>
......
......@@ -9,6 +9,10 @@
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_MPI
// ================
#include "../Src/Utils/FTic.hpp"
#include "../Src/Utils/FMpi.hpp"
#include "../Src/Utils/FParameters.hpp"
......
......@@ -37,17 +37,41 @@ foreach(exec ${source_tests_files})
execname ${exec}
NAME_WE
)
add_executable(
${execname}
${exec}
)
target_link_libraries(
${execname}
${fmb_lib}
)
add_test(
${execname}
${CMAKE_CURRENT_BINARY_DIR}/${execname}
)
set(compile_exec "TRUE")
# Test Blas dependency
file(STRINGS "${exec}" lines_blas REGEX "@FUSE_BLAS")
if(lines_blas)
if( NOT SCALFMM_USE_CBLAS )
MESSAGE( STATUS "This needs BLAS = ${exec}" )
set(compile_exec "FALSE")
endif()
endif()
# Test MPI dependency
file(STRINGS "${exec}" lines_mpi REGEX "@FUSE_MPI")
if(lines_mpi)
if( NOT SCALFMM_USE_MPI )
MESSAGE( STATUS "This needs MPI = ${exec}" )
set(compile_exec "FALSE")
endif()
endif()
# Dependency are OK
if( compile_exec )
add_executable(
${execname}
${exec}
)
target_link_libraries(
${execname}
${fmb_lib}
)
add_test(
${execname}
${CMAKE_CURRENT_BINARY_DIR}/${execname}
)
endif()
endforeach(exec)
......@@ -8,6 +8,10 @@
// Owners: INRIA.
// Copyright © 2011-2012, spread under the terms and conditions of a proprietary license.
// ===================================================================================
// ==== CMAKE =====
// @FUSE_BLAS
// ================
#include "../Src/Containers/FOctree.hpp"
#include "../Src/Containers/FVector.hpp"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment