Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

Commit

Permalink
Compilation errors fixed in NabLab C++ library with CLANG. Makefiles …
Browse files Browse the repository at this point in the history
…changed.
  • Loading branch information
lelandaisb committed Mar 10, 2021
1 parent cf63e95 commit a4abdc2
Show file tree
Hide file tree
Showing 39 changed files with 191 additions and 202 deletions.
8 changes: 4 additions & 4 deletions plugins/fr.cea.nabla.cpplib/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(fr_cea_nabla_cpplib CXX)

# SET VARIABLES
set(N_WS_PATH ${CMAKE_SOURCE_DIR})
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
# PROJECT
project(fr_cea_nabla_cpplib CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ LinearAlgebra::CGSolve(const SparseMatrixType& A, const VectorType& b, const Vec
/* p = x */
VectorType p(x.begin(), x.end());
/* Ap = A * p */
VectorType Ap(std::move(A * p));
VectorType Ap(A * p);
/* b - Ap => r */
VectorType r(count);
std::transform(b.begin(), b.end(), Ap.begin(), r.begin(),
Expand All @@ -139,7 +139,7 @@ LinearAlgebra::CGSolve(const SparseMatrixType& A, const VectorType& b, const Vec
/* pAp_dot = dot(p, Ap = A * p) */

/* Ap = A * p */
Ap = std::move(A * p);
Ap = (A * p);

const double pAp_dot(std::inner_product(p.begin(), p.end(), Ap.begin(), 0.0));
const double alpha(old_rdot / pAp_dot);
Expand Down Expand Up @@ -199,14 +199,14 @@ LinearAlgebra::CGSolve(const SparseMatrixType& A, const VectorType& b,
/* p = x */
VectorType p(x.begin(), x.end());
/* Ap = A * p */
VectorType Ap(std::move(A * p));
VectorType Ap(A * p);
/* b - Ap => r */
VectorType r(count);
std::transform(b.begin(), b.end(), Ap.begin(), r.begin(),
[&](const double& lhs, const double& rhs){return (lhs - rhs);});

/* z = C^-1 * r */
VectorType z(std::move(C_minus_1 * r));
VectorType z(C_minus_1 * r);

/* p = z */
std::copy(z.begin(), z.end(), p.begin());
Expand All @@ -217,7 +217,7 @@ LinearAlgebra::CGSolve(const SparseMatrixType& A, const VectorType& b,
/* pAp_dot = dot(p, Ap = A * p) */

/* Ap = A * p */
Ap = std::move(A * p);
Ap = (A * p);

const double pAp_dot(std::inner_product(p.begin(), p.end(), Ap.begin(), 0.0));
const double alpha(old_rTz / pAp_dot);
Expand All @@ -230,7 +230,7 @@ LinearAlgebra::CGSolve(const SparseMatrixType& A, const VectorType& b,
[&](const double& r_i, const double& Ap_i){return (r_i - alpha * Ap_i);});

/* z = C^-1 * r */
z = std::move(C_minus_1 * r);
z = (C_minus_1 * r);

const double rTz(std::inner_product(r.begin(), r.end(), z.begin(), 0.0));
const double beta(rTz / old_rTz);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ CartesianMesh2D::getCommonFace(const Id& cellId1, const Id& cellId2) const
Id
CartesianMesh2D::getBackCell(const Id& faceId) const
{
vector<Id> cells(move(getCellsOfFace(faceId)));
vector<Id> cells(getCellsOfFace(faceId));
if (cells.size() < 2) {
stringstream msg;
msg << "Error in getBackCell(" << faceId << "): please consider using this method with inner face only." << endl;
Expand All @@ -223,7 +223,7 @@ CartesianMesh2D::getBackCell(const Id& faceId) const
Id
CartesianMesh2D::getFrontCell(const Id& faceId) const
{
vector<Id> cells(move(getCellsOfFace(faceId)));
vector<Id> cells(getCellsOfFace(faceId));
if (cells.size() < 2) {
stringstream msg;
msg << "Error in getFrontCell(" << faceId << "): please consider using this method with inner face only." << endl;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ CartesianMesh2DFactory::create()

for(size_t j(0); j <= nbYQuads; ++j) {
for(size_t i(0); i <= nbXQuads; ++i) {
nodes_[node_id_] = RealArray1D<2>{xSize * i, ySize * j};
nodes_[node_id_] = RealArray1D<2>{{xSize * i, ySize * j}};
if (i!=0 && j!=0 && i!=nbXQuads && j!=nbYQuads)
inner_node_ids_[inner_node_id_++] = node_id_;
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,10 @@
namespace nablalib::types
{

// Type alias
using Id = size_t;

template<size_t N>
using IntArray1D = MultiArray<int, N>;

template<size_t M, size_t N>
using IntArray2D = MultiArray<int, M, N>;

template<size_t N>
using RealArray1D = MultiArray<double, N>;

template<size_t M, size_t N>
using RealArray2D = MultiArray<double, M, N>;

/******************************************************************************/
void dummy() {

RealArray<7> v{0., 1., 2., 3., 4., 5., 6.};
RealArray<7> v{{0., 1., 2., 3., 4., 5., 6.}};

std::cout << "RealArray<7> v test value:\t" << v << std::endl;
std::cout << "v dimension is: " << v.dimensions << std::endl;
Expand All @@ -55,9 +40,12 @@ void dummy() {
std::cout << "u[0][0][0][0] = " << u[0][0][0][0] << std::endl << "u dimensions are: " << u.dimensions << std::endl;

std::cout << "5x5 matrix w:\n";

constexpr size_t DIM1=5;
constexpr size_t DIM2=2;
constexpr size_t DIM3=3;
// About clang warning :
// seems like a clang "feature": https://stackoverflow.com/questions/31555584/why-is-clang-warning-suggest-braces-around-initialization-of-subobject-wmis
IntArray<DIM1, DIM2 + DIM3> w{ 2, -1, 0, 0, 0,
-1, 2, -1, 0, 0,
0, -1, 2, -1, 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ namespace nablalib::types
// Generic Multi-Dimension template
// When specifying a 0 dimension MultiArray, it becomes dynamic, using std::vector inheritance instead of std::array
template <typename T, size_t DIM_1, size_t... DIM_N>
struct MultiArray : public std::conditional_t<DIM_1, std::array<MultiArray<T, DIM_N...>, DIM_1>, std::vector<MultiArray<T, DIM_N...>>>
struct MultiArray : public std::conditional_t<(DIM_1>0), std::array<MultiArray<T, DIM_N...>, DIM_1>, std::vector<MultiArray<T, DIM_N...>>>
{
// Template dimensions backup
static constexpr std::array<size_t, 1 + sizeof...(DIM_N)> dimensions = {DIM_1, DIM_N...};
Expand Down Expand Up @@ -176,7 +176,7 @@ struct MultiArray : public std::conditional_t<DIM_1, std::array<MultiArray<T, DI
/******************************************************************************/
// Specialized for 1 dimension to stop recursive calls
template<typename T, size_t DIM>
struct MultiArray<T, DIM> : public std::conditional_t<DIM, std::array<T, DIM>, std::vector<T>>
struct MultiArray<T, DIM> : public std::conditional_t<(DIM>0), std::array<T, DIM>, std::vector<T>>
{
// Template dimensions backup
static constexpr std::array<size_t, 1> dimensions = {DIM};
Expand Down Expand Up @@ -328,22 +328,21 @@ std::ostream& operator<<(std::ostream& os, const std::array<T, N>& array) {
return os;
}

// Pretty printer helper function for 1 dimension MultiArray
template<typename T, size_t DIM>
std::ostream& operator<<(std::ostream& os, const MultiArray<T, DIM>& array) {
for (typename MultiArray<T, DIM>::size_type i(0); i < array.size(); ++i)
std::cout << (i==0?"| ":"") << array[i] << (i==array.size()-1?" |":" ");
return os;
}

// Pretty printer helper function for N dimension MultiArray
template <typename T, size_t DIM_1, size_t... DIM_N>
template <typename T, size_t DIM_1, size_t... DIM_N, typename std::enable_if_t<(sizeof...(DIM_N)>0)>* = nullptr>
std::ostream& operator<<(std::ostream& os, const MultiArray<T, DIM_1, DIM_N...>& array) {
for (auto i : array)
os << i << std::endl;
return os;
}

// Pretty printer helper function for 1 dimension MultiArray
template<typename T, size_t DIM>
std::ostream& operator<<(std::ostream& os, const MultiArray<T, DIM>& array) {
for (typename MultiArray<T, DIM>::size_type i(0); i < array.size(); ++i)
std::cout << (i==0?"| ":"") << array[i] << (i==array.size()-1?" |":" ");
return os;
}

/******************************************************************************/
// Commutative helpers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@ class CMakeUtils
'''
# SET VARIABLES
«FOR v : variables»
«IF v.key == "N_CXX_COMPILER"»
set(CMAKE_CXX_COMPILER «v.value» CACHE STRING "")
«ELSE»
setv.key» «formatCMakePath(v.value)»)
«ENDIF»
«ENDFOR»
«FOR p : providers»
setp.pathVar.key» «p.pathVar.value»)
Expand Down Expand Up @@ -69,13 +73,9 @@ class CMakeUtils
«ENDIF»
'''

/**
* Must be done after the project() command to work (CMAKE_CXX_COMPILER_ID not defined before)
*/
static def setCompiler()
static def checkCompiler()
'''
# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@ class CMakeContentProvider
'''
«CMakeUtils.getFileHeader(false

projectname»Project CXX)

«CMakeUtils.setVariables(variables, externalProviders

«CMakeUtils.checkVariables(neededVariables

«CMakeUtils.setCompiler»
# PROJECT
projectname»Project CXX)

«CMakeUtils.checkCompiler»
«IF !(levelDBPath.nullOrEmpty && findPackageContent.length == 0)»

# FIND PACKAGES
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(ExplicitHeatEquationProject CXX)

# SET VARIABLES
set(N_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)
set(N_WS_PATH $ENV{HOME}/workspaces/NabLab/plugins/fr.cea.nabla.ui/examples)

Expand All @@ -18,8 +16,10 @@ if (NOT DEFINED N_WS_PATH)
message(FATAL_ERROR "N_WS_PATH variable must be set")
endif()

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# PROJECT
project(ExplicitHeatEquationProject CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(Glace2dProject CXX)

# SET VARIABLES
set(N_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)
set(N_WS_PATH $ENV{HOME}/workspaces/NabLab/plugins/fr.cea.nabla.ui/examples)

Expand All @@ -18,8 +16,10 @@ if (NOT DEFINED N_WS_PATH)
message(FATAL_ERROR "N_WS_PATH variable must be set")
endif()

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# PROJECT
project(Glace2dProject CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(HeatEquationProject CXX)

# SET VARIABLES
set(N_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)
set(N_WS_PATH $ENV{HOME}/workspaces/NabLab/plugins/fr.cea.nabla.ui/examples)

Expand All @@ -18,8 +16,10 @@ if (NOT DEFINED N_WS_PATH)
message(FATAL_ERROR "N_WS_PATH variable must be set")
endif()

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# PROJECT
project(HeatEquationProject CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(ImplicitHeatEquationProject CXX)

# SET VARIABLES
set(N_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)
set(N_WS_PATH $ENV{HOME}/workspaces/NabLab/plugins/fr.cea.nabla.ui/examples)
set(LINEARALGEBRAKOKKOS_PATH ${N_WS_PATH}/.nablab/linearalgebra/linearalgebrakokkos)
Expand All @@ -19,8 +17,10 @@ if (NOT DEFINED N_WS_PATH)
message(FATAL_ERROR "N_WS_PATH variable must be set")
endif()

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# PROJECT
project(ImplicitHeatEquationProject CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(IterativeHeatEquationProject CXX)

# SET VARIABLES
set(N_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)
set(N_WS_PATH $ENV{HOME}/workspaces/NabLab/plugins/fr.cea.nabla.ui/examples)

Expand All @@ -18,8 +16,10 @@ if (NOT DEFINED N_WS_PATH)
message(FATAL_ERROR "N_WS_PATH variable must be set")
endif()

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# PROJECT
project(IterativeHeatEquationProject CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
cmake_minimum_required(VERSION 3.10)
set(CMAKE_VERBOSE_MAKEFILE FALSE)

project(ExplicitHeatEquationProject CXX)

# SET VARIABLES
set(N_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_COMPILER /usr/bin/g++ CACHE STRING "")
set(N_KOKKOS_PATH $ENV{HOME}/kokkos/kokkos-install)
set(N_WS_PATH $ENV{HOME}/workspaces/NabLab/plugins/fr.cea.nabla.ui/examples)

Expand All @@ -18,8 +16,10 @@ if (NOT DEFINED N_WS_PATH)
message(FATAL_ERROR "N_WS_PATH variable must be set")
endif()

# CHECK CXX VERSION
set(CMAKE_CXX_COMPILER ${N_CXX_COMPILER} CACHE STRING "")
# PROJECT
project(ExplicitHeatEquationProject CXX)

# CHECK CXX VERSION: must be done after the project() (CMAKE_CXX_COMPILER_ID not defined before)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.4.0")
message(FATAL_ERROR "GCC minimum required version is 7.4.0. Please upgrade.")
Expand Down
Loading

0 comments on commit a4abdc2

Please sign in to comment.