| --- Log opened Fri Aug 21 00:00:45 2015 | ||
| shogun-buildbot | build #1036 of nightly_default is complete: Failure [failed test notebooks] Build details are at http://buildbot.shogun-toolbox.org/builders/nightly_default/builds/1036 blamelist: Wu Lin <yorker.lin@gmail.com>, Bj?rn Esser <bjoern.esser@gmail.com> | 06:07 | 
|---|---|---|
| -!- shaochuan [~shaochuan@c-50-184-81-180.hsd1.ca.comcast.net] has joined #shogun | 07:51 | |
| -!- shaochuan [~shaochuan@c-50-184-81-180.hsd1.ca.comcast.net] has quit [Ping timeout: 250 seconds] | 07:55 | |
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has joined #shogun | 08:17 | |
| -!- lambday [c40f1065@gateway/web/freenode/ip.196.15.16.101] has joined #shogun | 09:01 | |
| -!- mode/#shogun [+o lambday] by ChanServ | 09:01 | |
| @lambday | lisitsyn: hey | 09:09 | 
| lisitsyn | lambday: hey | 09:09 | 
| @lambday | lisitsyn: so I was reading up a few articles regarding reducing compilation time and many of them say that pimpl helps a lot - sometimes it even halved the time required | 09:10 | 
| lisitsyn | ahh | 09:10 | 
| lisitsyn | yeah pimpl is good | 09:10 | 
| @lambday | lisitsyn: I am worried about the overhead - and how to fit it with the tag idea you had for getters setters | 09:11 | 
| @lambday | like additional mem alloc/dealloc | 09:11 | 
| @lambday | lisitsyn: http://www.gotw.ca/publications/mill04.htm and http://www.gotw.ca/publications/mill05.htm says custom allocator/deallocator helps at times | 09:14 | 
| @lambday | herb sutter | 09:14 | 
| lisitsyn | lambday: see post in my blog :) | 09:14 | 
| lisitsyn | I have crazy solution | 09:14 | 
| @lambday | lisitsyn: could you please give me the link? | 09:15 | 
| lisitsyn | a sec | 09:15 | 
| lisitsyn | http://sergey.lisitsyn.me/2014/04/17/opaque-pointers-revisited/ | 09:15 | 
| @lambday | thanks - checking | 09:16 | 
| lisitsyn | lambday: tldr make an assumption about pimpl size | 09:16 | 
| lisitsyn | and keep it in object directly | 09:16 | 
| @lambday | outer object | 09:17 | 
| @lambday | umm won't that be nonportable? | 09:17 | 
| @lambday | I am reading the whole thing anyway :D | 09:17 | 
| lisitsyn | lambday: portable but not ready for changes | 09:19 | 
| lisitsyn | you get static assert error if you exceed provided size | 09:20 | 
| lisitsyn | you add field | 09:20 | 
| lisitsyn | and get struct of size 48 while storage size is 32 | 09:20 | 
| lisitsyn | you have to change header | 09:21 | 
| lisitsyn | I have no idea but I don't feel its that bad | 09:21 | 
| @lambday | hmm.. actually herb mentioned an idea similar to yours in the article link I posted.. | 09:25 | 
| @lambday | but he's advising against it | 09:25 | 
| @lambday | he's suggesting that use pimpl in general and use fast pimpl only if you think that all the hassle is worth taking (make some benchmarks).. | 09:25 | 
| @lambday | but the result is impressive! | 09:27 | 
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has quit [Quit: PirosB3] | 09:27 | |
| lisitsyn | lambday: yeah I wouldn't advocate using it everywhere :) | 09:27 | 
| lisitsyn | but I was scaried with allocator patches | 09:27 | 
| @lambday | lisitsyn: in shogun we do have our custom allocators/deallocators - why can't we take it one step further? | 09:28 | 
| lisitsyn | lambday: yes | 09:28 | 
| lisitsyn | that's ok | 09:29 | 
| lisitsyn | ohh | 09:29 | 
| lisitsyn | I see it has exactly the same idea | 09:29 | 
| @lambday | yep | 09:29 | 
| lisitsyn | pff I should have read all the article | 09:30 | 
| @lambday | lol that's impossible | 09:30 | 
| lisitsyn | now I feel I presented an idea | 09:30 | 
| lisitsyn | that was presented before my birth | 09:30 | 
| lisitsyn | or so | 09:31 | 
| lisitsyn | :D | 09:31 | 
| lisitsyn | 1998 | 09:31 | 
| @lambday | :D | 09:31 | 
| lisitsyn | when I was 7 okay okay | 09:31 | 
| @lambday | is that it? | 09:31 | 
| @lambday | oh ya 98 | 09:31 | 
| @lambday | great minds think alike :D | 09:31 | 
| lisitsyn | idea thief | 09:31 | 
| lisitsyn | :D | 09:31 | 
| lisitsyn | I am | 09:31 | 
| @lambday | so I'll toy with the idea of a fast memory allocator simialr to herb's and make some benchmarks | 09:36 | 
| @lambday | maybe in shogun also it could work out for good | 09:36 | 
| lisitsyn | lambday: hmm yes lets do it | 09:40 | 
| lisitsyn | :) | 09:40 | 
| @lambday | lisitsyn: did we settle with the Tag or Property<T> idea for getters/setters? | 09:40 | 
| lisitsyn | lambday: neither | 09:40 | 
| lisitsyn | can't decide | 09:40 | 
| @lambday | let me check the mail | 09:40 | 
| lisitsyn | :D | 09:40 | 
| @lambday | pimpl and tag/property should go together | 09:41 | 
| lisitsyn | they come together nicely | 09:41 | 
| lisitsyn | lambday: one thing does not | 09:41 | 
| lisitsyn | inheritance | 09:41 | 
| @lambday | why do we need inheritance :P | 09:42 | 
| lisitsyn | lambday: although you need just one pimpl to rule them all | 09:42 | 
| lisitsyn | in SGObject | 09:42 | 
| @lambday | lisitsyn: could you please explain that part a bit? | 09:42 | 
| lisitsyn | lambday: if you use tags | 09:43 | 
| lisitsyn | you just have Map<Tag, Value> | 09:43 | 
| lisitsyn | in the impl | 09:43 | 
| lisitsyn | but you need just one | 09:43 | 
| @lambday | yeah | 09:43 | 
| @lambday | just one map you're saying | 09:43 | 
| @lambday | yeah | 09:43 | 
| lisitsyn | yes | 09:43 | 
| lisitsyn | we can have other things | 09:43 | 
| lisitsyn | to handle signals and shit | 09:43 | 
| lisitsyn | everything can be in SGObject | 09:44 | 
| @lambday | yes | 09:44 | 
| lisitsyn | inheritance solved | 09:44 | 
| lisitsyn | :D | 09:44 | 
| @lambday | how about serialization? | 09:44 | 
| lisitsyn | just save that map | 09:45 | 
| lisitsyn | it is as easy as it gets | 09:45 | 
| @lambday | yeah | 09:45 | 
| @lambday | :D | 09:45 | 
| @lambday | awesome then! | 09:45 | 
| lisitsyn | ok just one thing | 09:45 | 
| lisitsyn | I don't like tags | 09:45 | 
| lisitsyn | they don't come with plugins | 09:46 | 
| lisitsyn | however | 09:46 | 
| lisitsyn | no, they could be used with plugins | 09:46 | 
| lisitsyn | lambday: maybe we can support *both* get(string), get(tag) | 09:46 | 
| lisitsyn | get(string) is non typed and should be casted | 09:46 | 
| lisitsyn | get(tag) is typed | 09:46 | 
| lisitsyn | how do you like it? | 09:46 | 
| @lambday | what do you mean by should be casted? | 09:47 | 
| * lambday brb | 09:48 | |
| lisitsyn | lambday: get("parameter").asInt() | 09:50 | 
| lisitsyn | lambday: till you cast it it is of some magic type | 09:58 | 
| lisitsyn | just generic 'parameter' | 09:58 | 
| lisitsyn | if you want to use it as int/flaot/whatever please cast :) | 09:59 | 
| * lambday back | 10:07 | |
| @lambday | lisitsyn: yes it sounds good.. | 10:08 | 
| @lambday | lisitsyn: why would we need typed get(tag) then? | 10:08 | 
| lisitsyn | for speed | 10:08 | 
| @lambday | I mean, is there anything we'd miss if not that tag? apart from the fact of a bit overhead for that string comparison | 10:08 | 
| lisitsyn | and typed | 10:08 | 
| lisitsyn | typed is the most important | 10:09 | 
| lisitsyn | say you integrate into something high performance | 10:09 | 
| lisitsyn | you do call getters often | 10:09 | 
| @lambday | yeah that's true | 10:09 | 
| lisitsyn | I think it would be better to have something typed and fast as well | 10:09 | 
| @lambday | yeah that's true | 10:09 | 
| @lambday | so SWIG-wise it would remain the same as before | 10:10 | 
| @lambday | actually let me dig the possible implementation from the chat history - I am not recalling the details correctly | 10:11 | 
| lisitsyn | I see no swig issue | 10:11 | 
| @lambday | lisitsyn: could you please help me understand it a bit? say, I have struct C { int i; float f;}; .. how many setter/getters would we have | 10:12 | 
| @lambday | Tag get(std::string) | 10:13 | 
| lisitsyn | why get(std::string) is tag? | 10:13 | 
| lisitsyn | lambday: we need get(Tag<T>) for any T | 10:13 | 
| lisitsyn | T is int,float, + base classes of shogun | 10:14 | 
| @lambday | you were talking about supporting both | 10:14 | 
| @lambday | so Tag<T> get(std::string) and T get(Tag<T>) ?? | 10:15 | 
| @lambday | assuming Tag<T> has T asT() method ? | 10:15 | 
| lisitsyn | no | 10:15 | 
| lisitsyn | Parameter get(string) | 10:15 | 
| lisitsyn | T get(Tag<T>) | 10:15 | 
| @lambday | okay | 10:15 | 
| lisitsyn | Parameter has internal type | 10:16 | 
| lisitsyn | and has T as{T}() | 10:17 | 
| lisitsyn | if required type is not castable from the original one | 10:17 | 
| lisitsyn | you get runtime error | 10:17 | 
| @lambday | okay that sounds good | 10:17 | 
| @lambday | so how Parameter is related to Tag | 10:17 | 
| lisitsyn | no relation | 10:19 | 
| lisitsyn | Parameter is just a generic holder for some value | 10:19 | 
| @lambday | alright | 10:21 | 
| @lambday | well, if Tag is template, how would the Map in SGObject would work? | 10:21 | 
| @lambday | aah I am not finding the stammtisch log | 10:22 | 
| @lambday | found it | 10:22 | 
| lisitsyn | lambday: oops sorry | 10:29 | 
| lisitsyn | lambday: map would use some hash | 10:30 | 
| lisitsyn | whatever | 10:30 | 
| lisitsyn | you can convert Tag<T> to hash | 10:30 | 
| @lambday | demangled stuff? | 10:30 | 
| @lambday | oh | 10:30 | 
| lisitsyn | why? | 10:30 | 
| @lambday | na nevermind | 10:30 | 
| lisitsyn | hash Tag<T> = hash of its object + hash of type T + hash of its name | 10:31 | 
| lisitsyn | looks valid :) | 10:31 | 
| @lambday | yeah makes sense | 10:31 | 
| @lambday | name has to be there | 10:31 | 
| @lambday | along with others | 10:31 | 
| @lambday | actually all are important | 10:31 | 
| lisitsyn | lambday: I wouldn't care about internals | 10:32 | 
| lisitsyn | it is solvable for sure | 10:32 | 
| @lambday | yep | 10:32 | 
| lisitsyn | the most important is api | 10:32 | 
| lisitsyn | lambday: we can write unit-tests first maybe | 10:32 | 
| @lambday | yeah | 10:33 | 
| @lambday | let | 10:33 | 
| @lambday | let's first have these classes - and then we'll add SGObject | 10:33 | 
| @lambday | once this whole thing work we'll iteratively add other classes to shogun-lite | 10:34 | 
| @lambday | are | 10:34 | 
| @lambday | aer* | 10:34 | 
| lisitsyn | lambday: can we maybe select some time | 10:35 | 
| lisitsyn | to do some real coding | 10:35 | 
| lisitsyn | is there any time that works for you tomorrow? | 10:36 | 
| @lambday | lisitsyn: I can devote weekends now | 10:36 | 
| lisitsyn | I mean lets take a few really intense coding sessions :D | 10:36 | 
| @lambday | lisitsyn: tomorrow works - so does tonight | 10:36 | 
| @lambday | lisitsyn: yeah | 10:36 | 
| lisitsyn | we should be able to prototype then | 10:36 | 
| @lambday | I will be online more often on irc | 10:37 | 
| lisitsyn | lambday: what changed? | 10:37 | 
| @lambday | lisitsyn: weekend party session stopped :D friends are going to US for MS/PhD - I'm left alone here | 10:37 | 
| lisitsyn | haha lol | 10:38 | 
| @lambday | I'll write GRE in a couple of months | 10:38 | 
| lisitsyn | you going to the US as well? | 10:38 | 
| @lambday | no preparation yet whatsoever :D | 10:38 | 
| @lambday | lisitsyn: fingers crossed! Before that I want to go to UK once - maybe some internship | 10:39 | 
| lisitsyn | oh okay cool | 10:39 | 
| lisitsyn | so we have some time before you're gone | 10:39 | 
| lisitsyn | :D | 10:39 | 
| @lambday | 1 year at least | 10:39 | 
| lisitsyn | that happened a few times to other people | 10:39 | 
| @lambday | hah Heiko too is doing super busy PhD but he's there :D | 10:40 | 
| lisitsyn | lambday: ok what about tomorrow same time | 10:40 | 
| @lambday | so it really depends on the people | 10:40 | 
| lisitsyn | lets take tmux and write code together lol | 10:40 | 
| @lambday | lisitsyn: I'll be online on IRC tomorrow, say, 7:30 GMT | 10:41 | 
| lisitsyn | ok cool | 10:41 | 
| @lambday | lisitsyn: today I'll think a bit details regarding this Tag-Parameter framework | 10:41 | 
| @lambday | maybe make a small POC | 10:42 | 
| @lambday | will help us in the discussion for tomorrow | 10:42 | 
| lisitsyn | I can discuss things a bit later today | 10:42 | 
| lisitsyn | I am now heading to the office | 10:42 | 
| @lambday | super | 10:42 | 
| @lambday | I will be free in 5-6 hrs | 10:42 | 
| lisitsyn | cool | 10:42 | 
| lisitsyn | ok let me take bus and subway :D | 10:43 | 
| @lambday | hehe go safe! | 10:43 | 
| -!- lambday [c40f1065@gateway/web/freenode/ip.196.15.16.101] has quit [Quit: Page closed] | 11:49 | |
| -!- lambday [c40f1065@gateway/web/freenode/ip.196.15.16.101] has joined #shogun | 11:52 | |
| -!- mode/#shogun [+o lambday] by ChanServ | 11:52 | |
| lisitsyn | lambday: hey | 11:55 | 
| @lambday | lisitsyn: heya | 11:56 | 
| lisitsyn | do you have access to hedonismbot? | 11:56 | 
| @lambday | nope | 11:56 | 
| @lambday | don't even know what that is | 11:56 | 
| @besser82 | lambday, still there? | 12:11 | 
| @lambday | besser82: yes | 12:11 | 
| @lambday | besser82: how are you? | 12:13 | 
| @lambday | besser82: using fedora 22 since last week - smooth! :D | 12:13 | 
| * lambday afk | 12:21 | |
| -!- lambday [c40f1065@gateway/web/freenode/ip.196.15.16.101] has quit [Quit: Page closed] | 13:53 | |
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has joined #shogun | 13:55 | |
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has quit [Quit: PirosB3] | 14:03 | |
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has joined #shogun | 14:04 | |
| -!- lambdday [6a3386ac@gateway/web/freenode/ip.106.51.134.172] has joined #shogun | 14:37 | |
| -!- mode/#shogun [+o lambdday] by ChanServ | 14:37 | |
| @besser82 | lambday, nice ^^ Have a few questions for you... | 14:55 | 
| @besser82 | lambdday, sry... been afk... | 14:55 | 
| @lambdday | besser82: hey... | 14:56 | 
| @lambdday | besser82: yeah shoot :) | 14:56 | 
| @besser82 | lambdday, I'm currently experimenting with splitting Shogun into "plugins"... | 14:56 | 
| @lambdday | besser82: awesome! | 14:57 | 
| @besser82 | So we can significantly reduce, e.g. memory needed for compiling swig-bindingins | 14:57 | 
| @lambdday | lisitsyn: ^^ | 14:57 | 
| @besser82 | He already knows ;) | 14:57 | 
| @besser82 | lambdday, ^ | 14:57 | 
| @lambdday | okay.. great! | 14:57 | 
| @lambdday | so what did you find | 14:57 | 
| @besser82 | I was thinking of making the math-part of Shogun pluginzed as well... | 14:58 | 
| @besser82 | like having a base-lib providing factory / prototypes of the methods | 14:58 | 
| @lambdday | besser82: yes that makes sense! | 14:58 | 
| @besser82 | and dyn-loading plugins for several backends | 14:58 | 
| -!- lambdday is now known as lambday | 14:59 | |
| @besser82 | like a plugin for "linalg"-impl, one for "atlas / blas" and one for openCL | 14:59 | 
| @besser82 | lambday, ^ | 14:59 | 
| -!- shaochuan [~shaochuan@2601:647:4600:fac5:84cc:4487:f96a:1751] has joined #shogun | 14:59 | |
| @lambday | so linalg-impl is the base? | 14:59 | 
| @lambday | or it's shogun's native impl | 14:59 | 
| @besser82 | linalg is the current base-impl | 15:00 | 
| @lambday | besser82: ^ | 15:01 | 
| @besser82 | my plan is to have stubs as base-impl | 15:01 | 
| @besser82 | and then use the plugin, which is avail | 15:02 | 
| @besser82 | or if several are avail the one with better perdormance | 15:02 | 
| @besser82 | performance | 15:02 | 
| @besser82 | lambday, ^ | 15:02 | 
| @lambday | besser82: hmm.. do you think it would be better than the present header-only scenario, which we just use as more of an external lib in Shogun's cpp files? | 15:03 | 
| -!- shaochuan [~shaochuan@2601:647:4600:fac5:84cc:4487:f96a:1751] has quit [Ping timeout: 246 seconds] | 15:04 | |
| @lambday | I mean, the present functionality is more like how Eigen does it | 15:04 | 
| @lambday | no dynlibs | 15:04 | 
| @lambday | besser82: would putting these stuffs into separate plugins help us compilation-wise or swig-wise? | 15:08 | 
| @besser82 | lambday, it would help in both cases | 15:10 | 
| @besser82 | lambday, if we have that split, we can fully hide math-impl from swig | 15:10 | 
| @besser82 | lambday, like we just have the base-lib of shogun, which just holds factory / base classes for elementary-type like CSVM, exposed to swig | 15:11 | 
| @besser82 | everything else is performed on full c++-level then | 15:12 | 
| @lambday | besser82: but those things that are only used in cpp files in the implementation are also hidden from swig, isn't it? sorry I don't have much idea of how swig works.. | 15:13 | 
| @lambday | I mean, if we don't expose any of these math things in public API, would swig bother about them? | 15:13 | 
| @besser82 | lambday, yes, what happnes in cpp-files is mostly hidden from swig | 15:13 | 
| @besser82 | lambday, but stuff in headers, like template-stuff and all needs swig to generate wrappers for | 15:14 | 
| @lambday | besser82: even if the header is only included in the cpp? | 15:14 | 
| @besser82 | lambday, not sure, but likely yes | 15:15 | 
| @lambday | besser82: that's bad!!! cause in most cpp we include <Eigen/Eigen> and that's millions of lines of code!! | 15:15 | 
| @lambday | oh but our swig doesn't generate any wrappers for eigen types, does it? | 15:16 | 
| @besser82 | lambday, afaik, no... | 15:16 | 
| @besser82 | lambday, but it is still really big | 15:16 | 
| @lambday | besser82: yeah that's true | 15:16 | 
| @besser82 | lambday, e.g. octave-bindings currently need 6+ Gigs of RAM | 15:17 | 
| @besser82 | lambday, during build | 15:17 | 
| @lambday | so in every file that header is included, the compiler has to go through the same pain every time? or things are saved in some cache or so? | 15:17 | 
| @lambday | besser82: holy **** | 15:17 | 
| @besser82 | lambday, if one uses ccache-swig, then there is cache otherwise no | 15:18 | 
| @lambday | hmm | 15:18 | 
| @lambday | yeah that's bad! | 15:18 | 
| @besser82 | next thing is: pluginizing math-stuff would help to write the plugins more general... | 15:18 | 
| @besser82 | like it only interfaces the lib with those stubs... | 15:19 | 
| @besser82 | which then instances the real class from plugin... | 15:19 | 
| @besser82 | lambday, ^ | 15:19 | 
| @lambday | besser82: yeah it sounds good | 15:20 | 
| @besser82 | so there won't be any matter inside the plugin which backend we use for maths | 15:20 | 
| @lambday | besser82: so how it would work? say, I have eigen3 and viennacl both in my machine - i'd ask the factory to give me a llt solver with eigen3 backend - it then dynamically loads that plugin | 15:21 | 
| @besser82 | lambday, yes that way | 15:22 | 
| @lambday | besser82: sounds great then! | 15:22 | 
| @besser82 | lambday, like my_maths = mathalicious::llt_instance("eigen3"); | 15:23 | 
| @besser82 | my_maths.perform(&data) | 15:23 | 
| @lambday | besser82: sweet!! | 15:23 | 
| @besser82 | lambday, =) | 15:24 | 
| @lambday | besser82: so the thing is, we'd be using inheritance and overloading instead of compile time things | 15:24 | 
| @lambday | like we'd have this base class derived class hierarchy | 15:24 | 
| @besser82 | lambday, right, factory-class with polymorphics | 15:25 | 
| @lambday | besser82: it might take a performance hit, but more manageable for sure | 15:25 | 
| @besser82 | lambday, performance has just a little penalty on init | 15:26 | 
| @lambday | and also the current template-metaprogramming thingi is tough to maintain | 15:26 | 
| @besser82 | lambday, just a bit... we just need to turn the current stuff into generalized factories | 15:26 | 
| @lambday | besser82: well, virtual calls would cost us a bit compared to compile-time scenarios but that won't be bottleneck compared to the actual operation costs | 15:27 | 
| @besser82 | okay... but that's pretty affordable I'd say | 15:27 | 
| @lambday | besser82: yeah it sounds good | 15:27 | 
| @besser82 | lambday, =) So you think: Let's give it a shot? | 15:27 | 
| @lambday | besser82: yeah sure! | 15:28 | 
| @lambday | besser82: the issue is - from where we start? :D | 15:28 | 
| @lambday | lisitsyn has a prototype ready for the plugin framework - but it has to have a bit polishing - for the ABI compatibility issues with C++ | 15:29 | 
| @lambday | we thought of having a C layer and on top of it C++ layer | 15:29 | 
| @lambday | for the plugin arch | 15:29 | 
| @besser82 | lambday, I'm currently writing such a nice thingie ;) | 15:30 | 
| @lambday | besser82: superb!! please share! | 15:30 | 
| @besser82 | lambday, sure, when stuff is ready for test-running ;) | 15:30 | 
| @lambday | besser82: awesome!!! :D | 15:30 | 
| -!- txomon|home [~txomon@unaffiliated/txomon] has quit [Read error: Connection reset by peer] | 15:36 | |
| -!- txomon|home [~txomon@unaffiliated/txomon] has joined #shogun | 15:37 | |
| @besser82 | lambday, my deep idea behind it is: we keep things in seperate libs, one is shogun-baselib, one is maths and one handles plugin-stuff... | 15:38 | 
| @lambday | besser82: yeah.. that would be good.. | 15:39 | 
| @lambday | besser82: now which parts would go into baselib | 15:40 | 
| @lambday | we have to have all the base classes in the baselib, right? | 15:40 | 
| @besser82 | lambday, we need to have all shogun-classes (like CSVM, ...) in the shogun-lib... | 15:44 | 
| @besser82 | math-related factory-classes go into the math-lib and get interfaced with the shogun-plugins directly | 15:45 | 
| @besser82 | shogun-lib and math-lib interface with the pluginmanager-lib to get instances of derived classes | 15:46 | 
| @besser82 | lambday, ^ | 15:46 | 
| @besser82 | in that way, we can hide all but needed shogun-classes and their methods from swig | 15:48 | 
| @lambday | besser82: okay so no further granularity within shogun classes - yeah this solves one major issue | 15:48 | 
| @lambday | besser82: earlier when we thought of this, it was something like, say, CMachine would be in the base-lib, but CSVM would be inside a plugin.. | 15:49 | 
| @lambday | and then we were restricted to use only the methods in CMachine in CSVM that can be overridden | 15:50 | 
| @lambday | but with this approach, we won't face that issue | 15:50 | 
| @besser82 | lambday, that would be possible, but would cause ugly API and those short-comings you just mentioned... | 15:50 | 
| @besser82 | so, yes | 15:50 | 
| @lambday | besser82: yeah this way sounds better | 15:50 | 
| @lambday | the one that you mentioned | 15:50 | 
| @lambday | cause maths takes up quite a lot of place | 15:51 | 
| @lambday | so shogun-algorithms are actually client code for the math-lib | 15:51 | 
| @besser82 | yes, or at least the math-functions used within them | 15:52 | 
| @lambday | yeah basically | 15:52 | 
| @lambday | the algorithms are anyway mostly maths :D | 15:52 | 
| @besser82 | sure... but we need to keep the algorithms general | 15:53 | 
| @besser82 | like having the algorithm is the shogun-plugin and have it called the needed maths func from math-lib | 15:54 | 
| @besser82 | so we can easily change math-backends | 15:54 | 
| @lambday | so it's the user who decides | 15:55 | 
| @lambday | besser82: btw me and lisitsyn were discussing about rewriting SGObject using pimpl which should go well with plugin arch as well and reduce compile time further.. | 15:56 | 
| @lambday | so all the parameter stuffs go inside SGObject itself, including mem-management.. | 15:56 | 
| -!- txomon|home [~txomon@unaffiliated/txomon] has quit [Read error: Connection reset by peer] | 15:56 | |
| lisitsyn | lambday: ah and shogun server! | 15:57 | 
| lisitsyn | if we hide impl | 15:57 | 
| lisitsyn | we can make remote sgobject | 15:57 | 
| @lambday | lisitsyn: REST API? :D | 15:57 | 
| lisitsyn | yes | 15:58 | 
| lisitsyn | inside | 15:58 | 
| -!- txomon|home [~txomon@unaffiliated/txomon] has joined #shogun | 15:58 | |
| @lambday | besser82: can't wait to see your stuff :D let's all align our aims | 15:59 | 
| @besser82 | lambday, lisitsyn: Yeah! Sure! :D | 16:01 | 
| lisitsyn | lets design by commitee! :D | 16:02 | 
| @lambday | would be cool if we could have had that hackathon Heiko talked about last year :D | 16:05 | 
| @besser82 | for sure! | 16:06 | 
| lisitsyn | oh no with hackathon we have a risk of aiming the same goal | 16:13 | 
| lisitsyn | ;) | 16:13 | 
| @lambday | lisitsyn: that's bad? | 16:22 | 
| @lambday | :P | 16:22 | 
| lisitsyn | jk | 16:22 | 
| @lambday | :D | 16:23 | 
| -!- shogun-notifier- [~irker@7nn.de] has joined #shogun | 17:12 | |
| shogun-notifier- | shogun: Wu Lin :develop * 84c57cc / src/shogun/optimization/ (2 files): https://github.com/shogun-toolbox/shogun/commit/84c57cc3073055c349f91d55f1b35d99ede5d6fe | 17:12 | 
| shogun-notifier- | shogun: update comments | 17:12 | 
| shogun-notifier- | shogun: Wu Lin :develop * e7a54ad / src/shogun/optimization/ (5 files): https://github.com/shogun-toolbox/shogun/commit/e7a54ad1709cd671d857963f5c2662218bcba69d | 17:12 | 
| shogun-notifier- | shogun: updated comments | 17:12 | 
| shogun-notifier- | shogun: Wu Lin :develop * f3cfdfe / src/shogun/optimization/ (6 files): https://github.com/shogun-toolbox/shogun/commit/f3cfdfe94db233c2d9e93dee38a9596b8471f254 | 17:12 | 
| shogun-notifier- | shogun: Merge pull request #2896 from yorkerlin/develop | 17:12 | 
| shogun-notifier- | shogun: | 17:12 | 
| shogun-notifier- | shogun: update comments | 17:12 | 
| shogun-buildbot | build #3476 of deb1 - libshogun is complete: Failure [failed test] Build details are at http://buildbot.shogun-toolbox.org/builders/deb1%20-%20libshogun/builds/3476 blamelist: Wu Lin <yorker.lin@gmail.com> | 17:17 | 
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has quit [Quit: PirosB3] | 17:50 | |
| -!- shogun-notifier- [~irker@7nn.de] has quit [Quit: transmission timeout] | 20:12 | |
| -!- shaochuan [~shaochuan@2601:647:4600:fac5:84cc:4487:f96a:1751] has joined #shogun | 20:32 | |
| -!- shaochuan [~shaochuan@2601:647:4600:fac5:84cc:4487:f96a:1751] has quit [Ping timeout: 246 seconds] | 20:37 | |
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has joined #shogun | 22:58 | |
| -!- PirosB3 [~pirosb3@host216-94-dynamic.12-79-r.retail.telecomitalia.it] has quit [Quit: PirosB3] | 23:43 | |
| --- Log closed Sat Aug 22 00:00:46 2015 | ||
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!