Open in new window / Try shogun cloud
--- Log opened Sat Jul 12 00:00:11 2014
-!- jiaolong [9e6d1f01@gateway/web/freenode/ip.] has quit []00:33
-!- rajul [~rajul@] has quit [Ping timeout: 256 seconds]00:41
-!- khalednasr [~k.nasr92@] has quit [Quit: Leaving]01:19
-!- HeikoS [] has joined #shogun01:32
-!- mode/#shogun [+o HeikoS] by ChanServ01:32
-!- shogun-notifier- [] has joined #shogun01:36
shogun-notifier-shogun: abinashpanda :develop * 2318579 / doc/ipython-notebooks/structure/multilabel_structured_prediction.ipynb:
shogun-notifier-shogun: Modified multilabel_structured_prediction.ipynb according to the shogun template01:36
shogun-notifier-shogun: Heiko Strathmann :develop * 15d5dac / doc/ipython-notebooks/structure/multilabel_structured_prediction.ipynb:
shogun-notifier-shogun: Merge pull request #2378 from abinashpanda/notebook01:36
shogun-notifier-shogun: Modified multilabel_structured_prediction.ipynb01:36
shogun-buildbotbuild #3086 of deb1 - libshogun is complete: Success [build successful]  Build details are at
shogun-buildbotbuild #2423 of bsd1 - libshogun is complete: Failure [failed compile test]  Build details are at  blamelist: abinashpanda <>01:44
shogun-buildbotbuild #2424 of bsd1 - libshogun is complete: Failure [failed test]  Build details are at  blamelist: Heiko Strathmann <>01:52
-!- HeikoS [] has quit [Ping timeout: 240 seconds]01:52
shogun-buildbotbuild #402 of deb4 - python3 is complete: Failure [failed test python modular]  Build details are at  blamelist: abinashpanda <>02:12
shogun-buildbotbuild #2409 of deb3 - modular_interfaces is complete: Failure [failed python modular]  Build details are at  blamelist: Heiko Strathmann <>, abinashpanda <>02:16
shogun-buildbotbuild #403 of deb4 - python3 is complete: Success [build successful]  Build details are at
-!- zxtx_ [~zv@] has quit [Ping timeout: 240 seconds]02:26
shogun-buildbotbuild #745 of nightly_all is complete: Failure [failed compile test]  Build details are at  blamelist: Heiko Strathmann <>, abinashpanda <>, Saurabh <>03:04
shogun-buildbotbuild #849 of nightly_default is complete: Failure [failed compile]  Build details are at  blamelist: Heiko Strathmann <>, abinashpanda <>, Saurabh <>03:12
-!- shogun-notifier- [] has quit [Quit: transmission timeout]04:36
-!- soumyaC [uid15286@gateway/web/] has quit [Quit: Connection closed for inactivity]06:06
-!- rajul [~rajul@] has joined #shogun08:24
-!- zxtx_ [~zv@] has joined #shogun08:39
-!- rajul [~rajul@] has quit [Ping timeout: 240 seconds]08:46
-!- rajul [~rajul@] has joined #shogun08:46
-!- zxtx_ [~zv@] has quit [Ping timeout: 240 seconds]09:27
-!- rajul [~rajul@] has quit [Ping timeout: 240 seconds]10:01
-!- rajul [~rajul@] has joined #shogun10:06
-!- rajul [~rajul@] has quit [Read error: Connection reset by peer]10:17
-!- rajul [~rajul@] has joined #shogun10:18
-!- lambday [67157f4f@gateway/web/freenode/ip.] has joined #shogun11:19
-!- HeikoS [] has joined #shogun11:22
-!- mode/#shogun [+o HeikoS] by ChanServ11:22
-!- shogun-notifier- [] has joined #shogun11:26
shogun-notifier-shogun-data: Saurabh :master * 1f9ebc1 / toy/
shogun-notifier-shogun-data: add ionosphere dataset11:26
shogun-notifier-shogun-data: Heiko Strathmann :master * 0e5cebf / toy/
shogun-notifier-shogun-data: Merge pull request #62 from Saurabh7/master11:26
shogun-notifier-shogun-data: add ionosphere dataset11:26
-!- rajul [~rajul@] has quit [Read error: Connection reset by peer]11:35
-!- HeikoS [] has quit [Ping timeout: 240 seconds]11:40
-!- soumyaC [uid15286@gateway/web/] has joined #shogun13:56
-!- Netsplit *.net <-> *.split quits: shogun-notifier-14:06
-!- Netsplit *.net <-> *.split quits: naywhayare, @ChanServ14:06
-!- Netsplit *.net <-> *.split quits: shogun-buildbot, zxtx14:07
-!- Netsplit over, joins: shogun-notifier-, @ChanServ, zxtx, shogun-buildbot, naywhayare14:07
-!- shogun-notifier- [] has quit [Quit: transmission timeout]14:26
-!- lambday [67157f4f@gateway/web/freenode/ip.] has quit [Ping timeout: 246 seconds]16:59
-!- jiaolong [9e6d1f01@gateway/web/freenode/ip.] has joined #shogun17:01
-!- HeikoS [~heiko@] has joined #shogun17:50
-!- mode/#shogun [+o HeikoS] by ChanServ17:50
-!- kislay [~Abhijeet@] has joined #shogun18:13
kislayhey HeikoS18:13
@HeikoSkislay: hey18:25
@HeikoShow are things?18:25
kislayHeikoS, been busy with ANPR lately18:26
@HeikoSkislay: whats that?18:26
kislaysorry for being inactive..18:26
kislayautomatic no. plate recognition :)18:26
kislayA notebook basically.18:26
@HeikoSi see18:27
@HeikoSkislay: cool, looking forward to see the result18:27
@HeikoSkislay: the lda thing is almost ready to go18:27
@HeikoSjust one integration test failing18:28
kislayyeah..I am rechecking it now18:28
-!- HeikoS [~heiko@] has quit [Ping timeout: 240 seconds]18:35
-!- kislay [~Abhijeet@] has quit [Ping timeout: 240 seconds]18:36
-!- kislay [~Abhijeet@] has joined #shogun18:37
-!- lisitsyn [~qdrgsm@] has quit [Quit: Leaving.]19:06
-!- lambday [67157f4f@gateway/web/freenode/ip.] has joined #shogun19:30
-!- HeikoS [] has joined #shogun19:41
-!- mode/#shogun [+o HeikoS] by ChanServ19:41
lambdayHeikoS: hey19:44
@HeikoSlambday: hi19:46
lambdayHeikoS: hi!19:46
lambdayHeikoS: libshogun tests are taking long time on travis!19:46
@HeikoSlambday: yes, annoying19:47
@HeikoSlambday: what to do=?19:47
lambdayHeikoS: integration test failure is expected19:47
lambdayHeikoS: I am trying out with develop branch to compare locally how much is the difference19:47
@HeikoSlambday: since we have to update things?19:47
lambdaybut with blocksize 4 for linear time mmd19:47
@HeikoSlambday: okay19:47
lambdaythere shouldn't be so much difference19:47
lambdayexcept for the extra overhead for recomputing things with shuffling19:48
lambdayfor variance19:48
lambdaymaybe I can set WITHIN_BLOCK_DIRECT as default for those ttests19:48
lambdaythat might be faster19:48
lambdayHeikoS: I have been overly occupied lately with release from insti and relocating to a new place :( couldn't be active lately... will try my best to make up for it in coming days :(19:49
@HeikoSlambday: we should aim to test everything in the end19:49
@HeikoSlambday: maybe we can disable some tests on the travis19:49
@HeikoSlambday: and let buildbot take care of it19:50
lambdayHeikoS: tests with large number of samples can be disabled19:50
lambdaymaybe some flag magic as you suggested19:50
@HeikoSlambday: dont worry19:50
@HeikoSlambday: where are you moving to?19:50
@HeikoSbangalore ? :D19:50
lambdayHeikoS: to Bangalore...19:50
lambdayHeikoS: haha yes...19:50
@HeikoSlambday: when are you doing your internship at ucl ? ;)19:51
lambdayHeikoS: but ran into some problem.. my thesis here isn't complete... so will have to come back to Mumbai to finish my degree19:51
lambdayHeikoS: just as soon as I get enough money to leave Oracle19:51
@HeikoSlambday: i see :)19:51
@HeikoSlambday: you are welcome to come here for a while, just let me know and i bring you in touch with the right people19:52
lambdayHeikoS: my prof changed my topic lately... because earlier the problem I was working on was very open ended research problem... couldn't do much on that19:52
@HeikoSlambday: will you be able to use the hsic based feature selection for your thesis?19:52
@HeikoSlambday: i see19:52
lambdayHeikoS: with this new topic - I don't know... currently I am working on feature induction on relation data with relational kernels (kLog to be exact)19:53
@HeikoSwow, no idea about that stuff19:53
@HeikoSlambday: good luck :D19:53
@HeikoSlambday: so but back to the tests ...19:53
lambdayearlier attempt didn't yield correct results19:53
@HeikoSlambday: so if we disable the tests for now globally, maybe we can ask viktor to do something that we ignore certain tests on travis19:54
@HeikoSlambday: that should be fine19:54
@HeikoSlambday: then we still cover all the things we want (also when people run locally)19:54
@HeikoSlambday: but travis doesnt need to test all that stuff always19:54
@HeikoSlambday: not optimal, but still better than just dropping them19:54
@HeikoSwiking: ^19:54
lambdayHeikoS: yeah... that's the way to go.... I didn't know travis runs it on a vm with just 1 cpu19:55
lambdaywith multithreaded applications like sum methods for kernels, that's limiting19:55
@HeikoSlambday: yeah, but well, what can we do19:55
@HeikoSlambday: not a too serious problem19:55
@HeikoSwe just need to give the unit tests a flag on travis19:56
@HeikoSthat makes shogun ignore them19:56
lambdayHeikoS: yeah..19:56
lambdayHeikoS: regarding the plots, they seem to recreate the plots for B-test on the paper..19:56
lambdaywhich is good19:56
lambdaybtw, on another topic, do we have support vector clustering in shogun? just wondering.. I have to do something related to this for thesis...19:59
@HeikoSlambday: yes, the plots look good20:10
@HeikoSlambday: cool that we can reproduce this20:10
@HeikoSlambday: no sv clustering20:10
@HeikoSlambday: i dont even know what that is20:10
lambdayHeikoS: neither do I... just started to figure it out... apparently it uses one class svm or something to draw clusters... we don't have to give the number of clusters beforehand like kmeans or knn20:11
@HeikoSlambday: i would rather clean up the kmeans, and gmm20:12
lambdayHeikoS: regarding the tests, I am trying locally with WITHIN_BLOCK_DIRECT and checking it that saves us any time on travis20:12
@HeikoSlambday: and then implement the VB-GMM first20:12
@HeikoSlambday: thats good, but we want everything to be tested eventiually20:12
@HeikoSlambday: all combinations20:12
lambdayHeikoS: hmm :( but testing on travis is not equivalent to testing overall :( due to time limit :( we do need some magic to disable some tests on travis and leave on the buildbot20:13
lambdayVB-GMM - now I'm lost :D20:13
@HeikoSlambday: just write all the tests we need, and make sure they pass locally when you do stuff, then disable them before commit20:14
@HeikoSlambday: _DISABLE    in test name does that20:15
@HeikoSlambday: and then we ask wiking to offer us an option to disable only on trabis20:15
lambdayHeikoS: do you know how do I disable libshogun tests?20:15
@HeikoSlambday: yes via the disable in capital letters in the name20:15
@HeikoSlambday: try it :)20:15
lambdayin what name? for unit-tests I tried that :(20:16
@HeikoSlambday: VB-GMM = variational bayes gaussian mixture models     - allows to do gmm and learn the number of clusters from data20:16
@HeikoSlambday: in the unit test name20:16
@HeikoSlambday: they will be not run then20:16
@HeikoSlambday: and googletest says "you have n disabled tests"20:16
lambdayHeikoS: umm the problem here is caused by two libshogun tests (not unit-tests - they take long but eventually passes on travis)20:16
lambdayin examples/undocumented/libshogun20:17
@HeikoSlambday: you meran not unit tests but examples?20:17
@HeikoSlambday: i see20:17
@HeikoSlambday: sorry20:17
@HeikoSlambday: these are not really tests20:17
@HeikoSlambday: in that case,  i suggest to make them unit tests20:17
@HeikoSlambday: since the examples should just demonstrate API20:17
lambdaylibshogun_statistic_linear_time_mmd.cpp and libshogun_mmd_kernel_selection.cpp20:17
lambdayHeikoS: alright..20:18
@HeikoSlambday: i just did that back then since we did not hav eunit tests20:18
lambdayHeikoS: then I guess these tests already exist as unit-tests... in libshogun examples we just use larges number of samples20:18
@HeikoSlambday: just api examples that show how to use each feature are enough20:18
@HeikoSlambday: and then unit tests do the rest20:18
@HeikoSlambday: and notebooks exmplain things20:18
@HeikoSlambday: then add the unit tests with large number of samples, and maybe disable for now until wiking figured out how to exclude in travis?20:19
@HeikoSlambday: does that make any sense?20:19
lambdayHeikoS: okay... alright! so removing these two tests from libshogun - adding them as unit-tests... and in case they cause trouble, disabling them currently20:19
lambdayHeikoS: haha same pinch! :D ye I got it20:19
@HeikoSlambday: btw20:19
@HeikoSlambday: its also all described in bishops book20:20
lambdayHeikoS: wow man I can try that too for thesis... but its not any kernel based approach... my prof is obsessed with kernels20:20
@HeikoSlambday: ok, mmmh20:20
lambdayHeikoS: cool stuff!20:20
@HeikoSlambday: ah funny, see this20:20
@HeikoSlambday: written by emt, the variational gp learning gsopc mentor :)20:21
@HeikoSback 7 years ago20:21
lambdayubc :D20:21
@HeikoSlambday: he did his msc in bangalore20:21
@HeikoShaha did an intern at xerox before doing phd in the states20:22
lambdayHeikoS: wow!... and I know one of my college senior who did Ms in UBC... emt might be knowing him :D20:22
@HeikoSlambday: yeah probably, everyone knows everyone anyways20:22
@HeikoSsmall cummunity :)20:22
lambdayhaha :D20:22
lambdayHeikoS: the domain I am working on is interesting btw.. relational data is kind of like a prolog knowledge base20:23
@HeikoSlambday: cool stuff!20:23
lambdayso the idea is... to cluster the examples in the knowledge base.... learn features... learn rules... classify20:23
@HeikoSlambday: kernel kmeans might also be cool to have20:24
@HeikoSlambday: i see20:24
@HeikoSlambday: interesting20:24
lambdaybut since the use of relational model in the data... we need some method that can handle these sort of feature mapping20:24
lambdaylike : movie_superhit:- is_directed_by(Christopher_Nolam), acted_in(Heath_Leger), music_by(Hans_Zimmer) ..20:25
-!- khalednasr [~k.nasr92@] has joined #shogun20:25
lambdaywe learn these sort of rules.. and use them as features in svm20:26
lambdayHeikoS: I wonder whether VB-GMM sort of idea can be applied to relational data... maybe worth exploring20:26
lambdayHeikoS: if I work on kernel based k-means I'll add this to shogun... maybe an interface to handle relational data can also be cool!20:27
lambdaykhalednasr: hi!20:29
khalednasrlambday, hi20:29
lambdaykhalednasr: sorry for my long absence :( ran into some problems20:29
lambdaykhalednasr: what's the status update on linalg?20:29
khalednasrlambday, I'm addressing the issues we talked about earlier, gonna update the PR later today20:30
lambdaykhalednasr: so you're going ahead with the idea that's discussed on the PR discussion thread, right? did you update anything in the design?20:30
khalednasrlambday, which one do you mean? the backend-dependent matrix?20:31
lambdaykhalednasr: really cool that you thought this all the way through... performance compromising is the last thing we wanna do (y)20:31
lambdaykhalednasr: yes... lisitsyn said that you had some more ideas20:31
lambdaykhalednasr: if I understood the issues correctly, then using your idea eventually solves the problem of data-transfer from cpu <--> gpu when using different bakcends, right?20:33
khalednasrlambday, yeah20:33
khalednasrlambday, the library doesn't even need to know about that matrix class20:33
lambdaykhalednasr: great! :) that's, IMO, is the ideal solution! unifying all matrix/vector classes under one common shed20:34
khalednasrlambday, It might be useful as a return type though20:34
lambdaykhalednasr: what do you mean?20:34
lambdaykhalednasr: using these new classes, we don't have to pass things as arguments?20:35
lambdayas preallocated matrices/vectors?20:35
khalednasrusing it as a return type in the colwise_sum() method would solve that issue20:35
lambdaysuper cool then!20:35
khalednasrGPU overloads will return the GPU version of that matrix20:35
khalednasrand likewise for the CPU backends20:36
lambdaysince we dont expose things to other interfaces and these are all internals, this is the ideal solution20:36
lambdaypreallocating is old school if we talk about style :(20:36
khalednasrwhat should we call that class though? :)20:36
lambdaykhalednasr: how about Matrix and Vector :D20:37
khalednasrlambday, yeah but it's more efficient20:37
lambdaykhalednasr: is it possible to define these under linalg namespace, so that we can later differentiate?20:37
khalednasrlambday, yeah, but won't we get name clashes with the template argument names?20:38
lambdaykhalednasr: err...20:38
lambdayDMatrix DVector (D=dense) :-/20:39
* lambday showing off his worst naming skills20:39
khalednasrlambday, yeah, that sounds good :)20:39
lambdaykhalednasr: let's start with matrix.. vector then would be easy20:40
lambdaymatrix thing we can test with linalg::square20:40
khalednasrlambday, I'm gonna do the other modification first, then send another PR with that class20:43
lambdaykhalednasr: alright... just reorder the tasks as suitable for ease of testing things iteratively :)20:43
khalednasrlambday, alright20:44
-!- HeikoS [] has quit [Quit: Leaving.]20:44
lambdayanyone watching football?20:48
-!- rajul [~rajul@] has joined #shogun20:52
-!- HeikoS [~heiko@] has joined #shogun20:53
-!- mode/#shogun [+o HeikoS] by ChanServ20:53
@HeikoSlambday: i have no idea about relational features, but i guess one can represent all that as graphs ;)20:53
lambdayHeikoS: yes that's pretty much the idea - and then use graph kernels :D20:54
@HeikoSlambday: cool20:54
@HeikoSlambday: would be nice to have graph kernels in shogun20:54
@HeikoSlambday: in fact i am thinking of doing a two sample test example using a graph kernel with dino20:54
lambdayHeikoS: yeah! I have been checking out kLog which does just that!20:54
lambdayHeikoS: really!!20:55
@HeikoSlambday: yeah for the big testing paper20:55
@HeikoSlambday: some protein networks or so20:55
@HeikoSsamples are graphs20:55
lambdayHeikoS: btw there is this characteristic kernel properly that the kernel function should satisfy in order to be used in these tests20:55
@HeikoSlambday: doesnt have to20:56
@HeikoSlambday: only tell if this is true then mmd=0 iff p=q20:56
lambdayHeikoS: cool!... then we can use number of string kernels as well20:57
@HeikoSlambday: totally20:57
@HeikoSlambday: if you could code up a toy example for the noteobok report, that would be in fact amazing20:57
lambdayHeikoS: just out of nowhere, can one thing about using these tests to detect plagiarism ?20:57
@HeikoSlike two distributions of strings20:57
@HeikoSwhich each have a discrete distribution for the letters20:58
@HeikoSlambday: that is hard i think20:58
@HeikoSbut you could do the following example for independence20:58
@HeikoSlambday: one distribution is a distribution of words, the other distribution is in the real numbers20:58
@HeikoSlambday: you generate the dataset like this20:58
@HeikoSlambday: pick some random number r20:59
@HeikoSdo x=sin(r*const)20:59
@HeikoSand b=cos(r*const2) and then the sign of b selects one of two topics of words, from which you sample one21:00
@HeikoSthen you have a dependence between words and numbers21:00
@HeikoSi have some matlab code to generate this somewhere21:00
@HeikoSlet me send it to you21:00
lambdayHeikoS: alright.. this would be cool for the notebook!21:00
@HeikoSlambday: exactly21:01
@HeikoSlambday: nice notebook example21:01
@HeikoSlambday: and for two sample, just come up with a distribution of strings21:01
@HeikoSlambday: where a histogram would look the same for each distribution21:02
@HeikoSlambday: (histogram over letters)21:02
@HeikoSlambday: but some structure in the letters is different21:02
lambdayHeikoS: alright21:02
@HeikoSlambday: we could also do a two sample test on images of cats and dogs and a description of cats and dogs21:05
lambdayHeikoS: the matlab code is for this two-sample test it seems...21:05
@HeikoSif x_1 is an image of a dog, y_1 is a description of a dog21:05
@HeikoSlambday: no its for kernel correlation, called COCO21:05
@HeikoSlambday: thats a preliminary version of hsic21:05
@HeikoSlambday: forgot the other file21:06
lambdayHeikoS: okies...  what group_dataset does?21:06
lambdayHeikoS: oh :D21:06
@HeikoSlambday: yes21:07
@HeikoSlambday: note this code is very ugly ;)21:07
@HeikoSbut the idea is nice21:07
@HeikoSdependence is not obvious21:07
@HeikoSfrom looking at the data21:07
@HeikoSlambday: where one is in the circle tells you the topic where the string is from21:07
lambdayHeikoS: alright... getting it a bit21:09
@HeikoSlambday: getting food see you later :)21:17
-!- HeikoS [~heiko@] has quit [Quit: Leaving.]21:17
lambdayHeikoS: alright... ciao :)21:18
khalednasrlambday, quick question:21:22
khalednasrlambday, the DMatrix class would be defined as: template <class T, Backend backend> class DMatrix21:22
khalednasrlambday, the default value for backend should probably be the global backend21:22
lambdaykhalednasr: yes21:22
khalednasrlambday, can that be accessed?21:22
lambdaykhalednasr: let me check21:23
lambdaykhalednasr: linalg_traits<Redux>::backend21:24
lambday(or, appropriate module-name instead of Redux)21:24
khalednasrlambday, but that's just for the redux module21:24
-!- rajul [~rajul@] has quit [Read error: Connection reset by peer]21:25
lambdaykhalednasr: other modules are are supposed to define it the same way21:25
lambdayplease check
khalednasrbut the matrix class should default to the backend defined for a specific module21:25
khalednasrit doesn't make sense to define it as: template <class T, Backend backend=linalg_traits<Redux>::backend> class DMatrix21:26
lambdaykhalednasr: checking if there is currently a way to do thsi21:28
lambdaykhalednasr: maybe  we should use a module here ( that applies for all modules21:29
khalednasrlambday, so a GLOBAL or DEFAULT module maybe?21:30
lambdaykhalednasr: GLOBAL sounds good..21:30
lambdayDEFAULT is something else21:30
khalednasrlambday, cool, thanks21:31
lambdaykhalednasr: maybe define this GLOBAL and add it here
lambdaythen we can do linalg_traits<Global>::backend21:32
khalednasrlambday, so: SET_MODULE_BACKEND(Global, BACKEND)21:32
lambdaykhalednasr: yep!21:32
lambdaythis will solve it right>21:32
khalednasrlambday, yeah21:32
khalednasrlambday, what if neither USE_EIGEN3 or USE_VIENNACL is defined?21:33
lambdaykhalednasr: haha then we're doomed... HAVE_LINALG_LIB is not defined then and the whole linalg is missing21:33
khalednasrlambday, one of them has to be defined?21:34
lambdaykhalednasr: the idea was, we *got* to have at least one supported linalg backend21:34
lambdaykhalednasr: we're not a linalg library on our own and its not possible for us to provide native implementation for all linalg operations21:35
lambdayso at least one of them *has* to be here21:35
khalednasrlambday, then why the #else here?
lambdayUSE_EIGEN3 == use eigen3 for *ALL* modules21:35
lambdayUSE_VIENNACL = use viennacl for *ALL* modules21:36
lambdayUSE_EIGEN3_REDUX = use eigen3 for redux modules21:36
lambdayand so21:36
lambdaythat's something else21:36
lambdaykhalednasr: does it make sense?21:37
khalednasrlambday, what I mean is, we added this: SET_MODULE_BACKEND(Global, BACKEND) to SET_GLOBAL_BACKEND21:37
lambdaykhalednasr: yes...21:37
khalednasrlambday, which is only called if USE_EIGEN3 or USE_VIENNACL is defined21:37
lambdaykhalednasr: yes but how does that work for module specific setups?21:38
lambdayumm gotta rethink this a bit :/21:39
lambdaysorry for the mess up! not everything is on the top of my head right now :(21:39
-!- rajul [~rajul@] has joined #shogun21:39
khalednasrlambday, it's alright21:39
khalednasrlambday, how about: SET_MODULE_BACKEND(Global, Eigen3) in the #else?21:40
lambdaykhalednasr: does this solve the issue?21:40
lambdayhow about we have eigen3 module backend set for redux and viennacl backend set for some other module21:41
khalednasrlambday, I'm not sure21:41
lambdayGlobal then would be set as per the last one in the code which is unpredictable21:41
-!- lisitsyn [~qdrgsm@] has joined #shogun21:41
lambdayor worse - compilation error21:41
lambdaykhalednasr: is it necessary that we provide default template arg?21:42
lisitsynlambday: khalednasr: aha!21:43
lisitsyndiscussing gpu things here21:43
khalednasrlambday, yup, or we'd go back to the same problem of the developer having to specify a backend21:43
lambdaylisitsyn: worse - discussing API changes here :(21:43
lambdaykhalednasr: yes I see the point21:44
* lambday thinking21:44
lambdayso lets lay down the requirements21:44
lambdaywe want the matrix class to be GPU when *ALL* modules use GPU21:44
lambdaybut that's bad21:45
khalednasrI'm not sure..21:45
lambdaykhalednasr: how about, we use a backend *AND* module specific matrix class?21:45
lambday3 template args21:46
lambdayis that possible?21:46
khalednasrlambday, I'm not sure I get what you mean21:46
lambdaykhalednasr: template<typename Scalar, enum Backend, class Module> DMatrix21:47
lambdayif backend for redux module is set as GPU, the matrix class for redux should inherit from CGPUMatrix21:47
lambdayis it possible?21:47
khalednasrlambday, seems too complicated21:49
lambdaykhalednasr: yes... but if we *don't* use module specific matrix, then module specific cpu/gpu settings would lead to a massive overhead :(21:50
lambdaymaybe there is an easier solution out there21:50
lambdaykhalednasr: do you see the point? I mean, in compile-time, our DMatrix is set to inherit from CGPUMatrix, but in all the modules we use CPU things using cmake option21:53
khalednasrlambday, ahh I see21:55
khalednasrlambday, but if we make it module-backend dependent, what exactly should happen when a developer declares DMatrix<float64_t> in their algorithm?21:57
khalednasrwhich class will it derive from?21:58
lambdaykhalednasr: we *got* to have a global module for default things... and it should work if global backend settings are specified using cmake via USE_EIGEN3 or USE_VIENNACL... but there should be a way via which a user can specify this21:59
lambdayso, using DMatrix<float64_t> would inherit that linalg_traits<Global>::backend depends on...22:00
lambdaybut it can also do DMatrix<float64_t, NeuralNets> which inherits from the backend specified for NeuralNets module22:00
khalednasrlambday, ahh, that makes sense22:02
lambdaykhalednasr: I am just saying - unless I myself can code this thing I am never sure if it can be done :(22:03
lambdayah 3 mins and netherlands scored a goal22:04
khalednasrlambday, yeah it's getting really messy22:04
lambdaykhalednasr: ok taking a short break... may be some new ideas pop up in our heads22:05
khalednasrlambday, good idea :)22:06
lambdaykhalednasr: you're always the best in terms of finding out awesome solutions to these problems.. :D so let's think a bit22:06
khalednasrlambday, haha :)22:07
-!- lisitsyn [~qdrgsm@] has quit [Quit: Leaving.]22:18
lambdaykhalednasr: how about we put these under linalg_traits? as in, inside our code we'd just be using linalg_traits<Module>::DMatrix...22:20
lambdaywhich then would mean to inherit from the appropriate base matrix class (SGMatrix/CGPUMatrix) based on the module specific backend22:20
lambdayinside the struct Module we use a typedef for that22:21
lambdaythere would always be a linalg_traits<Global>::DMatrix ....22:22
khalednasrlambday, inside which code?  the algorithms?22:22
lambdaykhalednasr: yeah22:22
lambdayI mean, having the complex definition for module specific setups, just hide it from the API via linalg_traits thing22:23
khalednasrand when one declares a matrix in some algorithm, what would that look like?22:23
khalednasrlinalg_traits<Redux>::DMatrix ?22:24
lambdaykhalednasr: yeah... in each module, we write code for DMatrix defined for that module via this traits thing22:24
lambdaythen when cmake option is set for that module, it by default chooses to inherit from the necessary base22:25
lambdayand using typedefs as much as we can to make the code readable22:26
lambdayI mean, I cannot think of any other solution except having these matrix/vector classes set module specific :( because otherwise we're back to square one22:27
khalednasrlambday, seems like this could work. I'm just not sure if it won't cause some unforeseen problems later22:36
lambdaykhalednasr: neither can I... so I'd rather do a small prototype of this... just a small snippet of code that works with this... so that we can get a sense of what problems might be hidden in disguise22:39
lambdaybecause many many problems actually reveals at the time of implementing it22:40
-!- rajul [~rajul@] has quit [Ping timeout: 240 seconds]22:44
-!- lisitsyn [~lisitsyn@] has joined #shogun22:47
-!- lisitsyn1 [~qdrgsm@] has joined #shogun22:49
-!- lisitsyn1 [~qdrgsm@] has left #shogun []22:50
-!- rajul [~rajul@] has joined #shogun22:56
-!- lisitsyn [~lisitsyn@] has quit [Quit: ZNC -]23:10
-!- lisitsyn [~lisitsyn@] has joined #shogun23:10
-!- mode/#shogun [+o lisitsyn] by ChanServ23:10
-!- kislay [~Abhijeet@] has quit [Quit: Leaving]23:10
-!- lambday [67157f4f@gateway/web/freenode/ip.] has quit [Ping timeout: 246 seconds]23:32
-!- jiaolong [9e6d1f01@gateway/web/freenode/ip.] has quit [Quit: Page closed]23:56
--- Log closed Sun Jul 13 00:00:12 2014