--- Log opened Thu Jun 09 00:00:32 2016 | ||
-!- travis-ci [~travis-ci@ec2-54-162-19-163.compute-1.amazonaws.com] has joined #shogun | 00:08 | |
travis-ci | it's Heiko Strathmann'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/136145320 | 00:08 |
---|---|---|
-!- travis-ci [~travis-ci@ec2-54-162-19-163.compute-1.amazonaws.com] has left #shogun [] | 00:08 | |
-!- sonne|osx [~sonne@x4e33f692.dyn.telefonica.de] has quit [Quit: sonne|osx] | 00:13 | |
-!- sonne|osx [~sonne@x4e33f692.dyn.telefonica.de] has joined #shogun | 00:14 | |
-!- sonne|osx [~sonne@x4e33f692.dyn.telefonica.de] has quit [Client Quit] | 00:17 | |
-!- OXPHOS [9d8b131c@gateway/web/freenode/ip.157.139.19.28] has quit [Quit: Page closed] | 01:00 | |
-!- arianepaola [~ariane@unaffiliated/arianepaola] has quit [Ping timeout: 252 seconds] | 01:37 | |
shogun-buildbot | build #1017 of nightly_none is complete: Failure [failed test] Build details are at http://buildbot.shogun-toolbox.org/builders/nightly_none/builds/1017 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com>, OXPHOS <engelzora@gmail.com> | 03:04 |
-!- arianepaola [~ariane@unaffiliated/arianepaola] has joined #shogun | 03:05 | |
-!- lambday [6d9941c0@gateway/web/freenode/ip.109.153.65.192] has quit [Ping timeout: 250 seconds] | 03:27 | |
shogun-buildbot | build #15 of clang - thread analysis is complete: Failure [failed compile] Build details are at http://buildbot.shogun-toolbox.org/builders/clang%20-%20thread%20analysis/builds/15 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com>, OXPHOS <engelzora@gmail.com> | 03:43 |
shogun-buildbot | build #14 of clang - undefined behaviour analysis is complete: Failure [failed compile] Build details are at http://buildbot.shogun-toolbox.org/builders/clang%20-%20undefined%20behaviour%20analysis/builds/14 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com>, OXPHOS <engelzora@gmail.com> | 03:47 |
-!- sanuj [~sanuj@117.204.252.181] has joined #shogun | 04:00 | |
-!- sanuj [~sanuj@117.204.252.181] has quit [Ping timeout: 240 seconds] | 04:25 | |
-!- sanuj [~sanuj@117.204.252.181] has joined #shogun | 05:00 | |
Saurabh7 | 35 % cache misses :/ | 05:08 |
sanuj | wiking, got time? | 05:12 |
shogun-buildbot | build #16 of memleak - valgrind is complete: Failure [failed memory check] Build details are at http://buildbot.shogun-toolbox.org/builders/memleak%20-%20valgrind/builds/16 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com>, OXPHOS <engelzora@gmail.com> | 05:30 |
shogun-buildbot | build #1018 of nightly_all is complete: Failure [failed test] Build details are at http://buildbot.shogun-toolbox.org/builders/nightly_all/builds/1018 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com>, OXPHOS <engelzora@gmail.com> | 05:36 |
-!- sanuj [~sanuj@117.204.252.181] has quit [Read error: Connection reset by peer] | 05:44 | |
@wiking | Saurabh7: why so many misses? :S | 05:56 |
Saurabh7 | wiking: no idea | 05:58 |
Saurabh7 | and when i do map.transpose.col(i) it goes to 47% | 05:58 |
@wiking | yeah i see that | 05:58 |
@wiking | mm | 05:58 |
@wiking | one thing we should try | 05:58 |
@wiking | i mean i know it's a bit unrelated | 05:58 |
@wiking | mmmm can you give me the code/branch where this is available? | 05:59 |
Saurabh7 | map.transpose.col(i) this version ? | 05:59 |
@wiking | any of them | 06:00 |
-!- sanuj [~sanuj@117.204.252.181] has joined #shogun | 06:00 | |
Saurabh7 | my pr branch can be used | 06:01 |
Saurabh7 | https://github.com/Saurabh7/shogun/tree/lars | 06:01 |
@wiking | which is the code you use for running perf? | 06:02 |
@wiking | Saurabh7: ^ | 06:03 |
Saurabh7 | wiking: https://gist.github.com/Saurabh7/74f551a4c2bd15e12f8aaaaeade7f816 | 06:03 |
Saurabh7 | but i am using a dataset file | 06:03 |
@wiking | where can i get taht | 06:04 |
@wiking | is it part of data? | 06:04 |
Saurabh7 | no | 06:04 |
Saurabh7 | its in zoq/benchmark data | 06:04 |
@wiking | link? | 06:04 |
Saurabh7 | wiking: https://bitbucket.org/zoqbits/benchmark-data/src | 06:05 |
Saurabh7 | madelon_X.csv and madelon_y.csv | 06:05 |
-!- sanuj [~sanuj@117.204.252.181] has quit [Read error: Connection reset by peer] | 06:07 | |
@wiking | Saurabh7: can you give me your perf cmd line args? | 06:10 |
Saurabh7 | wiking: perf stat -e task-clock,cycles,instructions,cache-references,cache-misses ./a.out | 06:10 |
@wiking | thnx | 06:11 |
@wiking | ok so with that code i get | 06:13 |
@wiking | 18,429,761 cache-misses # 35.330 % of all cache refs | 06:13 |
@wiking | right? | 06:13 |
Saurabh7 | yesyes | 06:13 |
@wiking | just a sec | 06:13 |
shogun-buildbot | build #1147 of nightly_default is complete: Failure [failed test test_1 notebooks] Build details are at http://buildbot.shogun-toolbox.org/builders/nightly_default/builds/1147 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com>, OXPHOS <engelzora@gmail.com> | 06:15 |
-!- sanuj [~sanuj@117.204.252.181] has joined #shogun | 06:27 | |
-!- sanuj [~sanuj@117.204.252.181] has quit [Ping timeout: 260 seconds] | 06:38 | |
Saurabh7 | hm when I argsort the col accessors it falls by 2% | 06:53 |
Saurabh7 | hehe | 06:53 |
Saurabh7 | maybe I should make a copy of X and store only the cols we acess, pretty sure no misses then | 06:55 |
@wiking | mmm but it's a copy then | 07:14 |
@wiking | i mean it adds memory overhead | 07:15 |
-!- sanuj [~sanuj@117.204.252.181] has joined #shogun | 07:30 | |
-!- travis-ci [~travis-ci@ec2-54-205-13-204.compute-1.amazonaws.com] has joined #shogun | 07:31 | |
travis-ci | it's Heiko Strathmann'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/136235427 | 07:31 |
-!- travis-ci [~travis-ci@ec2-54-205-13-204.compute-1.amazonaws.com] has left #shogun [] | 07:31 | |
-!- GandalfTheWizard [~Eva@112.10.170.58] has joined #shogun | 08:33 | |
-!- GandalfTheWizard [~Eva@112.10.170.58] has quit [Quit: Leaving.] | 09:25 | |
-!- sanuj [~sanuj@117.204.252.181] has quit [Ping timeout: 250 seconds] | 10:55 | |
-!- sanuj [~sanuj@117.204.252.181] has joined #shogun | 10:58 | |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has joined #shogun | 11:12 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 11:12 | |
@HeikoS | Saurabh7: jo | 11:20 |
Saurabh7 | HeikoS: ello | 11:20 |
@HeikoS | Saurabh7: how are things? | 11:21 |
Saurabh7 | HeikoS: updated with results here: https://github.com/shogun-toolbox/shogun/pull/3243 | 11:22 |
@HeikoS | Saurabh7: checking | 11:23 |
@HeikoS | Saurabh7: cool thanks for the numbers | 11:24 |
@HeikoS | one thing I wanted to ask about is this transpose thing | 11:24 |
@HeikoS | double transpose, you said, was faster | 11:24 |
Saurabh7 | HeikoS: we need to decide on one or two things, other than that I have tried most of things I can with eigen | 11:24 |
Saurabh7 | HeikoS: doubel transpose ? | 11:24 |
@HeikoS | like transpose in beginning, do things, then another transpose at the end | 11:25 |
@HeikoS | what viktor didnt like | 11:25 |
@HeikoS | but then you said it is faster | 11:25 |
@wiking | i liked buuut | 11:25 |
@wiking | not with a nested loop | 11:25 |
@wiking | ;) | 11:25 |
@HeikoS | wiking: I see :) | 11:25 |
@HeikoS | well, good to check this anyways | 11:25 |
@HeikoS | Saurabh7: remember what I mean? | 11:25 |
Saurabh7 | HeikoS: we need just te matrix in col major sotrage so we can access cols | 11:26 |
@HeikoS | Saurabh7: yep | 11:26 |
@HeikoS | ok so it is that? | 11:26 |
Saurabh7 | yes when we tranpose the feature matrix | 11:26 |
Saurabh7 | first it was with loops | 11:26 |
Saurabh7 | now I have done with eigen | 11:27 |
@HeikoS | Saurabh7: cool, all good then | 11:27 |
@HeikoS | great :) | 11:27 |
Saurabh7 | but we have to pass it to methods :) | 11:27 |
Saurabh7 | the eigen matrix | 11:27 |
@HeikoS | Saurabh7: you mean the column? | 11:27 |
@HeikoS | Saurabh7: I dont think that is necessary | 11:27 |
@HeikoS | why not just pass the SGMatrix | 11:28 |
@HeikoS | and then create a map? | 11:28 |
@HeikoS | inside the method | 11:28 |
Saurabh7 | then I have to transpose and store it | 11:28 |
@HeikoS | no | 11:28 |
@HeikoS | just pass it | 11:28 |
@HeikoS | then create map | 11:28 |
@HeikoS | and transpose the map | 11:28 |
@HeikoS | its free | 11:28 |
Saurabh7 | yes the te transposed map has to be stored in another EigenMatrix | 11:28 |
Saurabh7 | or we access rows of a colmajor matrix | 11:29 |
@HeikoS | Saurabh7: we are talking about two different things here | 11:29 |
@HeikoS | Saurabh7: my point is: SGMatrix and EigenMatrix are both just wrappers around a memory pointer | 11:29 |
@HeikoS | they are 100% interchangable | 11:30 |
@HeikoS | and can be created from one another | 11:30 |
@HeikoS | so if you have an eigen3 matrix | 11:30 |
@HeikoS | you can just have an SGMatrix to the exact same memory | 11:30 |
@HeikoS | where is the memory allocated for the matrix you pass? | 11:30 |
Saurabh7 | I create a eigen transpose at the start | 11:31 |
Saurabh7 | I can wrap a SGMatrix around that ? | 11:31 |
@HeikoS | yes | 11:31 |
@HeikoS | the easiest way actually is | 11:31 |
@HeikoS | rather than allocating the memory with eigen3, allocate it with shogun, then put an eigen map around it | 11:31 |
@HeikoS | and then pass the sg matrix in the method | 11:32 |
@HeikoS | can you show me a line? | 11:32 |
Saurabh7 | https://github.com/shogun-toolbox/shogun/pull/3243/files#diff-c0c82dce2edf38481495103b1ecc4174R140 | 11:32 |
@HeikoS | which line? | 11:33 |
@HeikoS | I see | 11:33 |
Saurabh7 | 140 | 11:33 |
@HeikoS | ok | 11:33 |
@HeikoS | so here we have three objects | 11:33 |
@HeikoS | X | 11:34 |
@HeikoS | map_Xr | 11:34 |
@HeikoS | map_X | 11:34 |
@HeikoS | all of them point to the *same* memory | 11:34 |
@HeikoS | so you can just pass X | 11:34 |
@HeikoS | to the method | 11:34 |
@HeikoS | and then create a map around it, transpose it | 11:34 |
@HeikoS | then you new map will be equal to map_X | 11:34 |
@HeikoS | Saurabh7: thoughts? | 11:35 |
Saurabh7 | I remember doing things but it lead to some overhead | 11:35 |
Saurabh7 | I will check if its in stas | 11:35 |
Saurabh7 | stash | 11:35 |
Saurabh7 | lemme show numbers | 11:35 |
@HeikoS | no wait | 11:36 |
@HeikoS | before you benchmark differences | 11:36 |
@HeikoS | it is important to really understand | 11:36 |
@HeikoS | there *cannot* be any overhead caused by this | 11:36 |
@HeikoS | as these things all wrap the same memory | 11:36 |
@HeikoS | if there is difference, it comes from something else | 11:36 |
Saurabh7 | so MatrixXd map_X = map_Xr.transpose(); if its same memory will it not be stored in row major way ? | 11:37 |
@HeikoS | the eigen3 map just pretends that you transposed the matrix, the memory behind it is the same | 11:38 |
@HeikoS | I think there also is transposeInPlace() | 11:39 |
@HeikoS | which actually changes the memory | 11:39 |
@HeikoS | Saurabh7: I suggest you do a little mini example to check? | 11:39 |
@HeikoS | create an SGMatrix | 11:39 |
@HeikoS | create two maps on it | 11:39 |
Saurabh7 | so map_X = map_Xr.transpose() if called 1000 times it will be no overhead ? | 11:39 |
@HeikoS | one of it, you transpose | 11:40 |
@HeikoS | and then print the SGMatrix | 11:40 |
@HeikoS | I think no | 11:40 |
@HeikoS | the tranpose will only take effect when you do an operation with the map | 11:40 |
@HeikoS | say a matrix multiply | 11:40 |
@HeikoS | this is adjusted | 11:40 |
@HeikoS | so that the transpose is respected | 11:41 |
@HeikoS | just like the tranpose flags in cblas | 11:41 |
@HeikoS | Saurabh7: but please, write a little program to verify all that | 11:41 |
@HeikoS | maybe also helps understanding | 11:41 |
sanuj | hey HeikoS | 11:45 |
sanuj | what's up :) | 11:45 |
@wiking | ++ | 11:45 |
@HeikoS | sanuj: jo | 11:46 |
@HeikoS | sanuj: going through PRs :) | 11:46 |
@HeikoS | then disappearing, need to prepare a talk | 11:47 |
sanuj | okay | 11:47 |
sanuj | HeikoS, can you see my comments at the end of this PR https://github.com/shogun-toolbox/shogun/pull/3250 | 11:47 |
@HeikoS | Saurabh7: think its good to do this example? | 11:47 |
@HeikoS | sanuj: ye | 11:47 |
sanuj | then i can push my changes accordingly | 11:47 |
Saurabh7 | HeikoS: yes doing :) | 11:47 |
@HeikoS | Saurabh7: cool! :) | 11:47 |
@HeikoS | Saurabh7: share the code and output after | 11:47 |
@HeikoS | sanuj: | 11:49 |
sanuj | yes | 11:49 |
@HeikoS | isnt it possible to just call ->init(train,test) on the combined kernel? | 11:50 |
@HeikoS | why do we need to create a new object? | 11:50 |
sanuj | HeikoS, that's what i have said in the comments | 11:50 |
sanuj | HeikoS, if i do init() then it won't change the custom kernel | 11:50 |
@HeikoS | ah! | 11:50 |
sanuj | HeikoS, maybe we can remove the custom kernel... then it would be straight forward | 11:51 |
@HeikoS | can you change the custom kernel then manually? | 11:51 |
@HeikoS | no actually | 11:51 |
@HeikoS | then it is fine | 11:51 |
@HeikoS | but you should say that in the cookbook | 11:51 |
Saurabh7 | HeikoS: code : https://gist.github.com/Saurabh7/902878e25b0b24c2674e1ab1aacb1b21 | 11:51 |
sanuj | HeikoS, i won't be able to change the custom kernel due to meta language restrictions | 11:51 |
Saurabh7 | output: https://gist.github.com/Saurabh7/e0e018db4da00af6f5229beebdb56f01 | 11:52 |
@HeikoS | sanuj: you can keep the original reference to it, no? | 11:52 |
@HeikoS | and then call set_kernel_matrix | 11:52 |
@HeikoS | on it? | 11:52 |
sanuj | HeikoS, i can delete and add a new custom kernel | 11:52 |
@HeikoS | sanuj: no need to | 11:52 |
@HeikoS | just keep reference? | 11:52 |
sanuj | HeikoS, yes, that works in the python translation but not in cpp translation | 11:52 |
sanuj | i had tried that | 11:52 |
@HeikoS | custom_kernel_train.set_kernel_matrix_from_full() | 11:53 |
@HeikoS | (or similar name) | 11:53 |
sanuj | HeikoS, yes that only | 11:53 |
@HeikoS | Saurabh7: whats the output? | 11:53 |
Saurabh7 | matrix new cannnot change old data | 11:53 |
@HeikoS | I see | 11:53 |
@HeikoS | sanuj: that only? | 11:54 |
@HeikoS | what do you mean? | 11:54 |
sanuj | HeikoS, i used custom_kernel_train.set_kernel_matrix_from_full() | 11:54 |
@HeikoS | but? | 11:54 |
sanuj | HeikoS, it was able to set the matrix in python translation but not in cpp translation | 11:55 |
@HeikoS | sanuj: you will have to explain why | 11:55 |
sanuj | HeikoS, okay, give me a few minutes | 11:56 |
@HeikoS | sanuj: again, if you run into such things, please dont report that something doesnt work without giving the error | 11:56 |
@HeikoS | maybe there is an easy fix? :) | 11:56 |
@HeikoS | maybe not | 11:56 |
sanuj | okay | 11:58 |
sanuj | i was just telling you why i hadn't used the same combined kernel | 11:58 |
Saurabh7 | HeikoS: so we can assume now MatrixXd map_X = map_Xr.transpose() creates new memory ? | 11:58 |
sanuj | the error that i was getting was "kernel matrix is not set" | 11:58 |
sanuj | but i haven't really dived in what is causing it for cpp | 11:58 |
sanuj | i'll do it now | 11:59 |
@HeikoS | Saurabh7: can you show me the output? | 12:00 |
Saurabh7 | HeikoS: https://gist.github.com/Saurabh7/e0e018db4da00af6f5229beebdb56f01 | 12:00 |
Saurabh7 | i changed first element for both maps | 12:00 |
@HeikoS | sanuj: python / cpp should behave the same | 12:00 |
sanuj | HeikoS, in the pr you just reviewed, the notebook diff is different due to the version difference | 12:01 |
sanuj | of ipython | 12:01 |
@HeikoS | Saurabh7: ok so transpose allocates new memory if being assigned to another variable | 12:01 |
@HeikoS | Saurabh7: interesting | 12:01 |
@HeikoS | wasnt aware of that, thanks for checking | 12:02 |
@HeikoS | Saurabh7: ok then, the way to go then is: you allocate SGMatrix for the transposed memory yourself | 12:02 |
@HeikoS | then you create an eigen map | 12:02 |
@HeikoS | and then you assign that map the transpose | 12:02 |
@HeikoS | then the SGMatrix contains the transposed mempry | 12:02 |
@HeikoS | which you can pass around | 12:02 |
@HeikoS | sanuj: ok thanks | 12:02 |
@HeikoS | sanuj: annoying this ipython | 12:03 |
sanuj | yeah | 12:03 |
sanuj | but don't merge it now | 12:03 |
@HeikoS | sanuj: ok lets get down with this cpp/python error | 12:03 |
sanuj | i'll make the changes you suggested | 12:03 |
@HeikoS | sanuj: yeah also need to get rid of the error | 12:03 |
@HeikoS | sanuj: the error you are getting might be due to some older files floating around | 12:06 |
@HeikoS | try removing the build dir | 12:06 |
@HeikoS | it complains about members being protected so it cannot set them | 12:06 |
sanuj | HeikoS, yeah, i spent a lot of time trying to find the source of error | 12:06 |
@HeikoS | so either your forgot to change some direct access things, or your swig output is outdated | 12:06 |
@HeikoS | only two possibilities | 12:07 |
@HeikoS | did you try removing build dir and re-building? | 12:07 |
sanuj | it seems it is outdated | 12:07 |
sanuj | i tried re-cmake and building | 12:07 |
sanuj | now i'll try in a new build | 12:07 |
@HeikoS | ok | 12:07 |
@HeikoS | cool | 12:07 |
@HeikoS | sanuj: btw | 12:08 |
sanuj | HeikoS, btw travis was passing, so i think it is because of my old build dir | 12:08 |
@HeikoS | really cool that you dig into all this stuff | 12:08 |
@HeikoS | it is pretty messy and we appreciate your efforts a lot | 12:08 |
@HeikoS | sanuj: ah there you go, travis for the rescue | 12:08 |
@HeikoS | sanuj: let me know how the custom kernel stuff is going | 12:08 |
sanuj | HeikoS, thank you :) | 12:09 |
@HeikoS | Saurabh7: did you get what I mean via pre-allocating using SGMatrix? | 12:09 |
@HeikoS | and then passing that? | 12:09 |
@HeikoS | since I gotta go now | 12:09 |
@HeikoS | arianepaola: hi!, any news on the setup.py, anything wiking can help you with? | 12:09 |
Saurabh7 | HeikoS: yes I will make changes | 12:09 |
@HeikoS | Saurabh7: ok cool | 12:10 |
Saurabh7 | HeikoS: other than that what should be looking at | 12:10 |
@HeikoS | Saurabh7: yeah I was curious about one thing in the numbers | 12:10 |
@HeikoS | 2000 500 0.339843 0.240674 2.52726e+09 2.52726e+09 167 165 | 12:10 |
@HeikoS | thi line | 12:10 |
@HeikoS | sklearn is faster at the same number of iterations | 12:11 |
@HeikoS | I wonder why | 12:11 |
Saurabh7 | No idea i have tried many things | 12:11 |
@HeikoS | the other thing is: is it possible to use the very same epsilon in the comparison? | 12:11 |
@HeikoS | Saurabh7: ok | 12:11 |
@HeikoS | its not a big deal for now | 12:11 |
Saurabh7 | HeikoS: I used the same epsilon | 12:12 |
@HeikoS | sklearn uses so many more iterations.... | 12:12 |
@HeikoS | know why? | 12:12 |
Saurabh7 | their was bigger which lead to good stopping | 12:12 |
@HeikoS | "their was bigger"? | 12:13 |
Saurabh7 | HeikoS: I mean the epsilon value | 12:13 |
@HeikoS | (11:10:34) Saurabh7: HeikoS: I used the same epsilon | 12:13 |
@HeikoS | ?? | 12:13 |
Saurabh7 | we used 10-16 | 12:13 |
@HeikoS | I am confused now | 12:13 |
Saurabh7 | theirs was 10-7 | 12:13 |
Saurabh7 | I changed shoguns to 10-7 | 12:14 |
Saurabh7 | to compare | 12:14 |
@HeikoS | ok | 12:14 |
@HeikoS | so it was the same | 12:14 |
Saurabh7 | sry i type weird sometimes | 12:14 |
Saurabh7 | yep | 12:14 |
@HeikoS | then same question: why does sklearn do more iterations? | 12:14 |
@HeikoS | so many more? | 12:14 |
Saurabh7 | when N and D are close sklearn always does this | 12:15 |
sanuj | HeikoS, oh, so... mkl cookbook is working for both cpp and python | 12:15 |
@HeikoS | sanuj: with updating the train kernel? | 12:15 |
sanuj | i must have done something wrong in the code when i had tried previously | 12:15 |
sanuj | because i wrote fresh code right now | 12:15 |
sanuj | HeikoS, yes | 12:15 |
@HeikoS | sanuj: ok cool! | 12:15 |
@HeikoS | sanuj: I will check PRs later today | 12:15 |
sanuj | HeikoS, okay | 12:15 |
@HeikoS | Saurabh7: ok, weird | 12:15 |
@HeikoS | Saurabh7: ok, now one thing to look at: LARS is also in mlpack right? | 12:16 |
Saurabh7 | HeikoS: yes | 12:16 |
@HeikoS | Saurabh7: any idea how fast it is? | 12:16 |
Saurabh7 | not checked yet | 12:16 |
Saurabh7 | will do | 12:16 |
@HeikoS | Saurabh7: cool | 12:17 |
@HeikoS | Saurabh7: ah one more | 12:17 |
@HeikoS | Saurabh7: does sklearn pre-compute the gram matrix? | 12:17 |
@HeikoS | in lars? | 12:17 |
@HeikoS | because it will be much faster then | 12:17 |
Saurabh7 | no I disabled it | 12:17 |
@HeikoS | ok | 12:17 |
@HeikoS | if you enable it, is it much faster? | 12:17 |
@HeikoS | and: can shogun precompute it? | 12:17 |
Saurabh7 | no shogun cannot | 12:17 |
@HeikoS | to gain the same speedup if memory is available | 12:17 |
@HeikoS | think it is good to add that? | 12:17 |
Saurabh7 | yes might be good | 12:18 |
@HeikoS | I am just looking at https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/least_angle.py | 12:18 |
@HeikoS | their code is not inline c | 12:18 |
@HeikoS | it is python | 12:18 |
sanuj | HeikoS, what happened to "Math:init_random(1)" in gmm cookbook | 12:18 |
sanuj | it still fails | 12:18 |
sanuj | for R | 12:18 |
@HeikoS | sanuj: I think the integration testing data is out of sync with the listing btw | 12:18 |
@HeikoS | cpp examples fail on traivs | 12:18 |
@HeikoS | sanuj: which link are you refering to? | 12:19 |
@HeikoS | will check | 12:19 |
Saurabh7 | HeikoS: yes I compared with that code | 12:19 |
Saurabh7 | almost everything is similar | 12:19 |
sanuj | HeikoS, i'm talking about this https://github.com/shogun-toolbox/shogun/pull/3239 | 12:19 |
@HeikoS | Saurabh7: their solve_cholesky is from lapaclk | 12:19 |
@HeikoS | Saurabh7: ok..... | 12:19 |
sanuj | HeikoS, it is bound to fail till we don't merge the above PR ^ | 12:19 |
@HeikoS | Saurabh7: maybe also profile it | 12:19 |
@HeikoS | sanuj: I see | 12:19 |
@HeikoS | did you rebase recently? | 12:20 |
sanuj | in the morning | 12:20 |
sanuj | HeikoS, shall i do it again | 12:20 |
@HeikoS | sanuj: no | 12:20 |
@HeikoS | sigh, seems like another error | 12:20 |
Saurabh7 | HeikoS: excet the difference that they do direct matrix operations L[:n_active, :n_active] | 12:20 |
Saurabh7 | HeikoS: like this, while we have to get the active columns and dot product | 12:20 |
sanuj | HeikoS, Error in Math$init_random : object of type 'closure' is not subsettable | 12:21 |
sanuj | :/ | 12:21 |
@HeikoS | sanuj: I will check and fix | 12:22 |
@HeikoS | Saurabh7: I see, so they copy the matrix | 12:22 |
sanuj | cool | 12:22 |
@HeikoS | Saurabh7: and then do matrix operations | 12:22 |
@HeikoS | Saurabh7: ? | 12:22 |
Saurabh7 | HeikoS: does that copy it ? | 12:22 |
@HeikoS | Saurabh7: I dont know | 12:22 |
Saurabh7 | for example : eq_dir = np.dot(X.T[:n_active].T, least_squares) | 12:22 |
Saurabh7 | only dot with active columns | 12:23 |
@HeikoS | what do we do? | 12:23 |
Saurabh7 | loop | 12:23 |
Saurabh7 | extract column | 12:23 |
Saurabh7 | dot | 12:23 |
@HeikoS | I see | 12:23 |
@HeikoS | why not try extracting all collumns | 12:23 |
@HeikoS | and then do dot product with matrix? | 12:23 |
@HeikoS | BUT | 12:23 |
@HeikoS | do it clever | 12:23 |
@HeikoS | have a buffer matrix allocated at the beginning | 12:24 |
@HeikoS | and then use memcpy to copy columns in there | 12:24 |
@HeikoS | and then create a map that only contains the first few columns | 12:24 |
@HeikoS | (while the buffer is bigger) | 12:24 |
@HeikoS | so you dont have to re-allocate | 12:24 |
@HeikoS | see? | 12:24 |
Saurabh7 | oh | 12:24 |
Saurabh7 | so what about uninitialized things | 12:25 |
Saurabh7 | extra memory | 12:25 |
Saurabh7 | oh a eigen map | 12:25 |
Saurabh7 | okok can do that | 12:26 |
@HeikoS | yeah you allocate a big buffer in the beginning | 12:26 |
@HeikoS | then fill only the first few columns | 12:26 |
@HeikoS | and create a map that only uses these | 12:26 |
@HeikoS | then in next iteration, you copy another column in there and create new map | 12:26 |
@HeikoS | Saurabh7: that might speed up things, might not | 12:26 |
Saurabh7 | yes i had tried with a new matrix in each iter | 12:27 |
Saurabh7 | it didnt work much | 12:27 |
Saurabh7 | lemme check this out | 12:27 |
@HeikoS | Saurabh7: I think such things cannot be optimized by the compiler | 12:28 |
@HeikoS | so it might help | 12:28 |
@HeikoS | ok I will be back later today | 12:28 |
@HeikoS | see you all | 12:28 |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has quit [Remote host closed the connection] | 12:28 | |
Saurabh7 | ok cool | 12:28 |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has joined #shogun | 12:30 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 12:30 | |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has quit [Remote host closed the connection] | 12:30 | |
-!- lambday [8028b10a@gateway/web/freenode/ip.128.40.177.10] has joined #shogun | 12:48 | |
-!- mode/#shogun [+o lambday] by ChanServ | 12:48 | |
-!- shogun-notifier- [~irker@7nn.de] has joined #shogun | 13:08 | |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * 0e5d0d8 / / (16 files): https://github.com/shogun-toolbox/shogun/commit/0e5d0d8602cc26b8ecd6455f1d944a6e1e0532cf | 13:08 |
shogun-notifier- | shogun: working version | 13:08 |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * aa577dd / / (27 files): https://github.com/shogun-toolbox/shogun/commit/aa577ddb9f86a4c343bc58b86be3f6872f24a46d | 13:08 |
shogun-notifier- | shogun: set default cpubackend | 13:08 |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * f6c018b / src/shogun/mathematics/linalgrefactor/ (5 files): https://github.com/shogun-toolbox/shogun/commit/f6c018bebf7e5951040b1b890a778625eda98159 | 13:08 |
shogun-notifier- | shogun: const | 13:08 |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * 18540fb / src/shogun/mathematics/linalgrefactor/ (10 files): https://github.com/shogun-toolbox/shogun/commit/18540fbf59eb942acdfef5d6c22ad318f1e8e3da | 13:08 |
shogun-notifier- | shogun: float32 | 13:08 |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * 177f5ea / / (20 files): https://github.com/shogun-toolbox/shogun/commit/177f5ea47890fe9a3211da6dd326bed86f427815 | 13:08 |
shogun-notifier- | shogun: fix style | 13:08 |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * b73728f / src/shogun/mathematics/linalgrefactor/GPUBackend.cpp: https://github.com/shogun-toolbox/shogun/commit/b73728ffe91bccb779a0aca47d3ee0728728f111 | 13:08 |
shogun-notifier- | shogun: update | 13:08 |
-!- sanuj [~sanuj@117.204.252.181] has quit [Ping timeout: 260 seconds] | 13:10 | |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * 72aa846 / benchmarks/linalg_refactor_benchmark.cpp: https://github.com/shogun-toolbox/shogun/commit/72aa846f496b6ef088af75d1df33c671677741a5 | 13:24 |
shogun-notifier- | shogun: benchmark update | 13:24 |
shogun-notifier- | shogun: OXPHOS :feature/linalg_refactor * 1272d6e / benchmarks/linalg_benchmark.cpp,benchmarks/linalg_refactor_benchmark.cpp: https://github.com/shogun-toolbox/shogun/commit/1272d6ebf9731ade5fd781ddf5aef92bf54a71d5 | 13:24 |
shogun-notifier- | shogun: update | 13:24 |
shogun-notifier- | shogun: Soumyajit De :feature/linalg_refactor * 254a83f / benchmarks/linalg_benchmark.cpp,benchmarks/linalg_refactor_benchmark.cpp: https://github.com/shogun-toolbox/shogun/commit/254a83f05b332bf2998b18b73d8b02e4a147fa5a | 13:24 |
shogun-notifier- | shogun: Merge pull request #3252 from OXPHOS/linalg_benchmark | 13:24 |
shogun-notifier- | shogun: | 13:24 |
shogun-notifier- | shogun: linalg benchmark update | 13:24 |
-!- travis-ci [~travis-ci@ec2-54-205-13-204.compute-1.amazonaws.com] has joined #shogun | 13:57 | |
travis-ci | it's Soumyajit De'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/136399052 | 13:57 |
-!- travis-ci [~travis-ci@ec2-54-205-13-204.compute-1.amazonaws.com] has left #shogun [] | 13:57 | |
arianepaola | hello everyone | 14:32 |
-!- travis-ci [~travis-ci@ec2-54-205-13-204.compute-1.amazonaws.com] has joined #shogun | 14:38 | |
travis-ci | it's Soumyajit De'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/136402223 | 14:38 |
-!- travis-ci [~travis-ci@ec2-54-205-13-204.compute-1.amazonaws.com] has left #shogun [] | 14:38 | |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 14:39 | |
-!- mode/#shogun [+o besser82] by ChanServ | 14:39 | |
arianepaola | wiking: ping | 14:41 |
@wiking | pong | 14:42 |
arianepaola | wiking: it looks like setuptools is very bad at handling anything that is not Python related, especially binary packages | 14:44 |
arianepaola | so some very strange things | 14:44 |
arianepaola | I get to build rpm source packages of the tree, independent of what I specify as source package, when running sdist | 14:44 |
arianepaola | when I use a manifest, it is ignored by setuptools | 14:45 |
arianepaola | when I switch back to use distutils, it uses the MANIFEST.in only for sources that are under version control | 14:45 |
arianepaola | so basically everything in the output is ignored | 14:46 |
arianepaola | I tried package_data vs data_files on both distutils and setuptools | 14:46 |
arianepaola | tried auto generated and filling the package_data or data_files dict with path + file combinations from build/install output of shogun | 14:46 |
@wiking | mmm you are trying to add the .so-s as additional fixtures? | 14:48 |
arianepaola | btw, it also makes a difference if you use include_package_data=True, causing either one of distutils or setuptools to break | 14:48 |
arianepaola | it doesn't add anything in the dist | 14:49 |
arianepaola | :-( | 14:49 |
arianepaola | HeikoS: I saw your message | 14:53 |
-!- besser82 [~besser82@fedora/besser82] has quit [Ping timeout: 260 seconds] | 15:02 | |
-!- Saurabh7 [Saurabh7@gateway/shell/panicbnc/x-aizjrbmwcdgxpctw] has quit [Ping timeout: 264 seconds] | 15:12 | |
-!- sanuj [~sanuj@117.204.249.60] has joined #shogun | 15:21 | |
-!- lambday [8028b10a@gateway/web/freenode/ip.128.40.177.10] has quit [] | 15:25 | |
arianepaola | wiking: any idea? | 16:07 |
@wiking | arianepaola: i'll get back asap | 16:10 |
@wiking | just need some time to finish up my own personal stuff | 16:10 |
arianepaola | ok, sure | 16:10 |
arianepaola | no problem | 16:10 |
arianepaola | In the meanwhile, I got apparently libshogun.so included using glob.glob | 16:10 |
arianepaola | seems that somehow auto generated it got added | 16:11 |
-!- OXPHOS [9d8b1501@gateway/web/freenode/ip.157.139.21.1] has joined #shogun | 16:17 | |
-!- shogun-notifier- [~irker@7nn.de] has quit [Quit: transmission timeout] | 16:24 | |
-!- mizari [~mizari@95-174-213-100.nts.su] has joined #shogun | 16:25 | |
arianepaola | hi OXPHOS | 16:36 |
-!- lupinix [~quassel@fedora/lupinix] has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.] | 16:47 | |
-!- lupinix [~quassel@v22014041761818086.yourvserver.net] has joined #shogun | 16:47 | |
-!- lupinix [~quassel@v22014041761818086.yourvserver.net] has quit [Changing host] | 16:47 | |
-!- lupinix [~quassel@fedora/lupinix] has joined #shogun | 16:47 | |
sanuj | neural net notebooks take forever to run | 17:29 |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has joined #shogun | 17:37 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 17:37 | |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has quit [Client Quit] | 17:37 | |
arianepaola | wiking: when you have time, check this gist https://gist.github.com/anonymous/c3dfeb456656dd3b468fd7bc91b02058 | 18:15 |
arianepaola | wiking: the setup.py in the PR overloads functionality from distutils to bootstrap the cmake configuration process and the compilation | 18:17 |
arianepaola | wiking: the gist just deals with the Python related content in lib. you can test it building shogun manually and then in the build dir: python setup.py bdist | 18:18 |
arianepaola | ^^ HeikoS: if you want to check also | 18:18 |
-!- mizari [~mizari@95-174-213-100.nts.su] has quit [Ping timeout: 246 seconds] | 19:08 | |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 19:09 | |
-!- mode/#shogun [+o besser82] by ChanServ | 19:09 | |
sanuj | hey lisitsyn | 19:20 |
lisitsyn | рун | 19:20 |
lisitsyn | hey | 19:20 |
sanuj | lisitsyn, so i think i should start with swig for tags | 19:20 |
lisitsyn | sanuj: alright | 19:24 |
lisitsyn | agree | 19:24 |
sanuj | lisitsyn, i don't know where to start | 19:25 |
-!- besser82 [~besser82@fedora/besser82] has quit [Ping timeout: 272 seconds] | 19:25 | |
sanuj | like in what files shall i make changes? | 19:26 |
sanuj | in src/interfaces? | 19:26 |
lisitsyn | yes | 19:26 |
sanuj | lisitsyn, there is modular | 19:27 |
sanuj | and there are python_modular, r_modular and .... | 19:27 |
sanuj | lisitsyn, which ones to touch? | 19:28 |
lisitsyn | sanuj: src/interfaces/modular | 19:29 |
sanuj | lisitsyn, sgbase.i? | 19:29 |
lisitsyn | sanuj: modshogun.i is the entry point | 19:31 |
lisitsyn | it includes other ones | 19:31 |
sanuj | lisitsyn, okay | 19:32 |
sanuj | i'll do this tomorrow | 19:32 |
sanuj | going to sleep now | 19:32 |
lisitsyn | sanuj: I think SGBase.i is the way to go | 19:32 |
lisitsyn | ok | 19:32 |
sanuj | okay | 19:32 |
lisitsyn | you just need to add some renames | 19:32 |
lisitsyn | like IntTag | 19:32 |
lisitsyn | IntType | 19:32 |
sanuj | okay, then it should be easy | 19:32 |
lisitsyn | and check if it works in python | 19:32 |
sanuj | lisitsyn, then shall i write meta examples for tags | 19:32 |
sanuj | for integration testing or something | 19:33 |
lisitsyn | I think we don't have to use meta now | 19:33 |
lisitsyn | not sure | 19:33 |
lisitsyn | ok let me think | 19:33 |
sanuj | okay | 19:33 |
lisitsyn | lets discuss that tomorrow | 19:33 |
sanuj | lisitsyn, okay, i'll try to make this work with python | 19:33 |
arianepaola | lisitsyn: hi, I have a question regarding src/shogun/lib/versionstring.h | 19:34 |
sanuj | lisitsyn, what time will you be ready to discuss tomorrow? | 19:34 |
arianepaola | lisitsyn: is there a way to check if we are using git source? e.g. will the version change for a Release version? | 19:35 |
arianepaola | I want only to append the info from #define VERSION_REVISION 0x83970a7 when it is a development version | 19:36 |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 19:37 | |
-!- mode/#shogun [+o besser82] by ChanServ | 19:37 | |
-!- sanuj [~sanuj@117.204.249.60] has quit [Quit: Leaving] | 19:40 | |
lisitsyn | sanuj: mostly any but ping me | 19:40 |
lisitsyn | arianepaola: let me check | 19:40 |
arianepaola | thanks lisitsyn | 19:40 |
-!- besser82 [~besser82@fedora/besser82] has quit [Remote host closed the connection] | 20:02 | |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 20:03 | |
-!- mode/#shogun [+o besser82] by ChanServ | 20:03 | |
-!- besser82 [~besser82@fedora/besser82] has quit [Remote host closed the connection] | 20:04 | |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 20:05 | |
-!- mode/#shogun [+o besser82] by ChanServ | 20:05 | |
-!- besser82 [~besser82@fedora/besser82] has quit [Ping timeout: 260 seconds] | 20:24 | |
-!- Saurabh7 [Saurabh7@gateway/shell/panicbnc/x-nhgboshmvjngqjid] has joined #shogun | 21:22 | |
arianepaola | bye everyone, see you all tomorrow :-) | 22:07 |
-!- lambday [6d9941c0@gateway/web/freenode/ip.109.153.65.192] has joined #shogun | 22:11 | |
-!- mode/#shogun [+o lambday] by ChanServ | 22:11 | |
@lambday | OXPHOS: yo | 23:36 |
@lambday | OXPHOS: how's it going? | 23:36 |
OXPHOS | lambday: hey! | 23:37 |
@lambday | OXPHOS: just going through your patch | 23:37 |
@lambday | OXPHOS: so this is supposed to be the factory method that we discussed about :) | 23:38 |
OXPHOS | lambday: thanks! yes. | 23:38 |
@lambday | OXPHOS: alright.. let me comment on the patch | 23:38 |
@lambday | looking nice already :) | 23:38 |
OXPHOS | lambday: thx :) should be making progress | 23:39 |
@lambday | OXPHOS: yeah.. don't worry.. the initial bit is the toughest.. once you get the momentum then it's all smooth ride :) | 23:39 |
OXPHOS | lambday: i'm still wondering, for some template methods without #ifdef, like CPUBackend.dot(), why don't we put the implementation in .h? | 23:40 |
OXPHOS | seems it's gonna be faster like that | 23:40 |
@lambday | OXPHOS: well, when used in actual shogun algorithm, it won't make much difference | 23:43 |
@lambday | OXPHOS: if you wonder about this, check the other benchmark that I made : https://github.com/lambday/derby/tree/master/benchmarks/headervsimpl | 23:44 |
OXPHOS | lambday: but is there any harm to put the stuff in .h? | 23:44 |
@lambday | OXPHOS: well, imagine you have a client.. and he built some code that relies on the shogun.. how if shogun devs later decides to use another cool linalg library instead of eigen, then all his code will fail if the headers are changed.. | 23:46 |
@lambday | but if that is in the cpp, then he doesn't have that problem.. he just updates his libshogun.so and he's good to go.. | 23:47 |
@lambday | that's the reason things better be in the cpp | 23:47 |
OXPHOS | lambday: cool..I got it. thanks for the explain. | 23:48 |
@lambday | and that's the main motivation behind using pimpl pattern as well | 23:48 |
@lambday | ideally, even the cpubackend should be implemented as pimpl | 23:48 |
@lambday | but let's not worry about that now | 23:48 |
OXPHOS | lambday: right right. yes it won't be hard to refactor | 23:48 |
OXPHOS | lambday: I made up that GPU_CALC stuff and now I feel like I can just use HAVE_VIENNACL | 23:49 |
@lambday | OXPHOS: actually what I think would be best is this : get_gpu_type() would return a GPU type if a GPU backend is registered.. (just like you did there), but if it's not, it should return a cpu type instead.. | 23:49 |
@lambday | with a friendly SG_SINFO | 23:50 |
@lambday | :) | 23:50 |
@lambday | so the computation will go on.. nothing fails | 23:50 |
@lambday | but the users get a message about that | 23:50 |
@lambday | so maybe no GPU_CALC is required | 23:51 |
OXPHOS | lambday: u don't want to slap the users ? ;) | 23:51 |
@lambday | OXPHOS: nope.. it's shogun's internal code.. the user don't care what we use inside.. as long as things work! | 23:52 |
@lambday | the shogun-devs will use sg_linalg->get_gpu_type() as a more of an abstract design principle | 23:52 |
@lambday | for algorithms that are gpu friendly | 23:53 |
@lambday | but it still should be doable on cpu if the poor user doesn't have a gpu thingi on his machine | 23:53 |
@lambday | OXPHOS: well, I messed up something in the description of the problem of having everything in the header.. | 23:55 |
@lambday | OXPHOS: what would happen is, the user would have to recompile his application.. | 23:55 |
@lambday | if headers are changed | 23:55 |
@lambday | (which may or may not lead to failure) | 23:56 |
OXPHOS | lambday: and it would save time for devs if only implemetation is .cpp is change? | 23:56 |
OXPHOS | d | 23:56 |
@lambday | OXPHOS: well, for the user, yes | 23:57 |
OXPHOS | kk | 23:57 |
@lambday | imagine he built something on top of shogun and he sold his product to another customer | 23:57 |
@lambday | now that customer updates shogun lib from repo and bam! nothing works anymore :D | 23:57 |
OXPHOS | haha | 23:57 |
OXPHOS | I'm thinking if Shogun enabled calculation with GPULibrary 1 and GPULibrary 2. We'll have (GPULIB1_FOUND AND ENABLE_GPULIB1) to define HAVE_GPULIB1 | 23:59 |
--- Log closed Fri Jun 10 00:00:03 2016 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!