Open in new window / Try shogun cloud
--- Log opened Sat Nov 26 00:00:32 2016
@HeikoSwiking: jo00:34
@HeikoSlisitsyn:00:34
@wikingho00:34
@HeikoSI just realised00:34
@HeikoSif we separate out SWIG interface from the base shogun C++ code more00:35
@HeikoSthen we can do multiple inheritance00:35
@HeikoSAKA interfaces00:35
@HeikoSwiking: so about SWIG and plugins00:35
@HeikoSwe need a way to fix the SWIG interface and just exchange underlying .so libs00:36
@HeikoSwiking: btw about the multiple inheritance thing, this is quite cool as we can do proper OOP inside00:36
@HeikoSand then we just offer very simple things via SWIG00:36
@HeikoSno need to re-create the class structure in SWIG00:37
@HeikoSthat is actually really cool00:37
@HeikoSthis solves many problems we have with the uglyness of the class structures00:37
@wiking:>00:43
@sukeyNew Commit "Avoid false sharing in EuclideanDistance OpenMP loops" to shogun-toolbox/shogun by vigsterkr: https://github.com/shogun-toolbox/shogun/commit/7347baf36c19c4a79a0f41a34a05b7ad4de67b4a00:43
@wikingi'm working on fixing our fucking openmp shits00:43
@wikingHeikoS, are you ready on the weekend for a 5.0.1? :)00:44
@wikingthe only remaining stuff00:45
@wikingis the stupid GaussianARDKernel00:45
-!- HeikoS [~heiko@host-92-0-178-129.as43234.net] has quit [Ping timeout: 256 seconds]00:52
-!- travis-ci [~travis-ci@ec2-54-205-110-146.compute-1.amazonaws.com] has joined #shogun01:31
travis-ciit's Viktor Gal's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/17896534901:31
-!- travis-ci [~travis-ci@ec2-54-205-110-146.compute-1.amazonaws.com] has left #shogun []01:31
@wikingCaBa, one thing03:08
@wikingi've just realised03:08
@wikingif you want some speedup03:08
@wikingadd this to your CFLAGS and CXXFLAGS03:08
@wiking"-march=native"03:08
@wikingfuck CExponentialARDKernel is not thread safe03:37
@sukeyNew Commit "Make ExponentialARDKernel::get_weighted_vector thread-safe" to shogun-toolbox/shogun by vigsterkr: https://github.com/shogun-toolbox/shogun/commit/8bb226ef0dc319f331f87fbed3c1766927b215df03:57
@sukeyNew Commit "Make ExponentialARDKernel::get_weighted_vector thread-safe" to shogun-toolbox/shogun by vigsterkr: https://github.com/shogun-toolbox/shogun/commit/4c1dc333f66b01520810975b322d47bcfe51066c03:58
shogun-buildbotbuild #9 of clang - undefined behaviour analysis is complete: Success [build successful]  Build details are at http://buildbot.shogun-toolbox.org/builders/clang%20-%20undefined%20behaviour%20analysis/builds/903:59
-!- lambday [31cf36a1@gateway/web/freenode/ip.49.207.54.161] has joined #shogun04:48
-!- mode/#shogun [+o lambday] by ChanServ04:48
-!- travis-ci [~travis-ci@ec2-54-166-157-46.compute-1.amazonaws.com] has joined #shogun04:49
travis-ciit's Viktor Gal's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/17898344704:49
-!- travis-ci [~travis-ci@ec2-54-166-157-46.compute-1.amazonaws.com] has left #shogun []04:49
-!- mizari [~mizari@95-174-213-100.nts.su] has joined #shogun04:56
@sukeyNew Commit "some more doxygen for bigtesting" to shogun-toolbox/shogun by lambday: https://github.com/shogun-toolbox/shogun/commit/218aee4a30b1da08d536b79962e03574a34e52d506:45
-!- lambday [31cf36a1@gateway/web/freenode/ip.49.207.54.161] has quit [Ping timeout: 260 seconds]10:17
-!- HeikoS [~heiko@host-92-0-178-129.as43234.net] has joined #shogun13:07
-!- mode/#shogun [+o HeikoS] by ChanServ13:07
@sukeyWiki page: Home edited on shogun-toolbox/shogun by karlnapf13:24
@HeikoSwiking: jo13:28
@HeikoSyes up for it13:28
@wiking?13:29
@wikingup for what?13:29
@HeikoSwiking: 5.0.1 on weekend13:34
@HeikoSsorry you wrote that yesterday13:34
@HeikoSI mean +++ for the reactiveX13:35
@wikingah ok13:35
@HeikoSwiking: really cool13:35
@HeikoSwiking: thing is13:35
@HeikoShow to embed in shogun?13:35
@HeikoSlike concretely13:35
@HeikoSalgos have intermediate results13:35
@HeikoSfrom the algorihtm perspective, how is this achieved13:35
@wikingwell13:35
@HeikoSwe need yet another internal interface for such things no?13:35
@wikingjust the concept13:35
@wikingof observables13:35
@wikingand observers13:35
@wikingnoup13:35
@wikingno need for internal interface13:35
@wikinghttp://reactivex.io/documentation/observable.html13:36
@HeikoSso the developer marks some things in algo as observable13:36
@HeikoSand the user then choose which of them to observe13:36
@wikingytes13:36
@wikingbut read the docs13:36
@wikingworth to spend13:36
@HeikoSyeah doing13:36
@wikinglike 20 mins on it13:36
@wikingand then you can do many crazy stuff13:37
@wikingwith observables13:37
-!- lambday [31cf36a1@gateway/web/freenode/ip.49.207.54.161] has joined #shogun13:37
-!- mode/#shogun [+o lambday] by ChanServ13:37
@lambdayHeikoS: yo13:37
@wikingtrasnform it13:37
@HeikoSlambday: jojo13:37
@wikingetc13:37
@lambdaywiking: yo13:37
@HeikoShttp://reactivex.io/documentation/observable.html13:37
@HeikoSlambday:  ^13:37
@wikingjoin13:37
@wikingmerge13:37
@lambdayHeikoS: yeah checking that one13:37
@wikingwhatever u want13:37
@HeikoSwiking: key here is that inside the shogun algos, things are very simple13:37
@HeikoSand how the users select things they want13:37
@wikingi mean the super crazy stuff would be13:38
@wikingto make13:38
@wikingsgobject observable13:38
@wiking:)13:38
@HeikoSso that a) it is easy to set up the algos when writing them13:38
@wikingand then you can do almost whatever the fuck13:38
@HeikoSb) easy for users to query13:38
@HeikoSwiking: yeah true13:38
@lambdayHeikoS: user need to get somehow a list of intermediates that they can choose to save... and then sends a config to save a select set of stuffs13:38
@lambdayout framework saves only those13:38
@HeikoSwiking: though in practice, we need to keep it simple as well13:38
@HeikoSdont want to store all objects13:38
@HeikoSjust some few numbers13:38
@wikingyou observer13:38
@wikingfilter13:38
@wikingwhatever you want13:38
@wikinghttp://reactivex.io/documentation/operators.html#filtering13:39
@HeikoSyes I know13:39
@HeikoSI am talking about concrete interfaces for users to do that13:39
@wikingjust go with the reactive interface13:39
@HeikoSdefinitely not13:39
@wikingwhy do u want to define yet another interface13:39
@HeikoSbecause a user just wants to store the xvalidation indices13:39
@wikingyeah ok13:39
@wikinghe subscribes to that13:39
@HeikoSand that should be simpler than reactivex api13:39
@wikingand that's it13:40
@wikingi mean what's the big deal13:40
@HeikoSSWIG interface13:40
@wikingyou make those indices observable13:40
@wikingand?13:40
@HeikoS!= reactiveX interface13:40
@HeikoSyes13:40
@HeikoSokok13:40
@HeikoSlet's prototype it13:40
@HeikoSbetter way to discuss13:40
@HeikoSI want to see how it looks a) inside algorithm, b) for user13:41
@wikingwhat do yo umean13:41
@lambdayI can take a dig13:41
@wikinga) b)?13:41
@HeikoSa) somebody implements a new algo and needs to do this in a way that things can be observed, how much effort is that13:42
@HeikoSb) a user just wants a single line call to get whatever he wants13:42
@HeikoSso for that prototype is good13:42
@HeikoSbut let me read the docs first then :)13:42
@HeikoSwiking, lambday I mean it would be cool to solve this generally in Shogun and apply it to all the algos where we currently have hacks in place13:43
@HeikoSxvalidation, mmd, optimization, etc etc13:43
@wikingyeah but that's all13:43
@wikingi mean say you have a Future13:43
@lambdayHeikoS: yeah that was the general idea.. doing it shogun-wise13:43
@wikingthat generates values13:43
@wikinglike the13:43
@wikingindicies for xval13:43
@wikingyou just wrap that to be observable13:44
@HeikoSlambday: so lets come back to this once bigtest is merged13:44
@HeikoSwiking: yep ++13:44
@lambdayHeikoS: almost there.. this morning I added another bunch of doxygen docs13:44
@wikinghttps://github.com/Reactive-Extensions/RxCpp/blob/master/Rx/v2/examples/println/main.cpp#L48-L5113:45
@wikingHeikoS,13:45
@wikingthat's almost the simplest way13:45
@wikingto create an observable13:45
@wikingand then you can map/flatmap/filter whatever you want13:45
@wikingmerge transform13:45
@wikingsubscribe13:45
@HeikoSyes13:45
@HeikoSkeep in mind thats all internal API13:45
@wiking?13:46
@HeikoSfor users, it has to be different13:46
@HeikoSSWIG interface needs to be like13:46
@HeikoSxvlidation.store_intermediate('param_name', schedule)13:46
@HeikoSas an example13:46
@wikingno13:46
@wikingyou dont want to store13:46
@wiking:)13:46
@wikingi mean it should be13:46
@wikingup to the user13:47
@wikingto store it somewhere13:47
@wikingyou just want to stream it13:47
@wikingyou dont want to take care of actually storing it somewhere13:47
@HeikoSI understand13:47
@HeikoSbut there are standard use cases right?13:47
@wikingmmm13:47
@wikingi think you are mixing here stuff13:47
@wikingthat's what i meant already13:47
@HeikoSmaybe13:47
@wikingin the email13:47
@wikingif you wanna have a k/v store13:48
@HeikoSI asked for clarification :)13:48
@wikingthen yeah13:48
@wikingbut for things13:48
@HeikoSthis reactive stuff is more for asynchronous implementations13:48
@wikingi mean th ething is that it should 'stream' the updates of any variables13:48
@wikingthat is sane13:48
@HeikoSthere is no user ever instacting with them13:48
@wikingto be streamed13:48
@HeikoSjust the framework13:48
@wikingto the user13:48
@HeikoSyeah13:48
@wikingbut storage13:48
@wikingis a total different story13:48
@wikingeither you let the user13:49
@wikingto deal with the storage of these streamed values13:49
@wikingand so you dont care how it's handled13:49
@wikingor13:49
@wikingyou actually provide13:49
@wikinga k/v store13:49
@HeikoSyes13:49
@wikingand some extra helper functions13:49
@wikingso that you have13:49
@HeikoSthe motivation for the discussion came for the second case13:50
@wikingreactivex -> k/v store13:50
@HeikoSyyes exactly13:50
@wikingbut those things should be separate13:50
@HeikoSI agrere13:50
@wikingfirst have one and the other13:50
@wikingand then think about maaaaaaaaaybe providing13:50
@wikingsome 'usual suspects'13:50
@wikingfor the interaction between the two13:50
@wikingbut i would avoid if possible13:51
@wikingto mix these 2 features13:51
@HeikoSwell we want the intermediate results popping out of algos in a nice way, that is the whole motivation13:51
@HeikoS(optionally)13:51
@wikingcould you be more scientific13:51
@HeikoSso user says (from SWIG)13:52
@wikingbecause poping up is que?13:52
@wikingi dont care from where13:52
@HeikoSI want to run algrothm X13:52
@wikingthat should be language agnostic13:52
@HeikoSand I want the following object's values in every iterations (indices)13:52
@wikingok but this is a clear cut observable, right?13:53
@wikingsubscribe to an observable13:53
@HeikoSand in fact, the user should be able to ask the algorithm (what intermediate results can you generate)13:53
@wikingthat provides the idicies13:53
@wikingheheh we are getting on corba level now :) (selfdescribing api13:53
@HeikoSI am thinking use case here13:54
@HeikoSnot technology13:54
@wikingi'm just saying13:54
@HeikoSsure13:54
@wikingtha this conceptually13:54
@HeikoSbut do you get my point?13:54
@wikingthat you've descirbed13:54
@wikingis a simple13:54
@wikingobservable13:54
@HeikoSok sure13:54
@HeikoSjust a bit unsure how SWIG interface conretely looks like you know13:55
@wikinghttps://en.wikipedia.org/wiki/Reactive_programming13:55
@HeikoSthe main example on that page13:56
@HeikoSis not what I have in mind13:57
@HeikoSbut we are talking apples pears here13:57
@wikingno13:57
@wikingbut ok13:57
@HeikoSI agree with you how to do things internally13:57
@wikingmain example on the page )13:57
@wikinganyhow13:57
@wikingplease try to understand conceptually13:57
@wikingwhat is this13:57
@HeikoSbut I am missing the 2 lines that cause things to happen for users who want indeices13:57
@wikingmodel.subscribe("whicheverparam)13:58
@wikingmodel.subscribe("whicheverparam", self)13:58
@wikingand then from that moment on13:58
@wikingor better yet13:58
@wikingsay self is an observer13:58
@wiking(conceptually)13:58
@HeikoScan we have some python code?13:59
@wikingme.subscribe(model.getobservable("the param i want"))13:59
@HeikoSthat is slightly more complete?13:59
@wikingand from that moment on13:59
@wikingme will receive13:59
@wikingonNext()13:59
@wikingonError13:59
@wikingonComplete13:59
@wikingfunctions14:00
@wikingi mean function calls14:00
@wikingbased on the state of the chosen observable14:00
@wikingplease no python14:00
@wikinganyhow this is just an example14:00
@wikinghow it could look like14:01
@HeikoSSWIG any SWIG14:01
@HeikoSoctave14:01
@HeikoSR14:01
@HeikoSpick any ;)14:01
@lambdayhaha14:01
@wikingjs14:01
@wiking:)14:01
@HeikoSwiking: haha, well any SWIG14:01
@wikinganyhow14:01
@wikingif you wanna serialize these in any format14:02
@wikingthen of course that needs extra work14:02
@HeikoScan we please have a code listing?14:02
@HeikoSbecause I am not following you at the moment, I dont understand what you have in mind14:02
@HeikoSfor now just the xval indices, just wanna see that14:03
@lambdayhttp://collabedit.com/vmbgu14:03
@HeikoShttp://collabedit.com/rnf8b14:03
@HeikoSha!14:03
@wikinghahah14:03
@wikingno fucking way14:03
@HeikoSlets pick first14:03
@wikingi'm gonna code now14:03
@wikingit's 9pm14:03
@wikingi have slept 4 hours14:03
@wiking:)14:03
@HeikoSman just give me the 4 lines14:03
@wikingand still fucking fixing14:03
@wikingmultithreading fuckups14:03
@wikingin shogun14:03
@wiking:)14:03
@wikingplease please14:03
@wikingread the doc first14:04
@HeikoSI have just read most of it14:04
@HeikoSwe are talking about different things thats the problem14:04
@wikingno14:04
@wikingwe are not14:04
@HeikoSso lets have code14:04
@wikingjust that th einformation14:04
@wikingdoesnt go throw14:04
@HeikoSI want to see how it looks14:04
@wikingthrough14:04
@wikingok so it's saturday night14:04
@wikingand now14:04
@wikingwe have to solve this14:04
@wikingNOW14:04
@HeikoSnono14:04
@HeikoSno solve14:04
@wikingok14:04
@HeikoSI just want to make the last 30 mins not waster14:04
@wikingso this was an idea14:04
@HeikoSwasted14:04
@wikingthere's the fw14:04
@HeikoSI want to understand what you mean14:05
@wikinguse it :)14:05
@wikingok14:05
@wikingonce again14:05
@wikingsay you have model14:05
@wikingor algo14:05
@lambdayjust 4 lines of SWIG calls14:05
@wikingi dont care14:05
@wikingalgo.getObservable(id)14:05
@wikingid = the stuff u want to observer14:05
@wikingyou can advertise it14:05
@wikingvia14:05
@wikingalgo.getObservables(): Observable[]14:06
@wiking(this actually scala now)14:06
@wikingso14:06
@wikingand then you have your own observer14:06
@wikingwhich can even be a storage (k/s store)14:06
@wikingand you just do14:06
@wikingobserver.subscribe(algo.getObservable(id))14:07
@wikingright?14:07
@wikingand then each fucking time14:07
@wikingthere's a new value14:07
@wikingor update14:07
@wikingobserver.onNext(...) will be called14:07
@wikinguntil the moment when there's14:08
@HeikoSonNext is SWIG interface language code14:08
@wikinga) error -> onError()14:08
@wikingb) observable finished14:08
@HeikoSform where is it called?14:08
@wikingfuck man14:08
@wikingcan you read the fucking do14:08
@wikingc?14:08
@HeikoSnope man14:08
@wikinghttp://reactivex.io/RxJava/javadoc/rx/Observer.html14:08
@HeikoSsorry doest make sense14:08
@wikingthis is the fucking basic14:08
@wikingof observable14:08
@HeikoSThats why I asked for code14:08
@HeikoSbut anyway14:08
@wikingand observer14:08
@wikingi asked you14:08
@lambdayit will be called automatically.. but somehow the user needs to override it14:08
@wiking3 times14:09
@lambdayis it?14:09
@wikingto read it14:09
@wikingto be clear with the concept14:09
@HeikoSask another time14:09
@HeikoSI got the concept14:09
@wikingif you got it14:09
@wikingthen you know14:09
@wikingthat those are the basic14:09
@wiking3 functions14:09
@wikingthat ever14:09
@wikingevery14:09
@wikingobserver14:09
@wikinghas14:09
@wikingso if you have14:09
@wikingLalalalStorage : Observer14:09
@wikingthen LalalalStorage has14:10
@wiking.onNext14:10
@wiking.onError14:10
@HeikoSthere we go14:10
@wiking.onComplete14:10
@HeikoSthat is implemented in shogun14:10
@wikingi mean fucking hell14:10
@HeikoSC++14:10
@wikingno14:10
@wikingit's not14:10
@HeikoSnot in SWIG14:10
@wikingjesus14:10
@HeikoSok I am leaving14:10
@wikingwhy would it be14:10
@HeikoSnot good discussion14:10
@wikingon c++/14:10
@HeikoSbye14:10
@wikingta14:11
@wikingfor the record i believe i asked you 2 times very nicely to RTFM14:11
-!- HeikoS [~heiko@host-92-0-178-129.as43234.net] has quit [Ping timeout: 265 seconds]14:15
-!- lambday [31cf36a1@gateway/web/freenode/ip.49.207.54.161] has quit [Quit: Page closed]14:33
CaBawiking: heya15:12
CaBawiking: the '-march=native' - is that already set in shoguns cmake config and i shall set it for my own application or were you referring to building shogun?15:13
-!- mizari [~mizari@95-174-213-100.nts.su] has quit [Quit: Leaving]15:42
-!- lambday [31cf36a1@gateway/web/freenode/ip.49.207.54.161] has joined #shogun16:08
-!- mode/#shogun [+o lambday] by ChanServ16:08
-!- lambday [31cf36a1@gateway/web/freenode/ip.49.207.54.161] has quit [Ping timeout: 260 seconds]16:52
-!- HeikoS [~heiko@host-92-0-178-129.as43234.net] has joined #shogun16:52
-!- mode/#shogun [+o HeikoS] by ChanServ16:52
-!- HeikoS [~heiko@host-92-0-178-129.as43234.net] has quit [Remote host closed the connection]16:52
@sukeyPull Request #3566 "change doc to disambiguate."  opened by hongguangguo - https://github.com/shogun-toolbox/shogun/pull/356620:11
CaBahow comes not only the combined kernel but already the very basic kernel class has subkernels?21:30
--- Log closed Sun Nov 27 00:00:33 2016