You can subscribe to this list here.
2010 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}
(1) 
_{Jun}
(8) 
_{Jul}
(16) 
_{Aug}
(6) 
_{Sep}

_{Oct}

_{Nov}

_{Dec}
(5) 

2011 
_{Jan}
(4) 
_{Feb}
(3) 
_{Mar}
(5) 
_{Apr}

_{May}
(24) 
_{Jun}

_{Jul}
(5) 
_{Aug}
(17) 
_{Sep}

_{Oct}
(6) 
_{Nov}
(9) 
_{Dec}
(8) 
2012 
_{Jan}
(5) 
_{Feb}
(14) 
_{Mar}
(25) 
_{Apr}
(7) 
_{May}
(15) 
_{Jun}
(12) 
_{Jul}
(22) 
_{Aug}
(4) 
_{Sep}
(10) 
_{Oct}
(10) 
_{Nov}
(19) 
_{Dec}
(17) 
2013 
_{Jan}
(8) 
_{Feb}
(10) 
_{Mar}
(16) 
_{Apr}
(3) 
_{May}
(16) 
_{Jun}
(26) 
_{Jul}

_{Aug}
(9) 
_{Sep}

_{Oct}
(8) 
_{Nov}
(17) 
_{Dec}
(2) 
2014 
_{Jan}
(37) 
_{Feb}
(15) 
_{Mar}
(6) 
_{Apr}
(9) 
_{May}
(11) 
_{Jun}
(11) 
_{Jul}
(9) 
_{Aug}
(9) 
_{Sep}
(19) 
_{Oct}
(4) 
_{Nov}
(22) 
_{Dec}
(21) 
2015 
_{Jan}

_{Feb}
(7) 
_{Mar}
(2) 
_{Apr}
(17) 
_{May}
(22) 
_{Jun}
(11) 
_{Jul}
(11) 
_{Aug}
(6) 
_{Sep}
(7) 
_{Oct}

_{Nov}
(5) 
_{Dec}

2016 
_{Jan}
(1) 
_{Feb}
(3) 
_{Mar}
(4) 
_{Apr}
(8) 
_{May}
(8) 
_{Jun}
(11) 
_{Jul}
(2) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}
(6) 
2017 
_{Jan}

_{Feb}
(1) 
_{Mar}
(2) 
_{Apr}
(19) 
_{May}

_{Jun}
(7) 
_{Jul}
(7) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

From: Alan <alan.buchanan@as...>  20160608 08:19:42

Thanks for your prompt response yesterday. I have been using ViennaCL for a number of months and only joined the support group yesterday ! I therefore have a back catologue of queries that I hope you can assist with. _Background _ 1. writing a bundle least squares adjustment for my masters. The matrices I am solving have the following properties. 1. Design matrices are large and very sparse 2. The Normal matrice (I have seen this called the Hessian) is also large and sparse but has a systematic structure (with correct parameter arrangement  One partition is comprised of 3x3 blocks down the diagonal  One partition is effectively a solid block of data  The matrix is symetrical (not sure that is the right term). The upper triangular data is mirrored in the lower triangular part. _Matrix Formation _ From the ViennaCL help I interpreted that there is a overhead associated with computing on the CPU and then copying element by element to the GPU. Therefore I am using Eigen matrices to form the design matrices (which are sparse). I continue using Eigen to multiple the matrices to get the Normal Matrix (or Hessian). I have found that multipling sparse matrices is very efficient even on the CPU so have kept uses Eigen. _Normal Equation solution_ I then do the solution using ViennaCL. _Question 1._ I am using the LevenbergMarquardt method to assist in the solution. This applies a damping term down the main diagonal which assists in convergence and minimizing iterations.  Currently I apply this damping term by multiplying element by element down the diagonal. Is there a more efficient way to do this in ViennaCL (i.e. multiplying a scalar along the diagonal)? _Question 2._ The Normal equation is sparse but the resultant Inverse is dense. I solve using Norm_inv = viennacl::linalg::solve(Norm, I, upper_tag()); // I is the identity matrix The Normal inverse is required as it contains information required for statistical analysis of the solution. Is it possible to solve a sparse matrix and generate a dense matrix solution ? _Question 3. _ What is the suggested solver to use for a symmetric matrix with the block structure I describe above. upper_tag() or cg_tag() ? _Question 4. _ I have looked at the reorder function. However I am not sure whether I need this as I can control the matrix structure by organizing the parameter order in the design matrix. Just for my own interest I found bandwidthreduction.cpp on the website. I cut out these three lines which I believe are the main function calls std::vector<int> r = generate_random_reordering(n); std::vector< std::map<int, double> > matrix2 = reorder_matrix(matrix, r); r = viennacl::reorder <http://viennacl.sourceforge.net/doc/namespaceviennacl.html#af22338e452cee008bee5e38070ddc611>(matrix2, viennacl::gibbs_poole_stockmeyer_tag <http://viennacl.sourceforge.net/doc/structviennacl_1_1gibbs__poole__stockmeyer__tag.html>;()); I don't understand how this works (I haven't looked up the map class). A. Does the original Matrix get rearranged ? B. How is the resultant Vector used elsewhere. C. Do you need to unorder later on ?  I need to multiple the Inverse by another matrix to generate the final solution.  I would need to unorder the inverse or reorder this second matrix the same way.  I also need to know how to find the correct solution elements. _Question 5. _ I am currently using a computer with a AMD Radeon HD 7600M Series graphics card. My understanding is that I can only use OpenCL for GPU operations. I am considering getting a machine with a NVIDIA graphics card as I understand that this enable using CUDA. Is CUDA the most mature and best option for GPU processing (specifically for ViennaCL). I notice that ViennaCL has an open for VIENNACL_WITH_OPENMP define. I am not sure what OpenMP actually does but should this be enabled and I assume OpenMP installed ? I apologize for all the questions at once. Regards, Alan Buchanan 
From: Alan <alan.buchanan@as...>  20160608 02:15:36

Thanks for your prompt response yesterday. I have been using ViennaCL for a number of months and only joined the support group yesterday ! I therefore have a back catologue of queries that I hope you can assist with. _Background _ 1. writing a bundle least squares adjustment for my masters. The matrices I am solving have the following properties. 1. Design matrices are large and very sparse 2. The Normal matrice (I have seen this called the Hessian) is also large and sparse but has a systematic structure (with correct parameter arrangement  One partition is comprised of 3x3 blocks down the diagonal  One partition is effectively a solid block of data  The matrix is symetrical (not sure that is the right term). The upper triangular data is mirrored in the lower triangular part. _Matrix Formation _ From the ViennaCL help I interpreted that there is a overhead associated with computing on the CPU and then copying element by element to the GPU. Therefore I am using Eigen matrices to form the design matrices (which are sparse). I continue using Eigen to multiple the matrices to get the Normal Matrix (or Hessian). I have found that multipling sparse matrices is very efficient even on the CPU so have kept uses Eigen. _Normal Equation solution_ I then do the solution using ViennaCL. _Question 1._ I am using the LevenbergMarquardt method to assist in the solution. This applies a damping term down the main diagonal which assists in convergence and minimizing iterations.  Currently I apply this damping term by multiplying element by element down the diagonal. Is there a more efficient way to do this in ViennaCL (i.e. multiplying a scalar along the diagonal)? _Question 2._ The Normal equation is sparse but the resultant Inverse is dense. I solve using Norm_inv = viennacl::linalg::solve(Norm, I, upper_tag()); // I is the identity matrix The Normal inverse is required as it contains information required for statistical analysis of the solution. Is it possible to solve a sparse matrix and generate a dense matrix solution ? _Question 3. _ What is the suggested solver to use for a symmetric matrix with the block structure I describe above. upper_tag() or cg_tag() ? _Question 4. _ I have looked at the reorder function. However I am not sure whether I need this as I can control the matrix structure by organizing the parameter order in the design matrix. Just for my own interest I found bandwidthreduction.cpp on the website. I cut out these three lines which I believe are the main function calls std::vector<int> r = generate_random_reordering(n); std::vector< std::map<int, double> > matrix2 = reorder_matrix(matrix, r); r = viennacl::reorder <http://viennacl.sourceforge.net/doc/namespaceviennacl.html#af22338e452cee008bee5e38070ddc611>(matrix2, viennacl::gibbs_poole_stockmeyer_tag <http://viennacl.sourceforge.net/doc/structviennacl_1_1gibbs__poole__stockmeyer__tag.html>;()); I don't understand how this works (I haven't looked up the map class). A. Does the original Matrix get rearranged ? B. How is the resultant Vector used elsewhere. C. Do you need to unorder later on ?  I need to multiple the Inverse by another matrix to generate the final solution.  I would need to unorder the inverse or reorder this second matrix the same way.  I also need to know how to find the correct solution elements. _Question 5. _ I am currently using a computer with a AMD Radeon HD 7600M Series graphics card. My understanding is that I can only use OpenCL for GPU operations. I am considering getting a machine with a NVIDIA graphics card as I understand that this enable using CUDA. Is CUDA the most mature and best option for GPU processing (specifically for ViennaCL). I notice that ViennaCL has an open for VIENNACL_WITH_OPENMP define. I am not sure what OpenMP actually does but should this be enabled and I assume OpenMP installed ? I apologize for all the questions at once. Regards, Alan Buchanan 
From: Alan <alan.buchanan@as...>  20160607 08:51:09

Thanks for the explanation and advice Karli, Your comment : "matrix_range objects operate on the original entries of the full matrix. That is, whenever you manipulate A, B, C, or D, the entries in the original matrix are changed as well." Solves my problem. I thought this created separate matrices. My solution becomes quite simple as I can create sub matrices variables from the required output matrix and write the solution directly without worrying about copying memory. I have just tested and is working a treat. On 7/06/2016 3:15 PM, Karl Rupp wrote: > Hi Alan, > > I'm not sure whether I understand your question correctly. > matrix_range objects operate on the original entries of the full > matrix. That is, whenever you manipulate A, B, C, or D, the entries in > the original matrix are changed as well. This is probably not what you > want. > > I think that you should instead extract the entries representing A, B, > C, and D into smaller matrix objects (let's call them mA, mB, mC, mD), > then compute the inverse based on the Schur complement according to > your formula, and finally put everything back into the original > matrix. This way you only need matrix_range objects for extracting the > entries from the original matrix to mA, mB, mC, mD, and for writing > the entries from mA, mB, mC, mD back into the original matrix. This is > then achieved via direct assignments from/to matrix_range objects: > > mA = A; // extract from original matrix > // compute something > A = mA; // write back to original matrix > > Best regards, > Karli > > > > On 06/07/2016 05:40 AM, Alan wrote: >> Hi, >> >> I am inverting a large matrix using partitioning. >> i.e. >> >> [ A B C D ] − 1 = [ A − 1 + A − 1 B ( D − C A − 1 B ) − 1 C A − 1 − >> A − 1 B ( D − C A − 1 B ) − 1 − ( D − C A − 1 B ) − 1 C A − 1 ( D − >> C A − 1 B ) − 1 ] , {\displaystyle {\begin{bmatrix}\mathbf {A} >> &\mathbf {B} \\\mathbf {C} &\mathbf {D} >> \end{bmatrix}}^{1}={\begin{bmatrix}\mathbf {A} ^{1}+\mathbf {A} >> ^{1}\mathbf {B} (\mathbf {D} \mathbf {CA} ^{1}\mathbf {B} >> )^{1}\mathbf {CA} ^{1}&\mathbf {A} ^{1}\mathbf {B} (\mathbf {D} >> \mathbf {CA} ^{1}\mathbf {B} )^{1}\\(\mathbf {D} \mathbf {CA} >> ^{1}\mathbf {B} )^{1}\mathbf {CA} ^{1}&(\mathbf {D} \mathbf {CA} >> ^{1}\mathbf {B} )^{1}\end{bmatrix}},} >> >> {\displaystyle \,} >> >> >> I form the submatrices as follows: >> viennacl::range r1(0,partition); >> viennacl::range r2(partition,u); >> viennacl::matrix_range<viennacl::matrix<double>> >> A(viennacl_Norm,r1,r1); >> viennacl::matrix_range<viennacl::matrix<double>> >> B(viennacl_Norm,r1,r2); >> viennacl::matrix_range<viennacl::matrix<double>> >> C(viennacl_Norm,r2,r1); >> viennacl::matrix_range<viennacl::matrix<double>> >> D(viennacl_Norm,r2,r2); >> >> I then manipulate the sub matrices using the above formula (code not >> shown). >> >> I then wish to recreate the full inverted matrix from its parts. >> >> I currently can only do this using a very inefficient method (element by >> element copy using for loops) which defeats the original reason for >> partitioning. >> for(int i = 0; i < partition;i++) >> for(int k = 0; k < partition;k++) >> viennacl_Norm_i(i,k) = A1(i,k); >> for(int i = 0; i < partition;i++) >> for(int k = 0; k < upartition;k++) >> viennacl_Norm_i(i,partition+k) = B1(i,k); >> for(int i = 0; i < upartition;i++) >> for(int k = 0; k < partition;k++) >> viennacl_Norm_i(partition+i,k) = C1(i,k); >> for(int i = 0; i < upartition;i++) >> for(int k = 0; k < upartition;k++) >> viennacl_Norm_i(partition+i,partition+k) = D1(i,k); >> >> >> Is there a function that does the reverse of matrix_range class that >> puts sub matrices back into the full matrix ? >> >> Regards, >> >> Alan Buchanan >> >> >>  >> >> What NetFlow Analyzer can do for you? Monitors network bandwidth and >> traffic >> patterns at an interfacelevel. Reveals which users, apps, and >> protocols are >> consuming the most bandwidth. Provides multivendor support for NetFlow, >> JFlow, sFlow and other flows. Make informed decisions using capacity >> planning reports. >> https://ad.doubleclick.net/ddm/clk/305295220;132659582;e >> >> >> >> _______________________________________________ >> ViennaCLsupport mailing list >> ViennaCLsupport@... >> https://lists.sourceforge.net/lists/listinfo/viennaclsupport >> > > 
From: Karl Rupp <rupp@iu...>  20160607 07:16:38

Hi Alan, I'm not sure whether I understand your question correctly. matrix_range objects operate on the original entries of the full matrix. That is, whenever you manipulate A, B, C, or D, the entries in the original matrix are changed as well. This is probably not what you want. I think that you should instead extract the entries representing A, B, C, and D into smaller matrix objects (let's call them mA, mB, mC, mD), then compute the inverse based on the Schur complement according to your formula, and finally put everything back into the original matrix. This way you only need matrix_range objects for extracting the entries from the original matrix to mA, mB, mC, mD, and for writing the entries from mA, mB, mC, mD back into the original matrix. This is then achieved via direct assignments from/to matrix_range objects: mA = A; // extract from original matrix // compute something A = mA; // write back to original matrix Best regards, Karli On 06/07/2016 05:40 AM, Alan wrote: > Hi, > > I am inverting a large matrix using partitioning. > i.e. > > [ A B C D ] − 1 = [ A − 1 + A − 1 B ( D − C A − 1 B ) − 1 C A − 1 − > A − 1 B ( D − C A − 1 B ) − 1 − ( D − C A − 1 B ) − 1 C A − 1 ( D − > C A − 1 B ) − 1 ] , {\displaystyle {\begin{bmatrix}\mathbf {A} > &\mathbf {B} \\\mathbf {C} &\mathbf {D} > \end{bmatrix}}^{1}={\begin{bmatrix}\mathbf {A} ^{1}+\mathbf {A} > ^{1}\mathbf {B} (\mathbf {D} \mathbf {CA} ^{1}\mathbf {B} > )^{1}\mathbf {CA} ^{1}&\mathbf {A} ^{1}\mathbf {B} (\mathbf {D} > \mathbf {CA} ^{1}\mathbf {B} )^{1}\\(\mathbf {D} \mathbf {CA} > ^{1}\mathbf {B} )^{1}\mathbf {CA} ^{1}&(\mathbf {D} \mathbf {CA} > ^{1}\mathbf {B} )^{1}\end{bmatrix}},} > > {\displaystyle \,} > > > I form the submatrices as follows: > viennacl::range r1(0,partition); > viennacl::range r2(partition,u); > viennacl::matrix_range<viennacl::matrix<double>> > A(viennacl_Norm,r1,r1); > viennacl::matrix_range<viennacl::matrix<double>> > B(viennacl_Norm,r1,r2); > viennacl::matrix_range<viennacl::matrix<double>> > C(viennacl_Norm,r2,r1); > viennacl::matrix_range<viennacl::matrix<double>> > D(viennacl_Norm,r2,r2); > > I then manipulate the sub matrices using the above formula (code not shown). > > I then wish to recreate the full inverted matrix from its parts. > > I currently can only do this using a very inefficient method (element by > element copy using for loops) which defeats the original reason for > partitioning. > for(int i = 0; i < partition;i++) > for(int k = 0; k < partition;k++) > viennacl_Norm_i(i,k) = A1(i,k); > for(int i = 0; i < partition;i++) > for(int k = 0; k < upartition;k++) > viennacl_Norm_i(i,partition+k) = B1(i,k); > for(int i = 0; i < upartition;i++) > for(int k = 0; k < partition;k++) > viennacl_Norm_i(partition+i,k) = C1(i,k); > for(int i = 0; i < upartition;i++) > for(int k = 0; k < upartition;k++) > viennacl_Norm_i(partition+i,partition+k) = D1(i,k); > > > Is there a function that does the reverse of matrix_range class that > puts sub matrices back into the full matrix ? > > Regards, > > Alan Buchanan > > >  > What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic > patterns at an interfacelevel. Reveals which users, apps, and protocols are > consuming the most bandwidth. Provides multivendor support for NetFlow, > JFlow, sFlow and other flows. Make informed decisions using capacity > planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e > > > > _______________________________________________ > ViennaCLsupport mailing list > ViennaCLsupport@... > https://lists.sourceforge.net/lists/listinfo/viennaclsupport > 
From: Alan <alan.buchanan@as...>  20160607 03:40:20

Hi, I am inverting a large matrix using partitioning. i.e. [ A B C D ] − 1 = [ A − 1 + A − 1 B ( D − C A − 1 B ) − 1 C A − 1 − A − 1 B ( D − C A − 1 B ) − 1 − ( D − C A − 1 B ) − 1 C A − 1 ( D − C A − 1 B ) − 1 ] , {\displaystyle {\begin{bmatrix}\mathbf {A} &\mathbf {B} \\\mathbf {C} &\mathbf {D} \end{bmatrix}}^{1}={\begin{bmatrix}\mathbf {A} ^{1}+\mathbf {A} ^{1}\mathbf {B} (\mathbf {D} \mathbf {CA} ^{1}\mathbf {B} )^{1}\mathbf {CA} ^{1}&\mathbf {A} ^{1}\mathbf {B} (\mathbf {D} \mathbf {CA} ^{1}\mathbf {B} )^{1}\\(\mathbf {D} \mathbf {CA} ^{1}\mathbf {B} )^{1}\mathbf {CA} ^{1}&(\mathbf {D} \mathbf {CA} ^{1}\mathbf {B} )^{1}\end{bmatrix}},} {\displaystyle \,} I form the submatrices as follows: viennacl::range r1(0,partition); viennacl::range r2(partition,u); viennacl::matrix_range<viennacl::matrix<double>> A(viennacl_Norm,r1,r1); viennacl::matrix_range<viennacl::matrix<double>> B(viennacl_Norm,r1,r2); viennacl::matrix_range<viennacl::matrix<double>> C(viennacl_Norm,r2,r1); viennacl::matrix_range<viennacl::matrix<double>> D(viennacl_Norm,r2,r2); I then manipulate the sub matrices using the above formula (code not shown). I then wish to recreate the full inverted matrix from its parts. I currently can only do this using a very inefficient method (element by element copy using for loops) which defeats the original reason for partitioning. for(int i = 0; i < partition;i++) for(int k = 0; k < partition;k++) viennacl_Norm_i(i,k) = A1(i,k); for(int i = 0; i < partition;i++) for(int k = 0; k < upartition;k++) viennacl_Norm_i(i,partition+k) = B1(i,k); for(int i = 0; i < upartition;i++) for(int k = 0; k < partition;k++) viennacl_Norm_i(partition+i,k) = C1(i,k); for(int i = 0; i < upartition;i++) for(int k = 0; k < upartition;k++) viennacl_Norm_i(partition+i,partition+k) = D1(i,k); Is there a function that does the reverse of matrix_range class that puts sub matrices back into the full matrix ? Regards, Alan Buchanan 
From: Karl Rupp <rupp@iu...>  20160527 12:05:43

Hi, please use the correct mailinglist viennafemsupport@... for future mailings. > I am student researcher the National Institute of Health and Medical > Research in France, I use your library ViennaFEM in my project, in order > to solve the equation was derived in part via the finite element method. > But I find some difficulties to solve a simple function to test the > library: Equation poisson_equ_1 = viennamath :: make_equation > (viennamath :: laplace (u) +1, 1); > as soon as I added one in this equation, I get an error. could you help > me please ? The equation structure currently assumes that all terms depending on u are specified on the left hand side, while all other terms (not depending on u) are given as the second argument (right hand side). In your case, you want Equation poisson_equ_1 = viennamath::make_equation(viennamath::laplace(u), 2); Best regards, Karli 
From: batkoum marwane <batkoum.marwane@gm...>  20160527 08:42:08

Information request  ViennaFEM Hello , I am student researcher the National Institute of Health and Medical Research in France, I use your library ViennaFEM in my project, in order to solve the equation was derived in part via the finite element method. But I find some difficulties to solve a simple function to test the library: Equation poisson_equ_1 = viennamath :: make_equation (viennamath :: laplace (u) +1, 1); as soon as I added one in this equation, I get an error. could you help me please ? please find enclosed the code I use: _______________________________________________________________________________ int main () { typedef viennagrid :: Config :: line_1d ConfigType; typedef viennagrid :: :: result_of domain <ConfigType> :: type DomainType; typedef viennagrid :: :: result_of ncell_range <DomainType, 0> :: type VertexContainer; typedef viennagrid result_of :: :: iterator <VertexContainer> :: type VertexIterator; typedef viennagrid :: :: result_of Ncell <ConfigType, 2> :: type CellType; typedef boost :: numeric :: :: uBLAS compressed_matrix <viennafem :: numeric_type> matrixType; typedef boost :: numeric :: uBLAS :: vector <viennafem :: numeric_type> VectorType; typedef viennamath :: function_symbol FunctionSymbol; typedef :: viennamath equation Equation; typedef viennafem :: boundary_key BoundaryKey; // // Create a domain from file // DomainType my_domain; //my_domain.create_segments(2); try { viennagrid :: io :: netgen_reader my_reader; my_reader (my_domain, "square224.mesh"); //../ examples / data / line8.mesh } catch (...) { std :: cerr << ". FileReader program failed Aborting ..." << std :: endl; EXIT_FAILURE return; } // // Specify two PDEs: // FunctionSymbol u (0, viennamath :: unknown_tag <> ()); // An unknown function used for PDE specification Equation = poisson_equ_1 viennamath :: make_equation (viennamath :: laplace (u) +1, 1); // Equation poisson_equ_2 = viennamath :: make_equation (viennamath :: laplace (u), 0); MatrixType system_matrix_1, system_matrix_2; VectorType load_vector_1, load_vector_2; // // Setting boundary information on domain (this shoulds come from device specification) // // Setting Some boundary flags: VertexContainer vertices = viennagrid :: ncells <0> (my_domain); std :: cout << "Step 4" << std :: endl; for (VertexIterator lives vertices.begin = (); = vertices.end lives (!); ++ Lives) { // Boundary for first equation: Homogeneous Dirichlet everywhere if ((* lives) [0] ==  0.0 (* lives) [0] == 1.0) viennafem :: set_dirichlet_boundary (* lives, 0.0, 0); // Simulation with ID 0 uses homogeneous boundary data // Boundary for second equation (ID 1): 0 at left boundary, 1 at right boundary if ((* lives) [0] == 0.0) viennafem :: set_dirichlet_boundary (* lives, 0.0, 1); else if ((* lives) [0] == 1.0) viennafem :: set_dirichlet_boundary (* lives, 1.0, 1); } // // Create PDE solver functors: (Discussion about proper interface required) // viennafem :: pde_assembler fem_assembler; // // Solve system and write vector solution to pde_result: // (Discussions about proper interface required. Introduce a pde_result class?) // for (size_t i = 0; i <my_domain.segments () size ();. i ++) { fem_assembler (viennafem :: make_linear_pde_system (poisson_equ_1, u, viennafem :: make_linear_pde_options (0, viennafem :: lagrange_tag <0> () viennafem :: lagrange_tag <0> ()) ) my_domain.segments () [i] system_matrix_1, load_vector_1 ); // Fem_assembler (viennafem :: make_linear_pde_system (poisson_equ_2, // U, // Viennafem :: make_linear_pde_options (1, // Viennafem :: lagrange_tag <1> () // Viennafem :: lagrange_tag <1> ()) //) // My_domain.segments () [i] // System_matrix_2, // load_vector_2 //); } VectorType pde_result_1 = viennacl :: :: linalg solve (system_matrix_1, load_vector_1, viennacl :: :: linalg cg_tag ()); std :: cout << "* solve (): Residual:" << norm_2 (prod (system_matrix_1, pde_result_1)  load_vector_1) << std :: endl; // VectorType pde_result_2 = viennacl :: :: linalg solve (system_matrix_2, load_vector_2, viennacl :: :: linalg cg_tag ()); // Std :: cout << "* solve (): Residual:" << norm_2 (prod (system_matrix_2, pde_result_2)  load_vector_2) << std :: endl; // // Writing solution back to domain (Discussion about proper way of returning a solution required ...) // viennafem :: io :: write_solution_to_VTK_file (pde_result_1, "poisson_1d_1" my_domain, 0); // Io viennafem :: :: write_solution_to_VTK_file (pde_result_2, "poisson_1d_2" my_domain, 1); std :: cout << "*****************************************" < <std :: endl; std :: cout << "* * Poisson solver finished successfully!" << std :: endl; std :: cout << "*****************************************" < <std :: endl; EXIT_SUCCESS return; } 
From: Charles Determan <cdetermanjr@gm...>  20160516 12:52:07

Juan, Glad you got it working. This is actually a bug in the current gpuR package on CRAN as it shouldn't be allowed to try and work in contexts with no devices. It will be changed in the next release by use of explicit contexts. If you have further problems with gpuR specifically, please file those at the github (https://github.com/cdeterman/gpuR/issues). Regards, Charles On Mon, May 16, 2016 at 4:23 AM, Juan Fumero <juan.fumero@...> wrote: > Hi, > I got it, sorry. It is working. I saw the API to communicate with the > OpenCL device. > > Thanks > juan > > > detectGPUs() > [1] 0 > > platformInfo(2L) > $platformName > [1] "NVIDIA CUDA" > > $platformVendor > [1] "NVIDIA Corporation" > > $platformVersion > [1] "OpenCL 1.1 CUDA 6.0.1" > > $platformExtensions > [1] "cl_khr_byte_addressable_store" "cl_khr_icd" > [3] "cl_khr_gl_sharing" "cl_nv_compiler_options" > [5] "cl_nv_device_attribute_query" "cl_nv_pragma_unroll" > [7] "" > > > detectGPUs(2L) > [1] 1 > > gpuA < gpuMatrix(rnorm(16), nrow=4, ncol=4) > > gpuB < gpuA %*% gpuA > > > > > On Mon, 20160516 at 10:02 +0100, Juan Fumero wrote: > > Hi, > thanks a lot for the suggestions. Yes I can run normal OpenCL C and Java > apps as well as CUDA C/C++ applications. > > I installed my own R version ~/bin/R/ . I wonder If I need some variables > to specify OpenCL and CUDA appart from the LD_LIBRARY_PATH (already set). > It should be the Intel driver + CUDA driver (both). Here it is only the > Intel one. > > $ ./bin/R > > library("gpuR") > > platformInfo() > $platformName > [1] "Intel(R) OpenCL" > > $platformVendor > [1] "Intel(R) Corporation" > > $platformVersion > [1] "OpenCL 1.2 LINUX" > > $platformExtensions > [1] "cl_khr_icd" > [2] "cl_khr_global_int32_base_atomics" > [3] "cl_khr_global_int32_extended_atomics" > [4] "cl_khr_local_int32_base_atomics" > [5] "cl_khr_local_int32_extended_atomics" > [6] "cl_khr_byte_addressable_store" > [7] "cl_khr_spir" > [8] "cl_intel_exec_by_local_thread" > [9] "cl_khr_fp64" > [10] "" > > > gpuInfo() > Error: ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND > ViennaCL could not find a suitable device. Please check whether an OpenCL > implementation is properly installed and a suitable device available. > > > Thanks > juan > > > On Sun, 20160515 at 20:41 0500, Charles Determan wrote: > > Juan, > > Try checking if any of the information functions work for you such as > 'platformInfo' or 'gpuInfo'. If neither of these work your CUDA > installation is likely improperly installed and you should test a basic > OpenCL or CUDA program as suggested by Karl. > > Regards, > Charles > > On Sunday, May 15, 2016, Karl Rupp <rupp@...> wrote: > > Hi Juan, > > the error suggests that your driver installation is for some reason > incomplete. Are you able to run any other CUDA or OpenCL programs? > > Best regards, > Karli > > > On 05/15/2016 03:13 PM, Juan Fumero wrote: > > Hi, > > I am just installed the gnuR package on my OpenSuse Linux with cran >  install.packages("gpuR") > > The R version I have is 3.1.3. When I try to execute this application > in the terminal I get the following error: > > > A < seq.int(from=0, to=999) > B < seq.int(from=1000, to=1) > gpuA < gpuVector(A) > > Error: ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND > ViennaCL could not find a suitable device. Please check whether an > OpenCL implementation is properly installed and a suitable device > available. > If you think that this is a bug in ViennaCL, please report it at vienna > clsupport@... and supply at least the following > information: > * Operating System > * Which OpenCL implementation (AMD, NVIDIA, etc.) > * ViennaCL version > Many thanks in advance! > > > I am using NVIDIA driver 331.79. > > Any idea? > Many thanks > Juan > > > > > > > The University of Edinburgh is a charitable body, registered in > Scotland, with registration number SC005336. > > 
From: Juan Fumero <juan.fumero@ed...>  20160516 09:24:10

The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. 
From: Juan Fumero <juan.fumero@ed...>  20160516 09:03:26

The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. 
From: Charles Determan <cdetermanjr@gm...>  20160516 01:41:56

Juan, Try checking if any of the information functions work for you such as 'platformInfo' or 'gpuInfo'. If neither of these work your CUDA installation is likely improperly installed and you should test a basic OpenCL or CUDA program as suggested by Karl. Regards, Charles On Sunday, May 15, 2016, Karl Rupp <rupp@...> wrote: > Hi Juan, > > the error suggests that your driver installation is for some reason > incomplete. Are you able to run any other CUDA or OpenCL programs? > > Best regards, > Karli > > > On 05/15/2016 03:13 PM, Juan Fumero wrote: > >> Hi, >> >> I am just installed the gnuR package on my OpenSuse Linux with cran >>  install.packages("gpuR") >> >> The R version I have is 3.1.3. When I try to execute this application >> in the terminal I get the following error: >> >> >> A < seq.int(from=0, to=999) >>> B < seq.int(from=1000, to=1) >>> gpuA < gpuVector(A) >>> >> Error: ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND >> ViennaCL could not find a suitable device. Please check whether an >> OpenCL implementation is properly installed and a suitable device >> available. >> If you think that this is a bug in ViennaCL, please report it at vienna >> clsupport@... and supply at least the following >> information: >> * Operating System >> * Which OpenCL implementation (AMD, NVIDIA, etc.) >> * ViennaCL version >> Many thanks in advance! >> >> >> I am using NVIDIA driver 331.79. >> >> Any idea? >> Many thanks >> Juan >> >> >> > 
From: Karl Rupp <rupp@iu...>  20160515 20:25:29

Hi Juan, the error suggests that your driver installation is for some reason incomplete. Are you able to run any other CUDA or OpenCL programs? Best regards, Karli On 05/15/2016 03:13 PM, Juan Fumero wrote: > Hi, > > I am just installed the gnuR package on my OpenSuse Linux with cran >  install.packages("gpuR") > > The R version I have is 3.1.3. When I try to execute this application > in the terminal I get the following error: > > >> A < seq.int(from=0, to=999) >> B < seq.int(from=1000, to=1) >> gpuA < gpuVector(A) > Error: ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND > ViennaCL could not find a suitable device. Please check whether an > OpenCL implementation is properly installed and a suitable device > available. > If you think that this is a bug in ViennaCL, please report it at vienna > clsupport@... and supply at least the following > information: > * Operating System > * Which OpenCL implementation (AMD, NVIDIA, etc.) > * ViennaCL version > Many thanks in advance! > > > I am using NVIDIA driver 331.79. > > Any idea? > Many thanks > Juan > > 
From: Juan Fumero <juan.fumero@ed...>  20160515 13:14:08

Hi, I am just installed the gnuR package on my OpenSuse Linux with cran  install.packages("gpuR") The R version I have is 3.1.3. When I try to execute this application in the terminal I get the following error: > A < seq.int(from=0, to=999) > B < seq.int(from=1000, to=1) > gpuA < gpuVector(A) Error: ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND ViennaCL could not find a suitable device. Please check whether an OpenCL implementation is properly installed and a suitable device available. If you think that this is a bug in ViennaCL, please report it at vienna clsupport@... and supply at least the following information: * Operating System * Which OpenCL implementation (AMD, NVIDIA, etc.) * ViennaCL version Many thanks in advance! I am using NVIDIA driver 331.79. Any idea? Many thanks Juan  The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. 
From: Karl Rupp <rupp@iu...>  20160410 16:55:07

Hi, > Sorry for troubling you again 😂! For my final object that implement > sparse linear system of CFD with matlab and viennaCL platform, I tested > the example file wrap_csr_cuda. cu, and found that the csr format matrix > vel_A is clear, but not the device vector vel_x definition. Why there is > "viennacl::traits::context(vel_A) here? Is it essetial? I don't find > it in the user manual. This specifies that the vector should be created in the same memory space as the sparse matrix. This is important if you decide to use CUDA and OpenCL or OpenMP concurrently. In this particular case the argument is not necessary, since CUDA is the default context if enabled. Best regards, Karli > 2016年4月10日 17:22，"侠贵族" <sejabs.2011@... > <mailto:sejabs.2011@...>>写道： > > Hi karl > Thanks for your reply! Yes, it works as your suggestion, and we > should not modify the const double pointers after cast them to > nonconst pointers! > > Best regards > Jingbo > > 20160410 17:45 GMT+09:00 Karl Rupp <rupp@... > <mailto:rupp@...>>: > > Hi, > > if the issue is with const vs. nonconst, cast the constpointer > you receive from Matlab to a nonconst pointer. > > Best regards, > Karli > > > On 04/09/2016 07:54 PM, 侠贵族 wrote: > > Thanks for reply! I wrote the wrap code similar as example > in viennacl > source, > viennacl::vector<double> vec1("device pointer from matlab > mxgpuarray > method", viennacl::cudamemory, size). It should fit the > syntax, I think so. > > 2016年4月10日 01:37，"Omar Valerio" <omar.valerio@... > <mailto:omar.valerio@...> > <mailto:omar.valerio@... > <mailto:omar.valerio@...>>>写道： > > Hello, > > From the compiler error message. It seems the class > constructor > requires two parameters and you are using it with only one. > > Am Samstag, 9. April 2016 schrieb 侠贵族 : > > Hi karl > For these days, I tried to combine Mathematica and > viennaCL to > get a develop platform. However, Mathematica use > its exclusive > CudaMemory mechanism provided a integer ID from > which I can't > get raw device pointers not right now, anyway. I > have to change > to Matlab and it offers a ready mxGPUArray methods > to extract > raw device pointer and wrap it again to Matlab's > gpuArray > object. But when I test a easy example like c = a+b > (a,b,c are > device vectors), I face errors: > > D:/DevelopeTools/Workspace/Matlab_ViennaCL/test.cu > <http://test.cu>; > <http://test.cu>(84): error: no instance of constructor > "viennacl::vector<NumericT, AlignmentV>::vector [with > NumericT=double, > AlignmentV=1U]" matches the argument list > argument types are: (const double *, > viennacl::memory_types, int) > .... > > My point is, in matlabthe mexfunction > void mexFunction(int nlhs, mxArray *plhs[], > int nrhs, mxArray const *prhs[]){ > ...}, the *prhs[] must const to avoid unpredictable > errors. but > in viennaCL > vector.hpp/matrix.hpp/compressed_matrix..., there are > not constructor to include const double * type. Am > I right? How > to add a match statement in these .hpp files to > solve the problem? > > I attached my test files. > > Best wishes > Jingbo > > > >  > Find and fix application performance issues faster with > Applications Manager > Applications Manager provides deep performance insights into > multiple tiers of > your business applications. It resolves application problems > quickly and > reduces your MTTR. Get your free trial! > http://pubads.g.doubleclick.net/ > gampad/clk?id=1444514301&iu=/capub7940484522588532 > > > > _______________________________________________ > ViennaCLsupport mailing list > ViennaCLsupport@... > <mailto:ViennaCLsupport@...> > https://lists.sourceforge.net/lists/listinfo/viennaclsupport > > > 
From: 侠贵族 <sejabs.2011@gm...>  20160410 16:22:27

Hi Sorry for troubling you again 😂! For my final object that implement sparse linear system of CFD with matlab and viennaCL platform, I tested the example file wrap_csr_cuda. cu, and found that the csr format matrix vel_A is clear, but not the device vector vel_x definition. Why there is "viennacl::traits::context(vel_A) here? Is it essetial? I don't find it in the user manual. Best regards Jingbo 2016年4月10日 17:22，"侠贵族" <sejabs.2011@...>写道： Hi karl Thanks for your reply! Yes, it works as your suggestion, and we should not modify the const double pointers after cast them to nonconst pointers! Best regards Jingbo 20160410 17:45 GMT+09:00 Karl Rupp <rupp@...>: > Hi, > > if the issue is with const vs. nonconst, cast the constpointer you > receive from Matlab to a nonconst pointer. > > Best regards, > Karli > > > On 04/09/2016 07:54 PM, 侠贵族 wrote: > >> Thanks for reply! I wrote the wrap code similar as example in viennacl >> source, >> viennacl::vector<double> vec1("device pointer from matlab mxgpuarray >> method", viennacl::cudamemory, size). It should fit the syntax, I think >> so. >> >> 2016年4月10日 01:37，"Omar Valerio" <omar.valerio@... >> <mailto:omar.valerio@...>>写道： >> >> Hello, >> >> From the compiler error message. It seems the class constructor >> requires two parameters and you are using it with only one. >> >> Am Samstag, 9. April 2016 schrieb 侠贵族 : >> >> Hi karl >> For these days, I tried to combine Mathematica and viennaCL to >> get a develop platform. However, Mathematica use its exclusive >> CudaMemory mechanism provided a integer ID from which I can't >> get raw device pointers not right now, anyway. I have to change >> to Matlab and it offers a ready mxGPUArray methods to extract >> raw device pointer and wrap it again to Matlab's gpuArray >> object. But when I test a easy example like c = a+b (a,b,c are >> device vectors), I face errors: >> >> D:/DevelopeTools/Workspace/Matlab_ViennaCL/test.cu >> <http://test.cu>(84): error: no instance of constructor >> "viennacl::vector<NumericT, AlignmentV>::vector [with >> NumericT=double, >> AlignmentV=1U]" matches the argument list >> argument types are: (const double *, >> viennacl::memory_types, int) >> .... >> >> My point is, in matlabthe mexfunction >> void mexFunction(int nlhs, mxArray *plhs[], >> int nrhs, mxArray const *prhs[]){ >> ...}, the *prhs[] must const to avoid unpredictable errors. but >> in viennaCL >> vector.hpp/matrix.hpp/compressed_matrix..., there are >> not constructor to include const double * type. Am I right? How >> to add a match statement in these .hpp files to solve the problem? >> >> I attached my test files. >> >> Best wishes >> Jingbo >> >> >> >> >>  >> Find and fix application performance issues faster with Applications >> Manager >> Applications Manager provides deep performance insights into multiple >> tiers of >> your business applications. It resolves application problems quickly and >> reduces your MTTR. Get your free trial! http://pubads.g.doubleclick.net/ >> gampad/clk?id=1444514301&iu=/capub7940484522588532 >> >> >> >> _______________________________________________ >> ViennaCLsupport mailing list >> ViennaCLsupport@... >> https://lists.sourceforge.net/lists/listinfo/viennaclsupport >> >> > 
From: Karl Rupp <rupp@iu...>  20160410 08:45:48

Hi, if the issue is with const vs. nonconst, cast the constpointer you receive from Matlab to a nonconst pointer. Best regards, Karli On 04/09/2016 07:54 PM, 侠贵族 wrote: > Thanks for reply! I wrote the wrap code similar as example in viennacl > source, > viennacl::vector<double> vec1("device pointer from matlab mxgpuarray > method", viennacl::cudamemory, size). It should fit the syntax, I think so. > > 2016年4月10日 01:37，"Omar Valerio" <omar.valerio@... > <mailto:omar.valerio@...>>写道： > > Hello, > > From the compiler error message. It seems the class constructor > requires two parameters and you are using it with only one. > > Am Samstag, 9. April 2016 schrieb 侠贵族 : > > Hi karl > For these days, I tried to combine Mathematica and viennaCL to > get a develop platform. However, Mathematica use its exclusive > CudaMemory mechanism provided a integer ID from which I can't > get raw device pointers not right now, anyway. I have to change > to Matlab and it offers a ready mxGPUArray methods to extract > raw device pointer and wrap it again to Matlab's gpuArray > object. But when I test a easy example like c = a+b (a,b,c are > device vectors), I face errors: > > D:/DevelopeTools/Workspace/Matlab_ViennaCL/test.cu > <http://test.cu>(84): error: no instance of constructor > "viennacl::vector<NumericT, AlignmentV>::vector [with > NumericT=double, > AlignmentV=1U]" matches the argument list > argument types are: (const double *, > viennacl::memory_types, int) > .... > > My point is, in matlabthe mexfunction > void mexFunction(int nlhs, mxArray *plhs[], > int nrhs, mxArray const *prhs[]){ > ...}, the *prhs[] must const to avoid unpredictable errors. but > in viennaCL > vector.hpp/matrix.hpp/compressed_matrix..., there are > not constructor to include const double * type. Am I right? How > to add a match statement in these .hpp files to solve the problem? > > I attached my test files. > > Best wishes > Jingbo > > > >  > Find and fix application performance issues faster with Applications Manager > Applications Manager provides deep performance insights into multiple tiers of > your business applications. It resolves application problems quickly and > reduces your MTTR. Get your free trial! http://pubads.g.doubleclick.net/ > gampad/clk?id=1444514301&iu=/capub7940484522588532 > > > > _______________________________________________ > ViennaCLsupport mailing list > ViennaCLsupport@... > https://lists.sourceforge.net/lists/listinfo/viennaclsupport > 
From: 侠贵族 <sejabs.2011@gm...>  20160409 17:54:43

Thanks for reply! I wrote the wrap code similar as example in viennacl source, viennacl::vector<double> vec1("device pointer from matlab mxgpuarray method", viennacl::cudamemory, size). It should fit the syntax, I think so. 2016年4月10日 01:37，"Omar Valerio" <omar.valerio@...>写道： > Hello, > > From the compiler error message. It seems the class constructor requires > two parameters and you are using it with only one. > > Am Samstag, 9. April 2016 schrieb 侠贵族 : > >> Hi karl >> For these days, I tried to combine Mathematica and viennaCL to get a >> develop platform. However, Mathematica use its exclusive CudaMemory >> mechanism provided a integer ID from which I can't get raw device pointers >> not right now, anyway. I have to change to Matlab and it offers a ready >> mxGPUArray methods to extract raw device pointer and wrap it again to >> Matlab's gpuArray object. But when I test a easy example like c = a+b >> (a,b,c are device vectors), I face errors: >> >> D:/DevelopeTools/Workspace/Matlab_ViennaCL/test.cu(84): error: no >> instance of constructor "viennacl::vector<NumericT, AlignmentV>::vector >> [with NumericT=double, >> AlignmentV=1U]" matches the argument list >> argument types are: (const double *, viennacl::memory_types, >> int) >> .... >> >> My point is, in matlabthe mexfunction >> void mexFunction(int nlhs, mxArray *plhs[], >> int nrhs, mxArray const *prhs[]){ >> ...}, the *prhs[] must const to avoid unpredictable errors. but in >> viennaCL >> vector.hpp/matrix.hpp/compressed_matrix..., there are not constructor to >> include const double * type. Am I right? How to add a match statement in >> these .hpp files to solve the problem? >> >> I attached my test files. >> >> Best wishes >> Jingbo >> >> 
From: 侠贵族 <sejabs.2011@gm...>  20160409 15:44:15

Hi karl For these days, I tried to combine Mathematica and viennaCL to get a develop platform. However, Mathematica use its exclusive CudaMemory mechanism provided a integer ID from which I can't get raw device pointers not right now, anyway. I have to change to Matlab and it offers a ready mxGPUArray methods to extract raw device pointer and wrap it again to Matlab's gpuArray object. But when I test a easy example like c = a+b (a,b,c are device vectors), I face errors: D:/DevelopeTools/Workspace/Matlab_ViennaCL/test.cu(84): error: no instance of constructor "viennacl::vector<NumericT, AlignmentV>::vector [with NumericT=double, AlignmentV=1U]" matches the argument list argument types are: (const double *, viennacl::memory_types, int) .... My point is, in matlabthe mexfunction void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray const *prhs[]){ ...}, the *prhs[] must const to avoid unpredictable errors. but in viennaCL vector.hpp/matrix.hpp/compressed_matrix..., there are not constructor to include const double * type. Am I right? How to add a match statement in these .hpp files to solve the problem? I attached my test files. Best wishes Jingbo 
From: Karl Rupp <rupp@iu...>  20160403 18:02:49

Hi, > First I must thank you for your fantastic math library viennaCL! It is > useful in my custom CFD code development. Now when I tried the latest > example wrap_cuda.cu, I faced some strange errors , my platform is > Windows 10 64 bit with Intel core i7 2700 > Visual studio 2013 > Cuda 7.5 > Nvidia Gtx 670 > > If I create a solution and add the example cu file without modification, > then compilation is succesful, but has runtime errors show viennaCL cuda > not available exception and the interrupt stops at the first wrap > statement viennaCL::vector line. Is this with the standard ViennaCL CMake build, or this is your own build? You have to make sure that VIENNACL_WITH_CUDA is defined at the very top of your .cu file, otherwise CUDA doesn't get picked up. > However, the native cuda code runs well > and shows the result in the dos window. What do you mean by 'native CUDA code'? Code from the CUDA SDK? > When I add #define > VIENNACL_WITH_CUDA at the first line in the cu file, then I face some > compilation errors said vector_operation.hpp line 458 has syntactic > errors like "lacking ; "and "> ". This suggests that you are not compiling through NVCC, but instead use the standard Visual Studio compiler. You *must* compile .cu files with NVCC, otherwise the CUDA syntax is not recognized. > I thought the cu file should be well and these peoblem might be induced > by other factors.Is it possible a cuda compatible problem? It looks to me that you are not compiling with NVCC. Best regards, Karli 
From: 侠贵族 <sejabs.2011@gm...>  20160403 16:55:31

Dear developers First I must thank you for your fantastic math library viennaCL! It is useful in my custom CFD code development. Now when I tried the latest example wrap_cuda.cu, I faced some strange errors , my platform is Windows 10 64 bit with Intel core i7 2700 Visual studio 2013 Cuda 7.5 Nvidia Gtx 670 If I create a solution and add the example cu file without modification, then compilation is succesful, but has runtime errors show viennaCL cuda not available exception and the interrupt stops at the first wrap statement viennaCL::vector line. However, the native cuda code runs well and shows the result in the dos window. When I add #define VIENNACL_WITH_CUDA at the first line in the cu file, then I face some compilation errors said vector_operation.hpp line 458 has syntactic errors like "lacking ; "and "> ". I thought the cu file should be well and these peoblem might be induced by other factors.Is it possible a cuda compatible problem? 
From: 79192407 <79192407@qq...>  20160403 16:29:21

Dear developers First I must thank you for your fantastic math library viennaCL! It is useful in my custom CFD code development. Now when I tried the latest example wrap_cuda.cu, I faced some strange errors , my platform is Windows 10 64 bit with Intel core i7 2700 Visual studio 2013 Cuda 7.5 Nvidia Gtx 670 If I create a solution and add the example cu file without modification, then compilation is succesful, but has runtime errors show viennaCL cuda not available exception and the interrupt stops at the first wrap statement viennaCL::vector line. However, the native cuda code runs well and shows the result in the dos window. When I add #define VIENNACL_WITH_CUDA at the first line in the cu file, then I face some compilation errors said vector_operation.hpp line 458 has syntactic errors like "lacking ; "and "> ". I thought the cu file should be well and these peoblem might be induced by other factors.Is it possible a cuda compatible problem? 
From: Karl Rupp <rupp@iu...>  20160320 15:33:34

Hi Dave, > The examples do not even work. please let us know *which* examples do not work; we are happy to fix it. > > >>> from util import read_mtx, read_vector > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > ImportError: No module named util Did you import pyviennacl first? If you used import pyviennacl as p then please change your line to from p.util import read_mtrx, read_vector All the subsequent errors are just a consequence of the failed matrix read. Best regards, Karli 
From: Karl Rupp <rupp@iu...>  20160320 15:20:15

Hi Jonathan, please apologize the delayed response. > I was trying to use the random number generator in the tools namespace. > I can generate individual scalars but not random matrices. Yeah, the interface currently only scalars, indicating that the implementation is in no way parallelized. > The code I > used is something like this (trying to fill a matrix<float> with random > numbers) > > float m = 0.0; float stddev = 1.0; > matrix<float> temp(10,10); > matrix<float> mean(temp.size1(), temp.size2()); mean = > scalar_matrix<float>(temp.size1(), temp.size2(), m); > matrix<float> SD(temp.size1(), temp.size2()); SD = > scalar_matrix<float>(temp.size1(), temp.size2(), stddev); > viennacl::tools::normal_random_numbers<matrix<float>> x; > x = viennacl::tools::normal_random_numbers<matrix<float>>(mean, SD); > temp = x(); Please find an example of initializing a matrix with normally distributed numbers attached. It is by no means a highperformance implementation, but is often sufficient. There are a few tweaks one can apply to make it faster (approx. 3x); let me know if that would make a big difference for your needs. Best regards, Karli 
From: Dave Tucker <dave@dt...>  20160319 16:08:30

The examples do not even work. 1. Ubuntu 32bit ARMv7 2. NVIDIA 3. viennacl 1.5.11 / pyviennacl1.0.3 >>> from util import read_mtx, read_vector Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named util >>> A = read_mtx(os.path.join(os.path.dirname(os.path.realpath(__file__)), "mat65k.mtx"), ... dtype=np.float32) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'read_mtx' is not defined >>> # Transfer the system matrix to the compute device ... A = p.Matrix(A) Traceback (most recent call last): File "<stdin>", line 2, in <module> File "/usr/local/lib/python2.7/distpackages/pyviennacl/pycore.py", line 820, in __init__ self._init_leaf(args, kwargs) File "/usr/local/lib/python2.7/distpackages/pyviennacl/pycore.py", line 1751, in _init_leaf self.vcl_leaf = get_leaf(vcl_type) File "/usr/local/lib/python2.7/distpackages/pyviennacl/pycore.py", line 1715, in get_leaf return vcl_t(args[0]) RuntimeError: ViennaCL: FATAL ERROR: ViennaCL encountered an unknown OpenCL error. In some cases, this might be due to an invalid global work size, but it can also be due to several compilation errors. If you think that this is a bug in ViennaCL, please report it at viennaclsupport@... and supply at least the following information: * Operating System * Which OpenCL implementation (AMD, NVIDIA, etc.) * ViennaCL version 
From: <jonathanparker89@gm...>  20160317 14:24:04

Hi there, I was trying to use the random number generator in the tools namespace. I can generate individual scalars but not random matrices. The code I used is something like this (trying to fill a matrix<float> with random numbers) float m = 0.0; float stddev = 1.0; matrix<float> temp(10,10); matrix<float> mean(temp.size1(), temp.size2()); mean = scalar_matrix<float>(temp.size1(), temp.size2(), m); matrix<float> SD(temp.size1(), temp.size2()); SD = scalar_matrix<float>(temp.size1(), temp.size2(), stddev); viennacl::tools::normal_random_numbers<matrix<float>> x; x = viennacl::tools::normal_random_numbers<matrix<float>>(mean, SD); temp = x(); The error I get has to do with the use of the absolute value function on the matrix. Please let me know if I am using the function correctly, and what I can do to get it working. Thank you so much for this resource and for your help in this matter, I appreciate it. Kind regards, Jonathan Parker 