[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r5437 - in /trunk/getfem: ./ contrib/opt_assembly/ src/
From: |
Yves . Renard |
Subject: |
[Getfem-commits] r5437 - in /trunk/getfem: ./ contrib/opt_assembly/ src/ src/gmm/ |
Date: |
Sun, 23 Oct 2016 20:07:54 -0000 |
Author: renard
Date: Sun Oct 23 22:07:52 2016
New Revision: 5437
URL: http://svn.gna.org/viewcvs/getfem?rev=5437&view=rev
Log:
minor changes
Modified:
trunk/getfem/configure.ac
trunk/getfem/contrib/opt_assembly/opt_assembly.cc
trunk/getfem/src/getfem_generic_assembly.cc
trunk/getfem/src/gmm/gmm_blas_interface.h
Modified: trunk/getfem/configure.ac
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/configure.ac?rev=5437&r1=5436&r2=5437&view=diff
==============================================================================
--- trunk/getfem/configure.ac (original)
+++ trunk/getfem/configure.ac Sun Oct 23 22:07:52 2016
@@ -126,6 +126,7 @@
AC_CHECK_CXX_FLAG([$with_optimization],CXXFLAGS)
AC_CHECK_CXX_FLAG([-Wall -W],CXXFLAGS)
AC_CHECK_CXX_FLAG([-fmessage-length=0],CXXFLAGS)
+ AC_CHECK_CXX_FLAG([-fvisibility-inlines-hidden],CXXFLAGS)
AC_CHECK_CXX_FLAG([-ftemplate-depth-100],CXXFLAGS)
AC_CHECK_CXX_FLAG([-std=c++11],
CXXFLAGS,[AC_CHECK_CXX_FLAG([-std=c++0x],CXXFLAGS,[AC_MSG_ERROR([g++ do not
support option -std=c++11. Update g++ to at least release 4.8.1.])] )])
AC_CHECK_CXX_FLAG([-fPIC],CXXFLAGS)
Modified: trunk/getfem/contrib/opt_assembly/opt_assembly.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/contrib/opt_assembly/opt_assembly.cc?rev=5437&r1=5436&r2=5437&view=diff
==============================================================================
--- trunk/getfem/contrib/opt_assembly/opt_assembly.cc (original)
+++ trunk/getfem/contrib/opt_assembly/opt_assembly.cc Sun Oct 23 22:07:52 2016
@@ -125,6 +125,12 @@
scalar_type norm_error = gmm::vect_norminf(V); \
cout << "Error : " << norm_error << endl;
+#define VEC_TEST_3(title, ndof, expr, mim_, region) \
+ cout << "\n" << title << endl; \
+ ch.init(); ch.tic(); workspace.clear_expressions(); \
+ workspace.add_expression(expr, mim_, region); \
+ workspace.assembly(1); ch.toc(); \
+ cout << "Elapsed time for new assembly " << ch.elapsed() << endl;
#define MAT_TEST_1(title, ndof1, ndof2, expr, mim_, I1_, I2_, old_asm) \
cout << "\n" << title << endl; \
@@ -257,8 +263,13 @@
Iu, getfem::asm_source_term(V, mim, mf_u, mf_u, U));
}
-
+
if (all || only_one == 2) {
+ VEC_TEST_3("Test for nonlinear residual", ndofu, "Det(Grad_u)", mim,
+ size_type(-1));
+ }
+
+ if (all || only_one == 3) {
{VEC_TEST_1("Test for Neumann term", ndofu, "u.Test_u",
mim, NEUMANN_BOUNDARY_NUM,
@@ -284,7 +295,7 @@
A, NEUMANN_BOUNDARY_NUM));}
}
- if (all || only_one == 3) {
+ if (all || only_one == 4) {
{VEC_TEST_1("Test for Neumann term with reduced fem", ndofchi,
"p*Test_chi", mim, DIRICHLET_BOUNDARY_NUM,
Ichi, getfem::asm_source_term(V, mim, mf_chi, mf_p,
@@ -297,17 +308,17 @@
- if (all || select || only_one == 4) {
+ if (all || select || only_one == 5) {
MAT_TEST_1("Test for scalar Mass matrix", ndofp, ndofp, "Test_p.Test2_p",
mim, Ip, Ip, getfem::asm_mass_matrix(K, mim, mf_p));
}
- if (all || select || only_one == 5) {
+ if (all || select || only_one == 6) {
MAT_TEST_1("Test for vector Mass matrix", ndofu, ndofu, "Test_u.Test2_u",
mim, Iu, Iu, getfem::asm_mass_matrix(K, mim, mf_u));
}
- if (all || select || only_one == 6) {
+ if (all || select || only_one == 7) {
MAT_TEST_1("Test for Laplacian stiffness matrix", ndofp, ndofp,
"Grad_Test_p:Grad_Test2_p", mim2, Ip, Ip,
getfem::asm_stiffness_matrix_for_homogeneous_laplacian
@@ -341,7 +352,7 @@
}
}
- if (all || select || only_one == 7) {
+ if (all || select || only_one == 8) {
base_vector lambda(1); lambda[0] = 3.0;
workspace.add_fixed_size_constant("lambda", lambda);
base_vector mu(1); mu[0] = 2.0;
@@ -372,7 +383,7 @@
// "+ mu*(Grad_Test_u'+Grad_Test_u):Grad_Test2_u",
// mim2, Iu, Iu);
- if (N == 2 && (all || only_one == 8)) {
+ if (N == 2 && (all || only_one == 9)) {
MAT_TEST_2(ndofu,ndofu,"lambda*Trace(Grad_Test_u)*Trace(Grad_Test2_u) "
"+mu*(Grad_Test_u'(:,1)"
"+Grad_Test_u(:,1)):Grad_Test2_u(:,1)"
@@ -385,7 +396,7 @@
"+mu*(Grad_Test_u'(2,:)"
"+Grad_Test_u(2,:)):Grad_Test2_u(2,:) ", mim2, Iu, Iu);
}
- if (N == 3 && (all || only_one == 9)) {
+ if (N == 3 && (all || only_one == 10)) {
MAT_TEST_2(ndofu,ndofu,"lambda*Trace(Grad_Test_u)*Trace(Grad_Test2_u) "
"+mu*(Grad_Test_u'(:,1)"
"+Grad_Test_u(:,1)):Grad_Test2_u(:,1)"
@@ -405,7 +416,7 @@
}
- if (all || select || only_one == 10) {
+ if (all || select || only_one == 11) {
base_vector lambda2(ndofp, 3.0);
workspace.add_fem_constant("lambda2", mf_p, lambda2);
base_vector mu2(ndofp, 2.0);
@@ -499,25 +510,25 @@
// Laplacian : 0.55 | 0.88 | 0.10 | 0.16 | 0.25 | 0.08 | 0.03 |
// Homogeneous elas : 0.91 | 2.06 | 0.23 | 0.30 | 0.24 | 0.07 | 0.08 |
// Non-homogeneous elast: 1.10 | 2.43 | 0.26 | 0.32 | 0.24 | 0.08 | 0.08 |
- // test_new_assembly(3, 36, 1);
+ test_new_assembly(3, 36, 1);
// Mass (scalar) : 0.83 | 0.97 |
// Mass (vector) : 1.78 | 1.85 | 0.34 | 0.54 | 0.31 | 0.15 | 0.12 |
// Laplacian : 1.01 | 1.54 | 0.10 | 0.17 | 0.24 | 0.14 | 0.06 |
// Homogeneous elas : 2.31 | 5.09 | 0.88 | 0.95 | 0.24 | 0.14 | 0.11 |
// Non-homogeneous elast: 2.42 | 7.16 | 0.74 | 0.86 | 0.24 | 0.14 | 0.11 |
- // test_new_assembly(2, 200, 2);
+ test_new_assembly(2, 200, 2);
// Mass (scalar) : 0.29 | 0.25 |
// Mass (vector) : 0.58 | 0.55 | 0.14 | 0.22 | 0.09 | 0.04 | 0.01 |
// Laplacian : 0.28 | 0.42 | 0.06 | 0.10 | 0.07 | 0.03 | 0.03 |
// Homogeneous elas : 0.74 | 1.50 | 0.22 | 0.25 | 0.07 | 0.02 | 0.11 |
// Non-homogeneous elast: 0.86 | 2.63 | 0.23 | 0.28 | 0.07 | 0.02 | 0.11 |
- // test_new_assembly(3, 18, 2);
+ test_new_assembly(3, 18, 2);
// Mass (scalar) : 0.42 | 0.30 |
// Mass (vector) : 2.12 | 1.14 | 0.27 | 0.63 | 0.06 | 0.02 | 0.27 |
// Laplacian : 0.38 | 0.66 | 0.16 | 0.17 | 0.05 | 0.02 | 0.02 |
// Homogeneous elas : 3.09 | 4.14 | 1.53 | 1.72 | 0.05 | 0.02 | 0.35 |
// Non-homogeneous elast: 3.11 | 9.92 | 1.48 | 1.68 | 0.05 | 0.02 | 0.37 |
- // test_new_assembly(3, 9, 4);
+ test_new_assembly(3, 9, 4);
// Mass (scalar) : 0.79 | 0.38 |
// Mass (vector) : 6.91 | 1.60 | 0.65 | 1.77 | 0.02 | .005 | 0.21 |
// Laplacian : 0.91 | 0.89 | 0.32 | 0.43 | 0.02 | .005 | 0.07 |
Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5437&r1=5436&r2=5437&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Sun Oct 23 22:07:52 2016
@@ -19,7 +19,7 @@
===========================================================================*/
-#include <array>
+
#include "getfem/getfem_generic_assembly.h"
#include "gmm/gmm_blas.h"
#include <iomanip>
@@ -1050,7 +1050,7 @@
static void ga_print_node(const pga_tree_node pnode,
std::ostream &str) {
- auto prec = str.precision(16);
+ long prec = str.precision(16);
bool is_interpolate(false), is_elementary(false);
bool is_xfem_plus(false), is_xfem_minus(false);
@@ -3289,14 +3289,8 @@
size_type target_dim = Z.sizes()[1];
size_type Qmult = qdim / target_dim;
if (Qmult == 1) {
- auto itt = Z.begin(); auto it = t.begin(), ite = t.end();
- size_type nd = ((t.size()) >> 2);
- for (size_type i = 0; i < nd; ++i) {
- *it++ = (*itt++); *it++ = (*itt++);
- *it++ = (*itt++); *it++ = (*itt++);
- }
- for (; it != ite;) *it++ = (*itt++);
- // gmm::copy(Z.as_vector(), t.as_vector());
+ std::copy(Z.begin(), Z.end(), t.begin());
+ // gmm::copy(Z.as_vector(), t.as_vector());
} else {
size_type ndof = Z.sizes()[0];
GA_DEBUG_ASSERT(t.size() == Z.size() * Qmult * Qmult,
@@ -3330,13 +3324,7 @@
size_type target_dim = Z.sizes()[1];
size_type Qmult = qdim / target_dim;
if (Qmult == 1) {
- auto itt = Z.begin(); auto it = t.begin(), ite = t.end();
- size_type nd = ((t.size()) >> 2);
- for (size_type i = 0; i < nd; ++i) {
- *it++ = (*itt++); *it++ = (*itt++);
- *it++ = (*itt++); *it++ = (*itt++);
- }
- for (; it != ite;) *it++ = (*itt++);
+ std::copy(Z.begin(), Z.end(), t.begin());
// gmm::copy(Z.as_vector(), t.as_vector());
} else {
size_type ndof = Z.sizes()[0];
@@ -4059,14 +4047,7 @@
const base_tensor &tc1;
virtual int exec() {
GA_DEBUG_INFO("Instruction: tensor copy");
-
- auto itt = tc1.begin(); auto it = t.begin(), ite = t.end();
- size_type nd = ((t.size()) >> 2);
- for (size_type i = 0; i < nd; ++i) {
- *it++ = (*itt++); *it++ = (*itt++);
- *it++ = (*itt++); *it++ = (*itt++);
- }
- for (; it != ite;) *it++ = (*itt++);
+ std::copy(tc1.begin(), tc1.end(), t.begin());
// gmm::copy(tc1.as_vector(), t.as_vector());
return 0;
}
@@ -11758,8 +11739,6 @@
pga_instruction pgai = std::make_shared<ga_instruction_assignment>
(root->tensor(), V, gis.ctx, imd);
rmi.instructions.push_back(std::move(pgai));
- // add the assignment instruction or delay it to the end
-
} else { // assembly
// Addition of an assembly instruction
Modified: trunk/getfem/src/gmm/gmm_blas_interface.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/gmm/gmm_blas_interface.h?rev=5437&r1=5436&r2=5437&view=diff
==============================================================================
--- trunk/getfem/src/gmm/gmm_blas_interface.h (original)
+++ trunk/getfem/src/gmm/gmm_blas_interface.h Sun Oct 23 22:07:52 2016
@@ -172,18 +172,18 @@
void sger_(...); void dger_(...); void cgerc_(...); void zgerc_(...);
}
-#if defined(GMM_USES_BLAS_INTERFACE)
+#if 1
/* ********************************************************************* */
/* vect_norm2(x). */
/* ********************************************************************* */
- # define nrm2_interface(param1, trans1, blas_name, base_type) \
- inline number_traits<base_type >::magnitude_type \
- vect_norm2(param1(base_type)) { \
- GMMLAPACK_TRACE("nrm2_interface"); \
- int inc(1), n(int(vect_size(x))); trans1(base_type); \
- return blas_name(&n, &x[0], &inc); \
+# define nrm2_interface(param1, trans1, blas_name, base_type) \
+ inline number_traits<base_type >::magnitude_type \
+ vect_norm2(param1(base_type)) { \
+ GMMLAPACK_TRACE("nrm2_interface"); \
+ int inc(1), n(int(vect_size(x))); trans1(base_type); \
+ return blas_name(&n, &x[0], &inc); \
}
# define nrm2_p1(base_type) const std::vector<base_type > &x
@@ -198,7 +198,7 @@
/* vect_sp(x, y). */
/* ********************************************************************* */
- # define dot_interface(param1, trans1, mult1, param2, trans2, mult2, \
+# define dot_interface(param1, trans1, mult1, param2, trans2, mult2, \
blas_name, base_type) \
inline base_type vect_sp(param1(base_type), param2(base_type)) { \
GMMLAPACK_TRACE("dot_interface"); \
@@ -265,8 +265,8 @@
/* vect_hp(x, y). */
/* ********************************************************************* */
- # define dotc_interface(param1, trans1, mult1, param2, trans2, mult2, \
- blas_name, base_type) \
+# define dotc_interface(param1, trans1, mult1, param2, trans2, mult2, \
+ blas_name, base_type) \
inline base_type vect_hp(param1(base_type), param2(base_type)) { \
GMMLAPACK_TRACE("dotc_interface"); \
trans1(base_type); trans2(base_type); int inc(1), n(int(vect_size(y)));\
@@ -697,7 +697,7 @@
# define gemm_interface_nt(blas_name, base_type, is_const) \
inline void mult_spec(const dense_matrix<base_type > &A, \
- const transposed_col_ref<is_const<base_type > *> &B_,\
+ const transposed_col_ref<is_const<base_type > *> &B_, \
dense_matrix<base_type > &C, r_mult) { \
GMMLAPACK_TRACE("gemm_interface_nt"); \
dense_matrix<base_type > &B \
@@ -728,9 +728,9 @@
# define gemm_interface_tt(blas_name, base_type, isA_const, isB_const) \
inline void mult_spec( \
- const transposed_col_ref<isA_const <base_type > *> &A_,\
- const transposed_col_ref<isB_const <base_type > *> &B_,\
- dense_matrix<base_type > &C, r_mult) { \
+ const transposed_col_ref<isA_const <base_type > *> &A_, \
+ const transposed_col_ref<isB_const <base_type > *> &B_, \
+ dense_matrix<base_type > &C, r_mult) { \
GMMLAPACK_TRACE("gemm_interface_tt"); \
dense_matrix<base_type > &A \
= const_cast<dense_matrix<base_type > &>(*(linalg_origin(A_))); \
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5437 - in /trunk/getfem: ./ contrib/opt_assembly/ src/ src/gmm/,
Yves . Renard <=