--- Log opened Sun Jul 07 00:00:20 2013 | ||
votjakovr | sonney2k: heh, sorry, i'm a little bit tired today, i'll try to debug tomorrow | 00:02 |
---|---|---|
votjakovr | Good night guys ;) | 00:02 |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has left #shogun ["Fallen asleep!"] | 00:02 | |
* sonney2k is tired too | 00:05 | |
-!- lambday_ [67157f4c@gateway/web/freenode/ip.103.21.127.76] has quit [Ping timeout: 250 seconds] | 00:33 | |
-!- FSCV_ [~FSCV@189.139.147.50] has joined #shogun | 00:44 | |
-!- FSCV [~FSCV@189.139.250.209] has quit [Ping timeout: 276 seconds] | 00:45 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has joined #shogun | 01:04 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has left #shogun ["QUIT :Leaving."] | 01:25 | |
-!- shogun-notifier- [~irker@7nn.de] has quit [Quit: transmission timeout] | 01:41 | |
-!- nube [~rho@49.244.93.85] has joined #shogun | 02:07 | |
shogun-buildbot | build #450 of nightly_default is complete: Failure [failed test] Build details are at http://www.shogun-toolbox.org/buildbot/builders/nightly_default/builds/450 | 04:51 |
-!- yanglittle [b74040fc@gateway/web/freenode/ip.183.64.64.252] has joined #shogun | 06:17 | |
-!- nube [~rho@49.244.93.85] has quit [Quit: Leaving.] | 06:39 | |
-!- foulwall [~user@2001:da8:215:6100:39ad:46d5:c238:24a7] has joined #shogun | 07:03 | |
@sonney2k | foulwall, around? | 08:18 |
foulwall | Hi sonney2k | 08:27 |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has joined #shogun | 09:20 | |
-!- lambday [67157d4c@gateway/web/freenode/ip.103.21.125.76] has joined #shogun | 10:01 | |
lambday | sonney2k: moin | 10:01 |
lambday | sonney2k: I have a good news | 10:01 |
lambday | sonney2k: looks like SGSparseMatrix beats Eigen::SparseMatrix bigtime | 10:01 |
lambday | sonney2k: I added a small program in shogun/benchmarks.. sending a PR | 10:02 |
lambday | please have a look | 10:02 |
lambday | lisitsyn: | 10:12 |
lisitsyn | lambday: alright | 10:13 |
lambday | :) | 10:13 |
-!- gsomix [~gsomix@109.188.125.186] has joined #shogun | 10:18 | |
gsomix | hello | 10:18 |
votjakovr | lisitsyn: hi! Is that possible to apply custom function to each element of eigen3 matrix, vector, etc? I mean something like 'map' in functional languages. I found, that we can use redux() for custom 'reduction', but didn't find something for custom 'mapping'. | 10:25 |
lisitsyn | votjakovr: I haven't seen anything like that in their code | 10:26 |
votjakovr | lisitsyn: ok :) | 10:27 |
lisitsyn | votjakovr: what function do you miss? | 10:28 |
votjakovr | lisitsyn: i mean, i'd like to apply normal_cdf(x) function to each element of ArrayXd | 10:30 |
lisitsyn | I see | 10:31 |
lisitsyn | votjakovr: I think it is worth to put such function somewhere in eigen3.h | 10:31 |
lisitsyn | template <class F> void map_matrix(Eigen::MatrixBase& m, F f) { ... } | 10:33 |
lisitsyn | like that | 10:33 |
votjakovr | lisitsyn: yeah, it will be very useful | 10:33 |
lambday | ah...classic! | 10:34 |
votjakovr | lisitsyn: i have no idea, why eigen3 doesn't have it | 10:35 |
lisitsyn | votjakovr: we may extend eigen when including | 10:35 |
lisitsyn | I mean there is a trick to add member functions | 10:35 |
lisitsyn | with macros definition | 10:36 |
lisitsyn | votjakovr: but actually non-member non-friend functions are usually better so let's just make it a simple function | 10:36 |
-!- gsomix [~gsomix@109.188.125.186] has quit [Remote host closed the connection] | 10:51 | |
lisitsyn | lambday: I am confused with *such* speedup | 10:54 |
lambday | lisitsyn: me too :-/ | 10:54 |
lisitsyn | lambday: that's -O3 right? | 10:54 |
lambday | lisitsyn: did I do something weird here? | 10:54 |
lambday | yes | 10:54 |
lambday | lisitsyn: could you please check it on your machine? :( | 10:55 |
lisitsyn | lambday: yes sure | 10:55 |
lambday | lisitsyn: when I run it with valgrind | 11:00 |
lambday | timeshogun (s)eigen3 (s) 024.06000083.460000 123.97000083.340000 224.00000083.450000 323.97000083.370000 423.98000083.410000 | 11:00 |
lambday | oops | 11:00 |
lambday | I mean, you get it, right? ~24 is shogun, ~80 is eigen3 | 11:00 |
lambday | lisitsyn: I took num_vectors=num_cols | 11:04 |
lambday | it leaks though.. | 11:12 |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has joined #shogun | 11:17 | |
van51 | hello | 11:19 |
-!- foulwall [~user@2001:da8:215:6100:39ad:46d5:c238:24a7] has quit [Ping timeout: 264 seconds] | 11:28 | |
lambday | fixed the leak... sg is way better in terms of total number of bytes allocated, number of allocs is way too high though | 11:29 |
lisitsyn | lambday: | 11:39 |
lisitsyn | timeshogun (s)eigen3 (s) | 11:39 |
lisitsyn | 06.1900001.510000 | 11:39 |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] | 11:39 | |
lisitsyn | are you sure it was -O3? | 11:40 |
lisitsyn | timeshogun (s)eigen3 (s) | 11:41 |
lisitsyn | 09.53000031.910000 | 11:41 |
lisitsyn | that's what I get w/o O3 | 11:41 |
lisitsyn | and it is rather predictable due to heavy C++ style of eigen3 | 11:42 |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has joined #shogun | 11:43 | |
lambday | lisitsyn: oh! | 11:58 |
lambday | lisitsyn: yes you're right... | 11:59 |
lambday | I didn't get it earlier | 11:59 |
lambday | lisitsyn: so, if that is the case, I should use eigen3 only | 11:59 |
lambday | I should update the desc | 12:00 |
-!- foulwall [~user@2001:da8:215:6901:39df:d7de:3755:c3ef] has joined #shogun | 12:24 | |
-!- foulwall [~user@2001:da8:215:6901:39df:d7de:3755:c3ef] has quit [Ping timeout: 264 seconds] | 12:29 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has quit [Read error: Connection reset by peer] | 13:02 | |
-!- lambday [67157d4c@gateway/web/freenode/ip.103.21.125.76] has quit [] | 13:04 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has joined #shogun | 13:09 | |
-!- lisitsyn1 [~lisitsyn@31-28-52-76.clients.tlt.100megabit.ru] has joined #shogun | 13:40 | |
-!- nube [~rho@36.252.31.77] has joined #shogun | 13:40 | |
-!- lisitsyn [~lisitsyn@109-226-115-134.clients.tlt.100megabit.ru] has quit [Ping timeout: 264 seconds] | 13:42 | |
-!- nube [~rho@36.252.31.77] has quit [Ping timeout: 256 seconds] | 13:49 | |
-!- foulwall [~foulwall@117.136.0.194] has joined #shogun | 14:18 | |
-!- lambday [67157f4c@gateway/web/freenode/ip.103.21.127.76] has joined #shogun | 14:20 | |
lambday | lisitsyn1: this result looks fine | 14:21 |
lambday | I guess I can go with SGSparse then.. just gotta add the register stuff | 14:22 |
lisitsyn1 | lambday: what result? | 14:22 |
lisitsyn1 | lambday: register doesn't help at all | 14:22 |
lambday | lisitsyn1: I changed it with dense_dot and the performance is significantly improved for SG | 14:22 |
lambday | no not because of that | 14:22 |
lisitsyn1 | lambday: just check if it is the same w/ and w/o register :) I am sure it is the same | 14:23 |
lambday | lisitsyn1: yes.. it is.. earlier I was taking num_vectors = num_cols, that's why it was giving poor results | 14:24 |
lisitsyn1 | I see | 14:24 |
lambday | now SG and eigen3 are comparable.. 0.9 (sg) and 0.8 (eigen) | 14:24 |
-!- yanglittle [b74040fc@gateway/web/freenode/ip.183.64.64.252] has quit [Ping timeout: 250 seconds] | 14:35 | |
-!- foulwall [~foulwall@117.136.0.194] has quit [Ping timeout: 264 seconds] | 14:35 | |
-!- foulwall [~foulwall@2001:da8:215:6100:8452:42f:d61a:5a21] has joined #shogun | 14:39 | |
-!- foulwall [~foulwall@2001:da8:215:6100:8452:42f:d61a:5a21] has quit [Ping timeout: 264 seconds] | 15:46 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has left #shogun ["QUIT :Leaving."] | 15:48 | |
-!- nube [~rho@49.244.47.251] has joined #shogun | 15:51 | |
-!- gsomix [~gsomix@109.188.125.185] has joined #shogun | 15:57 | |
gsomix | hello | 15:57 |
votjakovr | gsomix: hi! I've run valgrind on the unit tests and it reported me memory leaks in LineReader_unittest.cc and CircularBuffer_unittest.cc | 16:02 |
gsomix | votjakovr, oh, thanks, I will look. | 16:02 |
votjakovr | gsomix: ok ;) | 16:03 |
-!- foulwall [~foulwall@117.136.0.204] has joined #shogun | 16:06 | |
-!- foulwall [~foulwall@117.136.0.204] has quit [Remote host closed the connection] | 16:09 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has joined #shogun | 16:19 | |
van51 | sonney2k: ping | 16:20 |
van51 | gsomix: hey! | 16:20 |
van51 | gsomix: I wanted to ask you something | 16:20 |
van51 | gsomix: can the get_line(char delimiter) method be made public in LineReader? | 16:20 |
gsomix | van51, hey. I can, but for what? there is get_next_line method. | 16:24 |
van51 | gsomix: for instance, I was working on a webspam dataset and I had all the text examples in the same file and they were delimited by \0 | 16:24 |
van51 | gsomix: and it was very easy to load them with your class | 16:25 |
gsomix | van51, I can make my class configurable for another delimiters. ok? like DelimiterTokenizer. | 16:27 |
van51 | gsomix: yea personally I would like it if you could it :D | 16:28 |
van51 | gsomix: whenever you have some free time | 16:28 |
gsomix | yes, or course. give me a chance and a little time :3 | 16:29 |
gsomix | *of | 16:29 |
van51 | gsomix: cool :D | 16:29 |
van51 | gsomix: I'm set for now so I don't mind waiting | 16:29 |
van51 | gsomix: you can get everything else done first | 16:30 |
gsomix | van51, btw how is your vim? | 16:41 |
gsomix | I just saw this https://github.com/Valloric/YouCompleteMe and now want vim too. :) | 16:42 |
van51 | gsomix: looks really good! | 16:44 |
van51 | gsomix: I had set it up with clang_autocomplete but since I'm not even that used to vim I had switched back to gedit | 16:45 |
van51 | gsomix: but I will give this a go ;) | 16:45 |
-!- FSCV [~FSCV@189.139.208.117] has joined #shogun | 16:50 | |
-!- FSCV_ [~FSCV@189.139.147.50] has quit [Ping timeout: 248 seconds] | 16:51 | |
-!- HeikoS [~heiko@nat-180-37.internal.eduroam.ucl.ac.uk] has joined #shogun | 17:21 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 17:21 | |
-!- HeikoS [~heiko@nat-180-37.internal.eduroam.ucl.ac.uk] has quit [Client Quit] | 17:22 | |
-!- foulwall [~user@2001:da8:215:c252:e424:3125:5b53:9833] has joined #shogun | 17:22 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has left #shogun ["PING 1373210984"] | 17:29 | |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has joined #shogun | 17:49 | |
-!- pickle27 [~Kevin@d67-193-243-174.home3.cgocable.net] has joined #shogun | 18:10 | |
-!- foulwall [~user@2001:da8:215:c252:e424:3125:5b53:9833] has quit [Remote host closed the connection] | 18:13 | |
-!- nube [~rho@49.244.47.251] has quit [Quit: Leaving.] | 18:19 | |
-!- pickle27 [~Kevin@d67-193-243-174.home3.cgocable.net] has quit [Remote host closed the connection] | 18:46 | |
-!- gsomix [~gsomix@109.188.125.185] has quit [Ping timeout: 264 seconds] | 19:01 | |
-!- lambday [67157f4c@gateway/web/freenode/ip.103.21.127.76] has quit [] | 19:13 | |
-!- gsomix [~gsomix@109.188.124.215] has joined #shogun | 19:14 | |
-!- HeikoS [~heiko@nat-180-37.internal.eduroam.ucl.ac.uk] has joined #shogun | 19:24 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 19:24 | |
@HeikoS | sonney2k, lisitsyn1, around? | 19:24 |
lisitsyn1 | HeikoS: ja | 19:24 |
@HeikoS | lisitsyn1: hi! :) | 19:24 |
lisitsyn1 | HeikoS: hallo! | 19:24 |
@HeikoS | lisitsyn1: a just started preparing some slides | 19:24 |
lisitsyn1 | HeikoS: oh me too me too | 19:24 |
@HeikoS | it is impossible to speak about both GPs and MMD in 1 hr | 19:24 |
@HeikoS | I dont want to do this | 19:25 |
lisitsyn1 | HeikoS: oops | 19:25 |
@HeikoS | so the question is: which one to choose? | 19:25 |
lisitsyn1 | HeikoS: what do you like most? | 19:25 |
@HeikoS | lisitsyn1: I dont really mind there are arugment for both though | 19:25 |
@HeikoS | GPS have more votes and are more mainstream | 19:25 |
@HeikoS | so useful for people | 19:25 |
lisitsyn1 | yes that's true | 19:25 |
@HeikoS | MMD involves my research and more cutting edge kernel methods | 19:26 |
lisitsyn1 | but you are more into MMD and want to talk about it that's clear too | 19:26 |
@HeikoS | I just started a bot on GPS | 19:26 |
@HeikoS | but its quite hard to do them in 30 mins | 19:26 |
@HeikoS | either one assumes that people know about them and directly goes for things in shogun | 19:26 |
@HeikoS | or one does 30 min of intro and then shogun | 19:27 |
@HeikoS | same for MMD | 19:27 |
lisitsyn1 | I don't know what is 30 minutes actually | 19:27 |
@HeikoS | what do you mean? | 19:27 |
lisitsyn1 | too hard to estimate | 19:27 |
@HeikoS | I see | 19:28 |
lisitsyn1 | when I was trying to lecture it was 40 slides and 1.5 hrs | 19:28 |
@HeikoS | lisitsyn1: or should I do both? | 19:28 |
lisitsyn1 | may be that's the estimate :D | 19:28 |
@HeikoS | I dont know | 19:28 |
lisitsyn1 | HeikoS: maybe you can shorten MMD/ | 19:28 |
lisitsyn1 | ? | 19:28 |
@HeikoS | lisitsyn1: yes maybe | 19:28 |
lisitsyn1 | I have a feeling it is a slightly simpler | 19:28 |
lisitsyn1 | than GPs | 19:28 |
@HeikoS | lisitsyn1: maybe Ill try to finish both and then decide later :) | 19:29 |
@HeikoS | lets see | 19:29 |
lisitsyn1 | HeikoS: my vote would be for GPs as MMD is kind of narrow field | 19:31 |
@HeikoS | lisitsyn1: ok, Ill continue with that and maybe fit some other stuff in later | 19:31 |
lisitsyn1 | HeikoS: that's bad they are not really related | 19:31 |
lisitsyn1 | other way you could switch at some point :) | 19:31 |
@HeikoS | yea :) | 19:32 |
votjakovr | HeikoS: guten abend :) | 19:53 |
@HeikoS | votjakovr: hey! | 19:53 |
@HeikoS | votjakovr: how is it going? | 19:53 |
votjakovr | HeikoS: not so bad, i've implemented probit | 19:53 |
@HeikoS | votjakovr: awesome! | 19:54 |
@HeikoS | votjakovr: what about logit? | 19:54 |
votjakovr | HeikoS: two methods not implemented for logit yet... i'd like to use numerical integration for it | 19:55 |
@HeikoS | votjakovr: yes sure, what are the results of your alglib investigations? | 19:56 |
@HeikoS | votjakovr: does the probit case work already? can you classify things already? | 19:56 |
votjakovr | HeikoS: yep, i wrote unit tests for probit and compared predictive mean, variance against gpml and we have the same results | 19:58 |
@HeikoS | votjakovr: very nice!, so where is the PR then? :D | 19:58 |
votjakovr | HeikoS: i'll send it, but i didn't tested probabilities p(y=1|f) | 20:01 |
@HeikoS | votjakovr: you can add those in another PR | 20:01 |
@HeikoS | votjakovr: remember try to send as small PRs as possible, easier for me | 20:01 |
-!- shogun-notifier- [~irker@7nn.de] has joined #shogun | 20:04 | |
shogun-notifier- | shogun: lambday :develop * f114684 / benchmarks/sparse_test.cpp: https://github.com/shogun-toolbox/shogun/commit/f11468442c78d95adae9c447a7f6d74158ce2bf3 | 20:04 |
shogun-notifier- | shogun: performance test of sparse-matrix vector product added | 20:04 |
shogun-notifier- | shogun: Heiko Strathmann :develop * e827211 / benchmarks/sparse_test.cpp: https://github.com/shogun-toolbox/shogun/commit/e827211af60d29690438aa0e6f9e760de51230bf | 20:04 |
shogun-notifier- | shogun: Merge pull request #1213 from lambday/feature/log_determinant | 20:04 |
shogun-notifier- | shogun: | 20:04 |
shogun-notifier- | shogun: performance test of sparse-matrix vector product added | 20:04 |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has quit [Quit: Leaving.] | 20:06 | |
votjakovr | HeikoS: oh no! for probabilities i need to refactor again! | 20:07 |
@HeikoS | votjakovr: which ones in particular? | 20:08 |
votjakovr | HeikoS: get_log_probability_f LikelihoodModel returns a float64_t, but we need a vector | 20:08 |
shogun-buildbot | build #1000 of cyg1 - libshogun is complete: Failure [failed configure] Build details are at http://www.shogun-toolbox.org/buildbot/builders/cyg1%20-%20libshogun/builds/1000 blamelist: lambday <heavensdevil6909@gmail.com> | 20:09 |
@HeikoS | votjakovr: why does that return a float? | 20:10 |
@HeikoS | it is for one point only? | 20:10 |
votjakovr | HeikoS: nope it's a sum | 20:10 |
@HeikoS | votjakovr: ah | 20:10 |
@HeikoS | annoying | 20:10 |
@HeikoS | that should be changed you are right | 20:10 |
@HeikoS | caller can easily sum up | 20:10 |
votjakovr | indeed | 20:10 |
votjakovr | HeikoS: btw can we do a predictions just like sign(mean)? | 20:11 |
@HeikoS | votjakovr: yes if the original labels were +1, -1 then yes | 20:12 |
@HeikoS | I dont know how the representation is by heart | 20:13 |
@HeikoS | should be consistent with p(y*=+1|y) | 20:13 |
@HeikoS | p(y*=+1|y)>0.5 I meant | 20:13 |
votjakovr | HeikoS: and what is better p(y*=+1)>0.5 or sign(mean)? | 20:14 |
@HeikoS | if you only want to predict, use the sigh of the mean since you dont have to evaluate the likelihood | 20:15 |
@HeikoS | and thats faster | 20:15 |
votjakovr | HeikoS: ok | 20:16 |
shogun-buildbot | build #1204 of bsd1 - libshogun is complete: Failure [failed test] Build details are at http://www.shogun-toolbox.org/buildbot/builders/bsd1%20-%20libshogun/builds/1204 blamelist: lambday <heavensdevil6909@gmail.com> | 20:17 |
shogun-buildbot | build #1001 of cyg1 - libshogun is complete: Failure [failed configure] Build details are at http://www.shogun-toolbox.org/buildbot/builders/cyg1%20-%20libshogun/builds/1001 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com> | 20:21 |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has quit [Remote host closed the connection] | 20:22 | |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has joined #shogun | 20:23 | |
shogun-buildbot | build #1205 of bsd1 - libshogun is complete: Failure [failed test] Build details are at http://www.shogun-toolbox.org/buildbot/builders/bsd1%20-%20libshogun/builds/1205 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com> | 20:28 |
votjakovr | HeikoS: i've just sent a PR with refactoring of get_log_probability_f() | 20:51 |
@sonney2k | HeikoS, well we don't need that extra depth IMHO it is not a hardcore ML conference tutorial but rather a ws for practitioners | 20:56 |
shogun-buildbot | build #1327 of deb3 - modular_interfaces is complete: Failure [failed test python_modular] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/1327 blamelist: lambday <heavensdevil6909@gmail.com> | 20:57 |
@sonney2k | votjakovr, did you find any reason for the buildbot failure? | 21:03 |
votjakovr | sonney2k: sorry, i didn't yet | 21:04 |
votjakovr | sonney2k: it's weird, that somewhere this test is OK, but somewhere it isn't | 21:06 |
@sonney2k | votjakovr, well no different architectures, libraries use of floating point numbers... | 21:06 |
@sonney2k | it is important to do that though and make a concious decision | 21:06 |
@sonney2k | if that is ok or not | 21:06 |
@sonney2k | HeikoS, lisitsyn1 interesting comparison lamday did | 21:11 |
-!- lisitsyn1 is now known as lisitsyn | 21:11 | |
lisitsyn | sonney2k: yes | 21:11 |
lisitsyn | sonney2k: well first w/o -O3 it is crazy slow with eigen | 21:11 |
lisitsyn | no surprise :) | 21:11 |
shogun-notifier- | shogun: Roman Votyakov :develop * 9c4453f / / (8 files): https://github.com/shogun-toolbox/shogun/commit/9c4453fb50cfeaa73082648bc925cb2a21f1589e | 21:18 |
shogun-notifier- | shogun: refactor get_log_probability_f() | 21:18 |
shogun-notifier- | shogun: Heiko Strathmann :develop * 370764d / / (8 files): https://github.com/shogun-toolbox/shogun/commit/370764dd8576a3130b2267288fa4d01977ee9a04 | 21:18 |
shogun-notifier- | shogun: Merge pull request #1214 from votjakovr/feature/gp_refactoring | 21:18 |
shogun-notifier- | shogun: | 21:18 |
shogun-notifier- | shogun: refactor get_log_probability_f() | 21:18 |
@sonney2k | lisitsyn, I did a couple of further investigations | 21:19 |
lisitsyn | sonney2k: on what? | 21:19 |
@sonney2k | lisitsyn, first of all I didn't use CPUtime | 21:19 |
@sonney2k | but wallclock | 21:19 |
@sonney2k | so with shogun he could easily parallelize | 21:19 |
@sonney2k | and on my machine it is like | 21:19 |
@sonney2k | 02.6529862.591275 | 21:19 |
@sonney2k | wallclock | 21:19 |
@sonney2k | and when I change dim to 10 million | 21:20 |
@sonney2k | 028.34346627.809439 | 21:20 |
@sonney2k | so the difference doesn't scale linearly | 21:21 |
@sonney2k | lisitsyn, could you have a look at sparse_test.cpp line 28 | 21:22 |
@sonney2k | lisitsyn, how can I use openmp to parallelize this? | 21:22 |
@sonney2k | I just want to know what speedup I would get on my 2 cpu's | 21:22 |
lisitsyn | sonney2k: a minute | 21:22 |
shogun-buildbot | build #1328 of deb3 - modular_interfaces is complete: Failure [failed test python_modular] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/1328 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com> | 21:22 |
lisitsyn | sonney2k: try that before for loop: #pragma omp parallel for nowait | 21:24 |
@sonney2k | lisitsyn, how do I compile it then? | 21:24 |
lisitsyn | sonney2k: -fopenmp IIRC | 21:24 |
@sonney2k | that is also what I remember | 21:25 |
@sonney2k | sparse_test.cpp:27:26: error: ‘nowait’ is not valid for ‘#pragma omp parallel for’ | 21:25 |
@sonney2k | lisitsyn, ^ | 21:25 |
lisitsyn | sonney2k: oh just remove it | 21:26 |
-!- HeikoS [~heiko@nat-180-37.internal.eduroam.ucl.ac.uk] has quit [Quit: Leaving.] | 21:28 | |
@sonney2k | lisitsyn, 5% speedup yay! | 21:28 |
lisitsyn | sonney2k: okay lets tune it | 21:29 |
* sonney2k is openmp cursed | 21:29 | |
@sonney2k | lisitsyn, let me commit so you can check | 21:29 |
shogun-notifier- | shogun: Soeren Sonnenburg :develop * 7a8d7e4 / benchmarks/sparse_test.cpp: https://github.com/shogun-toolbox/shogun/commit/7a8d7e4197912d44d6d6632773a76d82570776d6 | 21:30 |
shogun-notifier- | shogun: use CTime's wall-clock time for measurements and try openmp parallelized | 21:30 |
shogun-notifier- | shogun: matrix vector product | 21:30 |
@sonney2k | lisitsyn, here we go | 21:30 |
shogun-buildbot | build #1206 of bsd1 - libshogun is complete: Failure [failed test test_1] Build details are at http://www.shogun-toolbox.org/buildbot/builders/bsd1%20-%20libshogun/builds/1206 blamelist: Roman Votyakov <votjakovr@gmail.com> | 21:33 |
lisitsyn | 1.68 vs 1.14 | 21:35 |
lisitsyn | sonney2k: ^ like that | 21:35 |
lisitsyn | unacceptable indeed | 21:35 |
@sonney2k | lisitsyn, I failed with openmp for exactly such a function | 21:36 |
@sonney2k | and IMHO it should become twice as fast | 21:36 |
@sonney2k | lisitsyn, didn't c++11 support some kind of thread class | 21:37 |
shogun-buildbot | build #1002 of cyg1 - libshogun is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/cyg1%20-%20libshogun/builds/1002 | 21:37 |
lisitsyn | sonney2k: yes it supports thread | 21:37 |
@sonney2k | lisitsyn, can you do better with openmp? | 21:38 |
lisitsyn | sonney2k: I am checking what is wrong | 21:38 |
lisitsyn | may be scheduling issue | 21:39 |
@sonney2k | otherwise I am too curious not to try pthreads | 21:39 |
lisitsyn | sonney2k: there is nothing wrong with openmp it is just about some details | 21:39 |
@sonney2k | too bad lamday is not online | 21:39 |
@sonney2k | lisitsyn, ok then you can hopefully figure it out | 21:39 |
@sonney2k | lisitsyn, I will check out docs too then | 21:39 |
shogun-buildbot | build #1207 of bsd1 - libshogun is complete: Failure [failed test] Build details are at http://www.shogun-toolbox.org/buildbot/builders/bsd1%20-%20libshogun/builds/1207 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com> | 21:47 |
lisitsyn | sonney2k: nowait matters | 21:47 |
@sonney2k | lisitsyn, I didn't get it any faster | 21:49 |
@sonney2k | lisitsyn, even with nowait | 21:49 |
lisitsyn | sonney2k: 1.5 vs 1.0 now | 21:49 |
@sonney2k | lisitsyn, any progress? | 21:49 |
lisitsyn | sonney2k: 2 threads is faster than 4 threads | 21:49 |
lisitsyn | that's strange | 21:49 |
@sonney2k | what did you do? | 21:49 |
@sonney2k | I only have 2 cores so... | 21:49 |
lisitsyn | sonney2k: HT? | 21:49 |
@sonney2k | no | 21:49 |
@sonney2k | core2duo | 21:50 |
lisitsyn | hmm | 21:50 |
@sonney2k | I could run it on my i7 though | 21:50 |
lisitsyn | #pragma omp parallel shared(r,m,v) default(none) | 21:50 |
lisitsyn | { | 21:50 |
lisitsyn | #pragma omp for nowait | 21:50 |
lisitsyn | for (index_t i=0; i<m.num_vectors; ++i) | 21:50 |
lisitsyn | r[i]=m[i].dense_dot(1.0, v.vector, v.vlen, 0.0); | 21:50 |
lisitsyn | } | 21:50 |
@sonney2k | no difference here | 21:53 |
lisitsyn | sonney2k: I don't understand what restricts its scaleability | 21:53 |
@sonney2k | it is as fast as w/ openmp | 21:53 |
lisitsyn | well my CPU is two core too | 21:54 |
lisitsyn | but HT is not helpful | 21:54 |
lisitsyn | in tapkee it helps | 21:54 |
@sonney2k | I dont' understand it either | 21:54 |
@sonney2k | it is 1e6 vectors | 21:54 |
@sonney2k | so having 2 cpu's do the thing should help | 21:55 |
@sonney2k | ahh no | 21:55 |
@sonney2k | n=100? | 21:55 |
@sonney2k | let me check | 21:55 |
lisitsyn | yes n=100 | 21:55 |
lisitsyn | what is n? | 21:55 |
@sonney2k | no | 21:55 |
lisitsyn | nnz? | 21:55 |
@sonney2k | v.vlen = 1e6 | 21:56 |
@sonney2k | so it should help | 21:56 |
@sonney2k | and matrix is 1e6 x 1e6 | 21:56 |
@sonney2k | ok let me try pthreads | 21:57 |
shogun-buildbot | build #1208 of bsd1 - libshogun is complete: Failure [failed test] Build details are at http://www.shogun-toolbox.org/buildbot/builders/bsd1%20-%20libshogun/builds/1208 blamelist: Soeren Sonnenburg <sonne@debian.org> | 22:01 |
shogun-buildbot | build #1329 of deb3 - modular_interfaces is complete: Failure [failed test python_modular] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/1329 blamelist: Roman Votyakov <votjakovr@gmail.com> | 22:13 |
lisitsyn | sonney2k: let me know pthreads results | 22:13 |
lisitsyn | I am out of ideas to be honest | 22:13 |
lisitsyn | something slows it down | 22:14 |
@sonney2k | lisitsyn, something weird happened | 22:14 |
@sonney2k | timeshogun (s)eigen3 (s) | 22:14 |
@sonney2k | 02.6432853.132614 | 22:14 |
@sonney2k | 12.6429483.087258 | 22:14 |
@sonney2k | 22.5908093.105513 | 22:14 |
@sonney2k | eigen3 became slower | 22:14 |
@sonney2k | after I did the pthread speedup?! | 22:14 |
@sonney2k | let me try w/ 1 thread | 22:14 |
lisitsyn | sonney2k: hah why | 22:14 |
@sonney2k | haha | 22:15 |
@sonney2k | faster! | 22:15 |
lisitsyn | sonney2k: so no speedup? | 22:16 |
@sonney2k | 02.6915422.560111 | 22:16 |
@sonney2k | 12.6863132.606141 | 22:16 |
lisitsyn | sonney2k: actually there should be Eigen::initParallel(); | 22:18 |
lisitsyn | in the beginning of main | 22:18 |
@sonney2k | lisitsyn, why that? | 22:18 |
lisitsyn | sonney2k: let me check what they do there | 22:19 |
lisitsyn | sonney2k: just number of threads and some caching | 22:20 |
lisitsyn | sonney2k: but no I can't find any reason to slow down eigen once you use pthreads | 22:21 |
@sonney2k | but it is like this | 22:22 |
@sonney2k | pthreads doesn't help anyway | 22:23 |
lisitsyn | sonney2k: btw adding #pragma omp parallel for in the eigen part | 22:23 |
lisitsyn | gives 2x speedup instantly | 22:23 |
@sonney2k | so my guess is that the matrix is ultra sparse | 22:23 |
lisitsyn | sonney2k: eigen uses no virtual functions but I wouldn't believe it is the cause | 22:23 |
@sonney2k | lisitsyn, wait fot the for i<0; i<n; loop? | 22:23 |
lisitsyn | sonney2k: yes | 22:24 |
@sonney2k | yeah well | 22:24 |
@sonney2k | that is a different thing to parallelize | 22:24 |
lisitsyn | ah yes | 22:24 |
@sonney2k | maybe it even notices it should just do it for the last n | 22:24 |
-!- iglesiasg [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 22:24 | |
-!- mode/#shogun [+o iglesiasg] by ChanServ | 22:24 | |
lisitsyn | hehe yes sorry | 22:24 |
lisitsyn | wrong loop | 22:24 |
@iglesiasg | hello people | 22:25 |
lisitsyn | iglesiasg: hey | 22:25 |
lisitsyn | sonney2k: lets increase its sparsity then | 22:26 |
lisitsyn | ehmm | 22:26 |
lisitsyn | decrease | 22:26 |
lisitsyn | I get | 22:26 |
lisitsyn | 9.9 with 1 thread | 22:26 |
lisitsyn | 5.0 with 4 threads | 22:26 |
lisitsyn | when n=500 | 22:26 |
@sonney2k | lisitsyn, I have a hard time understanding how the matrix is filled | 22:30 |
@sonney2k | lisitsyn, I just wrote a function to compute nnz() | 22:30 |
lisitsyn | sonney2k: some magic for sure | 22:31 |
@sonney2k | it is ~3million | 22:31 |
@sonney2k | and sparse matrix is 1e6 x 1e6 | 22:31 |
@sonney2k | lambday said that it has a full diagonal | 22:31 |
@sonney2k | so I guess he filled the diagonal plus a few non-random 2 other indices | 22:31 |
@sonney2k | lisitsyn, yes exactly 2 elements are put into each sparse vector besides the one on the diagonal | 22:33 |
lisitsyn | sonney2k: hmm that explains why dynamic scheduling with openmp is crazy slow | 22:35 |
@sonney2k | yeah static scheduling (if that means use n/2 for one cpu and n/2 for the other core) is in order | 22:38 |
@sonney2k | lisitsyn, but isn't static scheduling the default | 22:39 |
lisitsyn | sonney2k: yes default but with dynamic it raises up to 3x | 22:45 |
lisitsyn | sonney2k: anyway we do not enough work in loop iteration | 22:45 |
lisitsyn | the overhead of giving the thread his job is more than a+b I guess | 22:46 |
@sonney2k | lisitsyn, I don't understand this | 22:47 |
@sonney2k | lisitsyn, we have a loop of 1million | 22:47 |
@sonney2k | ahh ok | 22:47 |
@sonney2k | 1 million addtions is nothing | 22:47 |
@sonney2k | lisitsyn, ok I made an experiment | 22:47 |
lisitsyn | sonney2k: but in one iteration we just do a+b right? | 22:47 |
@sonney2k | made the matrix to have more nnz | 22:47 |
@sonney2k | now ~11 million | 22:47 |
@sonney2k | and now shogun is faster with a single thread | 22:48 |
@sonney2k | nnz=10999990 | 22:48 |
@sonney2k | 05.6260827.393425 | 22:48 |
lisitsyn | sonney2k: what about two threads? | 22:48 |
@sonney2k | help a little bit but still basically nothing | 22:49 |
@sonney2k | like 0.4 sec faster | 22:49 |
@sonney2k | let me add more stuff to the matrix | 22:49 |
@sonney2k | nnz=40999960 | 22:50 |
@sonney2k | lisitsyn, btw this time pthreads didn't have any influence on eigen3 | 22:50 |
@sonney2k | 015.41869925.345925 | 22:50 |
@sonney2k | with 2 threads | 22:51 |
lisitsyn | and with one? | 22:51 |
@sonney2k | wait a minute | 22:51 |
@sonney2k | I cannot go much denser though | 22:52 |
@sonney2k | already eating ~1G | 22:52 |
@sonney2k | 016.90533525.236360 | 22:52 |
lisitsyn | sonney2k: is that pthreads? | 22:52 |
@sonney2k | so parallel would only help if it is much more dense | 22:52 |
@sonney2k | yes | 22:52 |
@sonney2k | lisitsyn, it is using 170% cpu though | 22:54 |
@sonney2k | so it must be wasting quite a bit on sth we don't understand | 22:54 |
lisitsyn | sonney2k: I find that strange it wastes time on something | 22:54 |
shogun-buildbot | build #1330 of deb3 - modular_interfaces is complete: Failure [failed test python_modular] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/1330 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Soeren Sonnenburg <sonne@debian.org> | 22:54 |
@sonney2k | lisitsyn, no idea on what though | 22:57 |
@sonney2k | lisitsyn, let me create a gist | 22:57 |
lisitsyn | sonney2k: well we can let lambday check it if he is interested | 22:58 |
lisitsyn | sonney2k: actually he might profile it with something like Intel VTune which is free | 22:58 |
@sonney2k | lisitsyn, can I upload a file to github's gist or do I have to copy & paste? | 22:59 |
lisitsyn | sonney2k: I haven't seen any upload form here | 22:59 |
@sonney2k | https://gist.github.com/sonney2k/5944937\ | 23:01 |
@sonney2k | https://gist.github.com/sonney2k/5944937 | 23:01 |
@sonney2k | lisitsyn, I just ran it on my core i7 | 23:29 |
lisitsyn | sonney2k: better? | 23:29 |
@sonney2k | lisitsyn, I am impressed it is 5s instead of 15 :) | 23:30 |
@sonney2k | single core | 23:30 |
@sonney2k | with 8 threads it is ~4s | 23:30 |
@sonney2k | eigen3 7s | 23:30 |
@sonney2k | bug eigen3 was 25 before so woah | 23:31 |
@sonney2k | i7's are doing well | 23:31 |
@sonney2k | alright that's it | 23:31 |
@sonney2k | I should have prepared my talk but hey that was too interesting | 23:31 |
lisitsyn | sonney2k: hah yes | 23:31 |
-!- van51 [~van51@athedsl-408350.home.otenet.gr] has joined #shogun | 23:32 | |
@sonney2k | van51, g'day | 23:32 |
van51 | sonney2k: hello | 23:32 |
@sonney2k | van51, we have a new directory in shogun's git | 23:32 |
@sonney2k | shogun/benchmark | 23:32 |
@sonney2k | van51, it would be great if you could add the benchmarks you did there | 23:32 |
@sonney2k | van51, maybe using some artificial strings even | 23:33 |
van51 | sonney2k: ok sure | 23:33 |
van51 | sonney2k: btw I have some changes standing by about allowing the user to user normalization or not | 23:34 |
van51 | sonney2k: in the HashedDocDotFeatures | 23:34 |
van51 | sonney2k: should I make a PR? or have normalization be something that is always happening | 23:34 |
@sonney2k | van51, yes make it optional | 23:35 |
van51 | I have a question then | 23:35 |
van51 | it is already in my remote git | 23:35 |
van51 | would it be ok if I made a PR without having rebased it? | 23:35 |
@sonney2k | van51, btw I totally forgot - did you ever compare the converter + liblinear trained and liblinear trained on the dotfeatures? | 23:35 |
@sonney2k | van51, I mean it should give exactly the same liblinear/result | 23:36 |
van51 | sonney2k: yea I did. pre-normalization | 23:36 |
van51 | and they were giving the same output | 23:36 |
@sonney2k | van51, excellent! | 23:36 |
@sonney2k | van51, a PR without a rebase will cause a mess | 23:36 |
van51 | sonney2k: I had it in my example but I removed while we I was debugging the running time of the dotfeatures | 23:37 |
@sonney2k | (if I get you right) | 23:37 |
van51 | sonney2k: ok then I will do it quickly on my machine | 23:37 |
van51 | sonney2k: and after that I will make another PR for the streaming features | 23:37 |
@sonney2k | van51, very good | 23:37 |
@sonney2k | van51, btw ocas uses multiple threads when training | 23:42 |
@sonney2k | van51, also for the add_to_dense_vec | 23:42 |
@sonney2k | van51, so please check if it crashes with just 1 thread | 23:43 |
@sonney2k | in any case we have to figure out why it is crashing at all | 23:43 |
@sonney2k | (valgrind run?) | 23:43 |
van51 | sonney2k: ah about that | 23:43 |
@sonney2k | yes? | 23:43 |
van51 | sonney2k: it hasn't crashed again | 23:43 |
van51 | sonney2k: and I have ran it plenty times while checking some parameters | 23:44 |
@sonney2k | van51, weird and scary still | 23:45 |
van51 | sonney2k: actually no | 23:45 |
van51 | sonney2k: what had happened was that I was calling apply() on some test features | 23:45 |
van51 | sonney2k: and then I was unref'ing the test features | 23:46 |
van51 | no the traiining features | 23:46 |
van51 | but that had already happened in apply() | 23:46 |
van51 | so it was doing an illegal free | 23:46 |
@sonney2k | could be though IIRC apply SG_REF's the features and stores them in the model | 23:47 |
van51 | sonney2k: yes but it also SG_UNREF's the training features | 23:47 |
@sonney2k | van51, btw can you read matlab / octave code? | 23:47 |
van51 | sonney2k: yea | 23:47 |
@sonney2k | van51, recall that I told you about a dotfeature project that would involve detecting the gender of a person just based on the face? | 23:48 |
van51 | sonney2k: yeap | 23:48 |
@sonney2k | picture of the face I mean | 23:48 |
@sonney2k | well look at shogun/features/LBPPyrDotFeatures.cpp | 23:48 |
@sonney2k | I can give you matlab code to do that stuff | 23:49 |
@sonney2k | at some point you should just convert the code and check for correctness by comparing with the matlab code | 23:50 |
@sonney2k | I can then ask vojtech to give us some training data (we need frontal faces that are marked male/female) | 23:51 |
van51 | yea sure! | 23:52 |
-!- votjakovr [~votjakovr@host-46-241-3-209.bbcustomer.zsttk.net] has quit [Remote host closed the connection] | 23:54 | |
@sonney2k | van51, ohh even better vojtech wrote c code already which we just have to port / adjust to shogun | 23:56 |
@sonney2k | van51, http://cmp.felk.cvut.cz/~xfrancv/ocas/libocas_v097.zip | 23:56 |
@sonney2k | get this | 23:56 |
@sonney2k | and then check out lbppyr_features_mex.c | 23:56 |
--- Log closed Mon Jul 08 00:00:22 2013 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!