Hi all, I'm working on a project using uBlas. I'm using dense vector and dense matrix, the dimensions of these structures are very big. So, I was thinking about the opportunity to modify some algorithms of uBlas using multi-thread programming. I've tried to do this using openMP. Below, you find my first attempt. This is a piece of the original code in vector_assign.hpp // Explicitly indexing template<template <class T1, class T2> class F, class V, class E> // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it. void indexing_vector_assign (V &v, const vector_expression<E> &e) { typedef F<typename V::reference, typename E::value_type> functor_type; typedef typename V::size_type size_type; size_type size (BOOST_UBLAS_SAME (v.size (), e ().size ())); #ifndef BOOST_UBLAS_USE_DUFF_DEVICE for (size_type i = 0; i < size; ++ i) functor_type::apply (v (i), e () (i)); #else size_type i (0); DD (size, 2, r, (functor_type::apply (v (i), e () (i)), ++ i)); #endif } And I modified the inner for in this way: int i; #pragma omp parallel private(i) shared(v, e) { #pragma omp for for (i = 0; i < size; ++ i) functor_type::apply (v (i), e () (i)); } I tried the code and it run. Yes I know that it's better if I use the clause schedule in the pragma for, but the real question is: do you think that this code is enough general? Can I extend it with the operations? Thank you in advance Mirko --- Ad maiora semper.