Open in new window / Try shogun cloud
--- Log opened Sat May 10 00:00:42 2014
-!- chakri [srichakrad@gateway/shell/bnc4free/x-dhavdmppdgxnhffn] has joined #shogun00:03
-!- pickle27f [~pickle27@] has joined #shogun00:30
-!- pickle27f [~pickle27@] has quit [Quit: This computer has gone to sleep]00:49
-!- lambday [67157f4f@gateway/web/freenode/ip.] has quit [Ping timeout: 240 seconds]03:59
-!- iglesiasg [] has joined #shogun08:00
-!- mode/#shogun [+o iglesiasg] by ChanServ08:00
-!- PirosB3 [] has joined #shogun08:13
-!- PirosB3 [] has quit [Quit: PirosB3]08:27
-!- parijat [671b082a@gateway/web/freenode/ip.] has joined #shogun08:46
-!- parijat [671b082a@gateway/web/freenode/ip.] has quit [Client Quit]08:47
-!- iglesiasg [] has quit [Quit: Leaving]09:26
-!- utsavjain [~utsav@] has joined #shogun09:46
-!- kislay [~Abhijeet@] has joined #shogun11:12
-!- thoralf [] has joined #shogun12:23
-!- thoralf [] has quit [Quit: Konversation terminated!]12:34
-!- parijat [671b082a@gateway/web/freenode/ip.] has joined #shogun13:14
-!- utsavjain [~utsav@] has quit [Quit: Leaving.]13:25
-!- lambday [67157f4f@gateway/web/freenode/ip.] has joined #shogun13:45
-!- iglesiasg [] has joined #shogun14:43
-!- mode/#shogun [+o iglesiasg] by ChanServ14:43
@iglesiasghey parijat14:44
-!- PirosB3 [] has joined #shogun14:44
parijathello iglesiasg14:44
@iglesiasgparijat, all good?14:44
@iglesiasgparijat, I am not sure how much time I'll spend around here, but at least enough to start the discussion about tree printing. So shoot!14:46
-!- parijat_ [671b082a@gateway/web/freenode/ip.] has joined #shogun14:47
@iglesiasgparijat_, connection prolems?14:47
parijat_iglesiasg: yup I think so, the page stops get updating..14:48
parijat_iglesiasg: about tree printing, I was saying that14:48
-!- parijat [671b082a@gateway/web/freenode/ip.] has quit [Ping timeout: 240 seconds]14:48
parijat_iglesiasg: I need the tree structure while printing the tree14:49
parijat_iglesiasg: if I make a separate class in shogun/io it would be difficult accessing the tree.. isn't it?14:50
parijat_iglesiasg: also I may traverse the tree in say save method in ID3Tree class, I cant think of ways to transfer the data between ID3Class and the graphviz class in shogun IO14:52
@iglesiasgparijat_, did you see the last comment I wrote in github about the DOT file format?14:54
-!- kislay [~Abhijeet@] has quit [Quit: Leaving]14:56
parijat_iglesiasg: ya I glanced over it once.. but my problem is DOT file writer is static method in another class , save method is in another class.. how to share data between two?14:56
parijat_iglesiasg: maybe I can pass using string arguments?14:57
@iglesiasgparijat_, hold on a second, I don't see your point14:59
@iglesiasgparijat_, there's no DOT file class yet as far as I can see, so what do you mean with "writer is a static method in another class"?15:00
@iglesiasgparijat_, and the idea is that the File classes in io support both read (load) and write (save) operations15:02
parijat_iglesiasg: no I was saying that when I create once DOT file class, the writer method will be a method in that class right? I would need to pass on string parameters from save method in ID#Tree class to that write method in DOT File class15:04
@iglesiasgparijat_, not exactly like that15:04
@iglesiasgparijat_, the DOT File class would have a set of attributes that describe what is necessary to create the .dot15:05
@iglesiasgparijat_, in ID3 there would be something like CID3::save(DOTFile*) which would basically set all these attributes15:06
@iglesiasgparijat_, but no io takes place in that method15:07
parijat_iglesiasg: in this case, the kind of attributes needed describe a tree like nodes/linkages would not be available to the DOT File class unless we inherit it from CTreeMachine.15:07
@iglesiasgparijat_, why not?15:08
@iglesiasgparijat_, see io/UAIFIle.h15:08
@iglesiasgparijat_, the attributes that it has15:08
parijat_iglesiasg: alright let me see.15:09
@iglesiasgparijat_, it's got basically everything that is necessary to represent a factor graph (think about it as a graph if you are not familiarised with factor graphs)15:09
@iglesiasgparijat_, and it does it without inheriting from CFactorGraph15:10
parijat_iglesiasg: ok.. let me have a look at how its done.15:10
@iglesiasgparijat_, so the idea is basically that the io is done in only place15:10
@iglesiasgparijat_, which is a file class (DOTFile or another name if you prefer)15:11
@iglesiasgparijat_, the ID3, C4.5, etc, have methods that fill in the attributes of the file class15:11
@iglesiasgafk, brb15:12
parijat_iglesiasg: ya I think I am getting the point here15:12
@iglesiasgparijat_, great :)15:16
parijat_iglesiasg: actually I went through the CFactorGraph class.. it describes the graph using primitive Shogun data structures15:17
-!- kislay [~Abhijeet@] has joined #shogun15:18
@iglesiasgparijat_, ok. what do you want to say with that? :)15:18
parijat_iglesiasg: but in the tree case we are using self-defined data structures. Thats the difference.15:18
parijat_iglesiasg: so in UAIFile.. its easy to recreate the graph from CFactorGraph class15:19
@iglesiasgparijat_, ok, that's a point15:19
parijat_iglesiasg: but in DOTFile its not that trivial15:19
parijat_iglesiasg: ya!15:19
@iglesiasgparijat_, but if UAIFile can contain info to save a graph, it must be possible to do something similar to save trees15:20
@iglesiasgparijat_, although in general we would want to support graphs as well because I think that the DOT file format supports both15:20
@iglesiasgparijat_, so I think we should think it more in this direction15:20
@iglesiasgparijat_, see what are the contents of a dot file and design data structures for that15:20
-!- HeikoS [] has joined #shogun15:20
-!- mode/#shogun [+o HeikoS] by ChanServ15:20
-!- HeikoS [] has quit [Remote host closed the connection]15:21
parijat_iglesiasg: let me try! I will have to find a way to recreate a graph or tree in DOTFile class15:22
parijat_iglesiasg: ie not using the data structures we have created for tree representation15:23
@iglesiasgparijat_, at first sight, I'd say that a matrix of some general data type should do15:23
parijat_iglesiasg: ya but atleast in decision tree case, whats inside a node is also important apart from structure.. matrices only capture structures15:24
-!- kislay [~Abhijeet@] has quit [Ping timeout: 250 seconds]15:25
parijat_iglesiasg: afk, brb15:27
@iglesiasgparijat_, that's what I tried to say with some general data type15:28
@iglesiasgparijat_, so apart from giving the adjacency information, there's room to store the node info15:28
parijat_iglesiasg: ok! Its clearer to me now. This conversion from one way to tree representation (using CTreeMachine) to other (using adjacency information) will be done in save method in ID3Tree class right?15:32
parijat_iglesiasg: its possible to do something like this.. let me try15:33
@iglesiasgparijat_, yes15:34
@iglesiasgparijat_, that is what makes sense to me15:35
parijat_iglesiasg: ok cool then!15:35
parijat_iglesiasg: I am also working on implementing C4.5 algo now15:35
@iglesiasgparijat_, yeah, I read your mail :)15:35
@iglesiasgparijat_, that's great15:35
@iglesiasgparijat_, do you want to continue with that one and then once it is finished we work back the io part?15:36
parijat_iglesiasg: once that is done, we will no longer need the ID3 algo class as C4.5 encompasses all cases of ID315:36
@iglesiasgparijat_, oh, good15:36
parijat_iglesiasg: yes I think I will finish off C4.5 first and then get back to io15:37
@iglesiasgall right15:37
@iglesiasgfeel free to close the PR if so15:37
parijat_iglesiasg: ya sure :-)15:37
@iglesiasgparijat_, it was good you made it in any case, it is not work that will be lost15:38
-!- kislay [~Abhijeet@] has joined #shogun15:38
parijat_iglesiasg: ya its actually helping me a lot in C4.5.15:38
parijat_iglesiasg: I could re-use some parts of it.15:39
@iglesiasgparijat_, I will be leaving in a few minutes15:44
@iglesiasgparijat_, what is your current time or timezone btw?15:44
parijat_iglesiasg: its 7:15 PM here.. UTC+5:3015:44
@iglesiasgall right!15:44
@iglesiasgso +3:30 wrt me15:45
parijat_iglesiasg: whats yours btw?15:45
-!- kislay [~Abhijeet@] has quit [Ping timeout: 250 seconds]15:45
parijat_iglesiasg: ok cool15:45
parijat_iglesiasg: thats not much time difference, we can definitely find some common time to communicate in irc15:46
parijat_iglesiasg: also I am setting up my blog probably in octopress.15:47
@iglesiasgparijat_, awesome15:47
@iglesiasgparijat_, all right then, I hear from you and C4.5 then!15:49
@iglesiasgparijat_, and enjoy the weekend ;)15:49
parijat_parijat_: yup! very soon hopefully!..15:49
parijat_iglesiasg: it was meant for you not ME15:49
@iglesiasghaha yeah15:49
@iglesiasgI have done that thousands of times15:50
-!- iglesiasg [] has quit [Quit: Leaving]15:50
-!- parijat_ [671b082a@gateway/web/freenode/ip.] has quit [Quit: Page closed]15:50
-!- kislay [~Abhijeet@] has joined #shogun15:57
-!- lambday [67157f4f@gateway/web/freenode/ip.] has quit [Ping timeout: 240 seconds]17:44
-!- lisitsyn [] has joined #shogun18:06
-!- lisitsyn1 [] has quit [Ping timeout: 240 seconds]18:09
-!- lisitsyn [] has quit [Read error: Connection reset by peer]18:12
-!- sunil1337 [~AndChat56@] has joined #shogun19:06
-!- sunil1337 [~AndChat56@] has quit [Read error: Connection reset by peer]19:10
-!- sunil1337 [~AndChat56@] has joined #shogun19:11
-!- sunil1337 [~AndChat56@] has quit [Read error: No route to host]19:19
-!- pickle27 [] has joined #shogun19:22
-!- lisitsyn [] has joined #shogun19:25
-!- kislay [~Abhijeet@] has quit [Ping timeout: 250 seconds]20:39
-!- PirosB3 [] has quit [Quit: PirosB3]20:41
-!- kislay [~Abhijeet@] has joined #shogun20:51
-!- lambday [67157f4f@gateway/web/freenode/ip.] has joined #shogun21:04
lambdaylisitsyn: hi!21:06
lisitsynlambday: hey21:07
lambdaylisitsyn: hey21:07
lisitsynwhat's up?21:08
lambdaylisitsyn: so I pushed few things to my fork!21:08
lambdaylisitsyn: now I want to send a PR against feature/linalg in upstream21:08
lambdaylisitsyn: how to do that?21:08
lambdaychoose different base?21:08
lisitsynlambday: you mean you want a PR against some not-develop branch21:10
lambdaylisitsyn: exactly21:10
lisitsynwell you can select these things21:10
lambdaylisitsyn: so it won't matter that that branch doesn't exist there?21:11
lambdaylisitsyn: it will create it?21:11
lisitsynah I guess you'd need it21:11
lisitsynnot sure about it21:11
lisitsynlambday: just create it if it is not here21:11
-!- kislay [~Abhijeet@] has quit [Quit: Leaving]21:12
-!- kislay [~Abhijeet@] has joined #shogun21:12
-!- PirosB3 [] has joined #shogun21:14
lambdaylisitsyn: got it man! thanks :)21:17
@wikinglambday: cmake mod is not good21:43
@wikingi have now like 15 mins21:43
@wikingwhy the hell do we need to set linalg backend compile time?21:44
lambdaywiking: well firstly its just the global one - secondly its a lot faster21:44
lambdaywiking: I mean we can always use any backend I want in my code21:45
@wikingno u cant21:45
lambdayif I just wanna leave it to default, then its easier way21:45
@wikingand if so21:45
@wikingwhy do you want it to set with a configure flag?21:45
lambdaywiking: that's for inside shogun methods21:46
lambdaywiking: I don't understand why its bad21:46
lambdaywiking: you mentioned about shogun-linalg-eigen3 and shogun-linalg-viennacl21:47
lambdaybut how about we just leave things as they were? no explicit cmake option == eigen3 backend21:47
lambdayand that's what we use in packages21:47
@wikingok i'm just commenting the hell out of your pr21:50
@wikingok more or less done21:54
lambdaywiking: thanks for the comments :)21:54
@wiking21:47 < lambday> but how about we just leave things as they were? no explicit cmake option == eigen3 backend21:54
lambdaywiking: I'll take care of these21:54
@wiking21:47 < lambday> and that's what we use in packages21:55
@wikingthis is actually a bad idea21:55
@wikinglambday: how will u take care of  src/shogun/mathematics/linalg/linalg.h21:55
@wikingthat should be discussed as it's really really not a good design atm21:55
@wikingand again21:55
@wikingwhy can't we have a linalg backend simply set during runtime21:56
@wikingeven if it's in the init_shogun() case21:56
@wikingi dont care21:56
@wikingbut deciding this during compile time is really not a good decision21:56
@wikingespecially if once ever we are going to be able to modularize shogun21:56
lambdaywiking: well the idea behind keeping default backend is that - we cannot provide all default implementation for all linalg tasks - that's why having one as default sounded good to me21:58
lambdaywiking: and regarding compile time and runtime - I noticed 10x speedup using compile time option21:58
-!- travis-ci [] has joined #shogun21:58
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []21:58
lambdaywiking: I didn't get what you meant by taking care of linalg.h21:59
lambdaycould you please explain a bit?21:59
-!- abinash_panda [0126136e@gateway/web/freenode/ip.] has joined #shogun22:02
@wikinglambday: i've just managed to check your benchmarking code22:09
lambdaywiking: alright22:09
@wikinglambday: if u use 'switch (linalg_backend)' to decide what backend to use22:09
@wikingthat's obvious that you are going to have a big difference22:09
@wikingu r adding to each call at least one extra branch22:09
lambdaywiking: that will cause so much difference?22:10
lambday1 mil vector dot product22:10
lambdaythe difference is like 10x on my machine22:11
@wikingwith a reinterpret_cast22:11
lambdaywiking: yeah its bad! but I didn't understand that time how else we can manage this22:13
lambdaywiking: and its leading to super slow and *massive* code which seems totally unnecessary22:13
lambdaywiking: I started trying out with the other option just because of that! else we had almost decided to go by this design22:14
lambdayjust imagine this has to be done for *all* the operations that we're gonna have! that's gonna be huge!22:15
@wikingbut because of this22:15
@wikingi'm saying that it wasn't a good design22:15
lambdaythe factory one?22:16
@wikingthis should have been done very differently22:16
lambdayyeah that I felt too22:16
@wikingthe problem is that this way there's no fucking way in the future22:17
@wikingto be able to have shogun that can support different linalg plugins22:17
lambdayusing config options you mean?22:17
@wikingand what happens when u want to use 2 different linalg backends in one code?22:17
@wikingsay i know that some linalg i'm doing will be much better to be used with GPU based backend22:18
lambdaywiking: I can always use any backend I want by explicitly mentioning it22:18
lambdaywiking: I can choose not to use what backend was set globally22:18
@wikingbut then for other data it'll make like totally misreable because the data is so small22:18
-!- pickle27 [] has quit [Quit: Leaving]22:18
@wikingthat the memmove operation between cpu-gpu is just too big compared to the linalg op22:19
@wikinglambday: how if u do this compile time?22:19
lambdaywiking: that's why I kept it this way so that one can directly pass ViennaCL vectors or Eigen3 vectors22:19
lambdaywithout hvaing to convert from SGVector each time22:20
@wikingi wasn't talking about htis now22:20
@wikingi'm saying that i have a matrix and a vector in my code22:20
lambdaywiking: well, using directly methods from implementation which takes backend as a template arg22:20
@wikingi want u use viennacl for the matrix and i want to use eigen for the vectors22:20
lambdaywiking: can be done22:21
@wikingbut then if so22:21
@wikingthen why the hell do we want to do anything compile time?22:21
lambdaywell, what i thought is that when we can do pretty much anything we want in runtime and in compile time, then I should use compile time because of speed22:22
lambdayno overhead of virtual calls22:22
lambdaytemplated methods which decides things when they are used22:23
@wiking22:21 < lambday> wiking: can be done22:23
lambdayin compile time22:23
@wikingi'm repeating myself22:23
@wikingyou are saying that 22:21 < lambday> wiking: can be done22:23
@wikingmeaning no matter what u set for cmake, u can switch to another backend, right?22:23
lambdaywiking: yep, if I wish! cmake option is global option but in my code I can choose any backend I want if I *know* that using this particular backend is going to be profitable22:24
lambdayif I just wanna rely on globally set backend by cmake, then I just use linalg::method() without caring about backend22:25
@wikinglambday: but then why do you want to set this with a cmake option22:25
@wikingi really dont get this22:25
@wikingwhy do you need cmake at all if this can be changed later22:25
@wikingafter build22:25
lambdaywiking: not changed later - decided during compile time22:26
lambdaywiking: and global is set   because not everytime we wanna specify backend for each method so for ease of use inside shogun22:26
@wikingok so now you then misunderstood my question22:27
@wikingi said22:27
@wikingi have shogun compiled as it is22:27
@wikingsay eigen backend22:27
@wikingbut what if i want to use viennacl22:27
@wikingi have to recompile?22:27
lambdaywiking: inside shogun or in some code that uses shogun22:27
lambdaysay, in examples22:29
lambdayin a shogun example you use viennacl vector22:29
lambdayshogun doesn't need to be recompiled22:29
lambdaylinalg its header only22:29
lambdayif inside shogun you change a method to use viennacl backend from default one you'll of course need to recompile22:31
lambdayif inside shogun you change anything of course you need to recompile, right?22:31
lambdaybut as a shogun user you wanna play around with a different backend in those methods - you don't have to recompile shogun for that22:31
lambdayjust recompile your application22:31
-!- abinash_panda [0126136e@gateway/web/freenode/ip.] has quit [Ping timeout: 240 seconds]22:31
lambdayso is it that bad?22:32
lambdayI mean even relying on set_backend() calls - say, if I change inside shogun from set_backend(Eigen3) to set_backend(viennacl) we'll have to recompile shogun22:33
@wikingit's bad22:33
@wikingbecause it's already a bad design decision that if one doesn't have say eigen22:33
lambdaywiking: what flexibility are we losing here?22:33
@wikingyou dont have some major feature of shogun22:33
lambdaywiking: that can be modified22:34
@wikingGP related things are generally like hat22:34
@wiking#ifdef HAVE_EIGEN322:34
@wikingand then u totally miss a whole class if u dont have eigen22:34
@wikingit was the same with lapack22:34
lambdaythat's true even now22:34
@wiking"22:33 <@wiking> because it's already a bad design decision that if one doesn't have say eigen"22:34
@wikingimplying -> it's already like this22:35
lambdaybut the pt is, we can change that22:35
lambdayso having eigen3 as default is not something you like22:35
@wikingit's really not about that22:35
@wikingit's about having a shogun class being glued to a shogun class22:36
@wikingit's about having a shogun class being glued to a library22:36
lambdaywiking: okay so the other option is - we can remove these HAVE_DEFAULT thing22:37
lambdayno default per se22:37
lambdayand it should work even when eigen3 is not there but viennacl is there to the rescue22:38
@wikingi dont know but i have a feeling that we are talking in parallel22:38
lambdayokay did I get you right on this - you don't want shogun to be glued to any particular library22:39
@wikingwe already have that22:39
@wikingwhich is of course hard to change22:39
@wikingbut at least we should try to not to add more things like this22:39
lambdayalright then if I get you right, these linalg methods should work if *any* of the available backends are there22:40
lambdayand if *none* of them are found, we're missing linalg library22:41
lambday(because we cannot write a whole linalg library on our own)22:41
-!- soumyaC [uid15286@gateway/web/] has joined #shogun23:01
-!- ChanServ [ChanServ@services.] has quit [shutting down]23:14
-!- ChanServ [ChanServ@services.] has joined #shogun23:30
-!- ServerMode/#shogun [+o ChanServ] by sendak.freenode.net23:30
-!- naywhayare [] has quit [Ping timeout: 252 seconds]23:35
-!- naywhayare [] has joined #shogun23:36
-!- naywhayare [] has quit [Ping timeout: 252 seconds]23:41
-!- naywhayare [] has joined #shogun23:42
-!- lambday [67157f4f@gateway/web/freenode/ip.] has quit [Quit: Leaving.]23:44
--- Log closed Sun May 11 00:00:43 2014