From: Philippe T. <phi...@gm...> - 2012-07-29 14:00:25
|
Hello everybody ! I'll inaugurate this mailing list with a little question. I have not seen any kernel for computing the operation A += prod(B,C) . Does this mean that this operation is done doing : tmp = prod(B,C) a+=tmp ? For computing the multi_matrix ( project i'm working on, matrix composed of multiple handles, to solve the CL_MAX_ALLOCABLE_MEMORY and the multi devices issue), I need to do several updates of this kind, in a block layout. For a 2*2 block layout : C(0,0).clear(); => C(0,0) += prod( A(0,0), B(0,0) ) => C(0,0) += prod( A(0,1), B(1,0) ) C(0,1).clear(); => C(0,1) += prod( A(0,0), B(0,1) ) => C(0,1) += prod( A(0,1), B(1,1) ) ... ... This "sort-of-rank-1-update approach" is a special case of the SUMMA Algorithm (OpenCL doing the memory transfers in the back ground, for now at least) and seems to be efficient from a memory point of view. Using another approach would lead to both a huge memory consumption and significant memory transfers... Is there any way of doing so in ViennaCL ? Best regards ! Phil |
From: Karl R. <ru...@iu...> - 2012-07-29 14:43:48
|
Hi Philippe, > I have not seen any kernel for computing the operation A += prod(B,C) . > Does this mean that this operation is done doing : > > tmp = prod(B,C) > a+=tmp > > ? This is currently the case. The reason, however, is only a lack of operator overloads rather than a lack of a suitable OpenCL kernel. The matrix-matrix-product kernels are able to accomplish the DGEMM-like C <- alpha * prod(A, B) + beta * C, where alpha and beta are arbitrary scalars. As one of our users recently spotted an issue with beta == 0, I'll push the fixes and better operator overloads next week. > For computing the multi_matrix ( project i'm working on, matrix composed > of multiple handles, to solve the CL_MAX_ALLOCABLE_MEMORY and the multi > devices issue), I need to do several updates of this kind, in a block > layout. For a 2*2 block layout : > > C(0,0).clear(); > => > C(0,0) += prod( A(0,0), B(0,0) ) > => > C(0,0) += prod( A(0,1), B(1,0) ) > > C(0,1).clear(); > => > C(0,1) += prod( A(0,0), B(0,1) ) > => > C(0,1) += prod( A(0,1), B(1,1) ) > > ... > ... > > This "sort-of-rank-1-update approach" is a special case of the SUMMA > Algorithm (OpenCL doing the memory transfers in the back ground, for now > at least) and seems to be efficient from a memory point of view. Using > another approach would lead to both a huge memory consumption and > significant memory transfers... Yes, that's the way to go. :-) Just use the existing operator+=, the fix will handle that for you 'automagically' :-) Best regards, Karli |
From: Karl R. <ru...@iu...> - 2012-07-31 16:12:58
|
Hello again, I've justed pushed the following changes to the sourceforge-repository: * operator+= and operator-= no longer create temporaries * A = prod(B,C) does not fail if there is garbage in A Best regards, Karli On 07/29/2012 03:59 PM, Philippe Tillet wrote: > Hello everybody ! > > I'll inaugurate this mailing list with a little question. > I have not seen any kernel for computing the operation A += prod(B,C) . > Does this mean that this operation is done doing : > > tmp = prod(B,C) > a+=tmp > > ? > > For computing the multi_matrix ( project i'm working on, matrix composed > of multiple handles, to solve the CL_MAX_ALLOCABLE_MEMORY and the multi > devices issue), I need to do several updates of this kind, in a block > layout. For a 2*2 block layout : > > C(0,0).clear(); > => > C(0,0) += prod( A(0,0), B(0,0) ) > => > C(0,0) += prod( A(0,1), B(1,0) ) > > C(0,1).clear(); > => > C(0,1) += prod( A(0,0), B(0,1) ) > => > C(0,1) += prod( A(0,1), B(1,1) ) > > ... > ... > > This "sort-of-rank-1-update approach" is a special case of the SUMMA > Algorithm (OpenCL doing the memory transfers in the back ground, for now > at least) and seems to be efficient from a memory point of view. Using > another approach would lead to both a huge memory consumption and > significant memory transfers... > > Is there any way of doing so in ViennaCL ? > > Best regards ! > Phil > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > > > _______________________________________________ > ViennaCL-devel mailing list > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |