--- Log opened Fri Apr 01 00:00:54 2016 | ||
-!- travis-ci [~travis-ci@ec2-54-92-147-78.compute-1.amazonaws.com] has joined #shogun | 00:17 | |
travis-ci | it's lambday'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/119931844 | 00:17 |
---|---|---|
-!- travis-ci [~travis-ci@ec2-54-92-147-78.compute-1.amazonaws.com] has left #shogun [] | 00:17 | |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 00:32 | |
-!- mode/#shogun [+o besser82] by ChanServ | 00:32 | |
arianepaola | besser82: ping | 00:58 |
@besser82 | arianepaola, yes? | 00:58 |
arianepaola | hi besser82, regarding the scripts for buildbot | 01:00 |
arianepaola | Ariane: besser82, as wiking said it would be great to have a look at the build scripts for fedora, so that we can build shogun for fedora 23 | 01:00 |
arianepaola | Ariane: besser82, on fedora 24 do you already compile shogun using gcc 6? | 01:00 |
@besser82 | arianepaola, which build-scripts do you mean exactly? | 01:11 |
@besser82 | arianepaola, yes, on fc24 gcc6 is default | 01:11 |
arianepaola | besser82: I would like to work on creating nightly binary packages for Fedora | 01:12 |
arianepaola | besser82: as buildbot is already setup for shogun, I was looking for the configuration, e.g. setting up factory builder or other buildbot scripts to get the source code and compile | 01:13 |
@besser82 | arianepaola, ahh… I see… | 01:13 |
arianepaola | besser82: I would like to integrate the work mentioned in #3131 into the current setup | 01:13 |
@besser82 | arianepaola, so you virtually just need to do some modification on my recent fedora-rpm… | 01:14 |
arianepaola | besser82: that sounds good. I just could not find shogun buildbot code anywhere. | 01:15 |
@besser82 | arianepaola, http://pkgs.fedoraproject.org/cgit/rpms/shogun.git/tree/ | 01:15 |
@besser82 | arianepaola, so we just need some CMake-magic to generate some special versioning into the spec-file and build a src.rpm from that… | 01:17 |
-!- lambday [6a3384a4@gateway/web/freenode/ip.106.51.132.164] has quit [Ping timeout: 250 seconds] | 01:17 | |
@besser82 | arianepaola, the builds itself can go on copr then… https://copr.fedorainfracloud.org/ | 01:17 |
@besser82 | arianepaola, copr will do the real build against the selected Fedora-releases and provide repos for them | 01:18 |
arianepaola | besser82: sounds good | 01:18 |
@besser82 | arianepaola, if you have any further questions feel free to ping me… will be off in about 15 mins… It's about 1:15 am in Germany… | 01:19 |
@besser82 | arianepaola, will setup a buildtree/namespace on copr for shogun tomorrow morning | 01:20 |
arianepaola | besser82: thank you for your help | 01:21 |
@besser82 | arianepaola, you're welcome ^^ | 01:21 |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has joined #shogun | 01:30 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 01:30 | |
-!- besser82 [~besser82@fedora/besser82] has quit [Ping timeout: 250 seconds] | 01:38 | |
-!- HeikoS [~heiko@host-92-0-162-192.as43234.net] has quit [Quit: Leaving.] | 01:40 | |
-!- curiousguy13 [~curiousgu@120.56.225.247] has quit [Ping timeout: 248 seconds] | 04:08 | |
shogun-buildbot | build #1112 of nightly_default is complete: Failure [failed notebooks] Build details are at http://buildbot.shogun-toolbox.org/builders/nightly_default/builds/1112 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Wu Lin <yorker.lin@gmail.com> | 04:10 |
-!- Izaya [~Eejya@103.225.100.51] has joined #shogun | 08:57 | |
Izaya | wiking, Hi. Could you point out how to begin with https://github.com/shogun-toolbox/shogun/issues/3132 ? | 09:20 |
-!- besser82 [~besser82@fedora/besser82] has joined #shogun | 10:12 | |
-!- mode/#shogun [+o besser82] by ChanServ | 10:12 | |
@wiking | Izaya: are you familiar with setuptools of python? | 10:23 |
Izaya | I'm not familiar with them. I've been reading up about it. | 10:27 |
@wiking | because essientially you need to create a setup.py | 10:34 |
@wiking | that'll call cmake | 10:34 |
@wiking | + make | 10:34 |
Izaya | I see. | 10:35 |
@wiking | lemme try to find an example | 10:36 |
Izaya | That'd be great. I've written a very basic setup.py for now http://pastebin.com/FB5g220y | 10:37 |
@wiking | good start | 10:37 |
@wiking | Izaya: i've just found this blog article | 10:38 |
@wiking | i reckon this is something that we would like https://bloerg.net/2012/11/10/cmake-and-distutils.html | 10:38 |
Izaya | I see. I'll read up and try working on it :) | 10:39 |
@wiking | although i'm not 100% :) | 10:39 |
@wiking | mmm | 10:40 |
Izaya | I was trying to figure out how cmake and make would be called using setup.py but I haven't had much luck. | 10:40 |
@wiking | noup | 10:40 |
@wiking | this is not really it | 10:40 |
@wiking | yeah | 10:40 |
@wiking | i mean that setuptools is a piece of shit | 10:41 |
@wiking | of course | 10:41 |
@wiking | :) | 10:41 |
Izaya | :) | 10:41 |
@wiking | it has options to compile c files | 10:41 |
@wiking | but on the other hand | 10:41 |
@wiking | we need to configure first the lib | 10:41 |
@wiking | lemme try to grep some more | 10:41 |
@wiking | https://github.com/scikit-build/scikit-build | 10:42 |
@wiking | this is something 'getting' there | 10:42 |
@wiking | yep yep | 10:42 |
@wiking | this is goodie | 10:43 |
@wiking | using this | 10:43 |
@wiking | you can create a setup.py | 10:43 |
@wiking | ;) | 10:43 |
@wiking | have fun | 10:43 |
Izaya | Oh. Thank you :) | 10:43 |
@besser82 | wiking, setup.py for what? I'm puzzled a bit… | 10:43 |
@wiking | besser82: pypi | 10:44 |
@wiking | so that you can do pip install shogun | 10:44 |
@wiking | besser82: btw now that you are definitely here | 10:44 |
@besser82 | ahh… I see… | 10:44 |
@wiking | how should we do the nightlies? | 10:44 |
@besser82 | yes? | 10:44 |
@besser82 | Ahh… | 10:44 |
@besser82 | I'd suggest using a generated rpm and OBS | 10:44 |
@wiking | because if we could have nightlies | 10:44 |
@besser82 | And for Fedora COPR | 10:45 |
@wiking | then we could have docker nightlies | 10:45 |
@wiking | that has latest shogun binaries | 10:45 |
@wiking | now the question is should we generate it? | 10:45 |
@wiking | or is there something like ppa | 10:45 |
@wiking | ? | 10:45 |
@besser82 | COPR is PPA in Fedora world… | 10:46 |
@besser82 | I gave arianepaola the rpm-spec, I'm using for Feodra | 10:46 |
@wiking | oh cool | 10:46 |
@wiking | arianepaola: are you on this now? :) | 10:46 |
@besser82 | So it just needs some maigic in CMake to generate Version and Release tags into it | 10:46 |
@wiking | ah | 10:46 |
@wiking | config branch? | 10:46 |
@wiking | i have started something in config branch | 10:47 |
@besser82 | no idea, where she does | 10:47 |
@wiking | nono what i mean i started something already | 10:47 |
@wiking | in config granch regarding this | 10:47 |
@wiking | but cool | 10:47 |
@wiking | i think she is on it then | 10:47 |
arianepaola | wiking: finishing the Python package | 10:47 |
@besser82 | Ahh… I see… Let me have look in a few minutes | 10:47 |
@wiking | besser82: kk | 10:47 |
@besser82 | So we can get that started ^^ | 10:47 |
@wiking | besser82: cool | 10:47 |
@wiking | thnx | 10:47 |
@wiking | heaps | 10:47 |
arianepaola | setup buildbot, everything working so far, found a few bugs | 10:48 |
@wiking | for? | 10:48 |
@wiking | btw we have our infra stuff | 10:48 |
@wiking | for buildbot | 10:48 |
@wiking | the problem is that i have a lot of passwords | 10:48 |
@wiking | hardcoded into it | 10:48 |
@wiking | :) | 10:48 |
@wiking | that's why it's a private repo | 10:48 |
@wiking | :DDDDD | 10:48 |
arianepaola | got also cmake in buildbot working, so the next thing is to clone besser82 rpm package on top of the source and build it | 10:48 |
@wiking | arianepaola: cool | 10:48 |
@wiking | arianepaola: for those cmake hacks | 10:49 |
arianepaola | wiking: I understand, but had to get it working with buildbot | 10:49 |
arianepaola | otherwise too much manual work | 10:49 |
@wiking | check out the 'config' branch | 10:49 |
@wiking | might help you | 10:49 |
arianepaola | ok thanks | 10:49 |
@wiking | woah | 10:50 |
@wiking | this is cooool | 10:50 |
@wiking | https://www.nuand.com/blog/product/bladerf-x40/ | 10:50 |
@wiking | "bladeRF can be configured to operate as a custom RF modem, a GSM and LTE picocell, a GPS receiver, an ATSC transmitter, or a combination Bluetooth/WiFi client, without the need for any expansion cards" | 10:50 |
@wiking | niiice | 10:50 |
@wiking | (wants!( | 10:50 |
-!- HeikoS [~heiko@217.138.5.14] has joined #shogun | 11:10 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 11:10 | |
-!- Izaya [~Eejya@103.225.100.51] has quit [Ping timeout: 240 seconds] | 11:13 | |
shogun-buildbot | build #2832 of bsd1 - libshogun is complete: Failure [failed configure] Build details are at http://buildbot.shogun-toolbox.org/builders/bsd1%20-%20libshogun/builds/2832 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com> | 11:38 |
shogun-buildbot | build #1194 of FCRH - libshogun is complete: Failure [failed compile] Build details are at http://buildbot.shogun-toolbox.org/builders/FCRH%20-%20libshogun/builds/1194 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com> | 11:39 |
@wiking | HeikoS: are you like PR trigger happy? :D | 11:40 |
@HeikoS | wiking: PR trigger? :) | 11:41 |
@wiking | https://www.youtube.com/watch?v=6S71bzLtf98 | 11:41 |
@wiking | that's for you today | 11:41 |
shogun-buildbot | build #182 of FC22 - libshogun is complete: Failure [failed test] Build details are at http://buildbot.shogun-toolbox.org/builders/FC22%20-%20libshogun/builds/182 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com> | 11:42 |
@HeikoS | haha | 11:42 |
@wiking | soon a black mark :) | 11:42 |
@HeikoS | wiking: i think the eigen thing is fine | 11:45 |
@HeikoS | not temp | 11:45 |
@HeikoS | just waiting for 3.3 to become stable | 11:45 |
@wiking | i'll fix it | 11:45 |
@wiking | like now | 11:45 |
@wiking | ok? | 11:45 |
@wiking | :) | 11:45 |
@HeikoS | sure | 11:45 |
@wiking | leave that | 11:45 |
@wiking | forget that | 11:45 |
@wiking | (jedi movement) | 11:45 |
@HeikoS | but if there are macros, I prefer to exclude ;) | 11:45 |
@wiking | :P | 11:45 |
@HeikoS | will do | 11:45 |
@HeikoS | haha | 11:45 |
@wiking | has to be done with macros | 11:45 |
@wiking | even though it's shitty in your eyes | 11:45 |
@wiking | i think macros are one of the best things in c | 11:46 |
@HeikoS | wiking: but only at one place please | 11:46 |
@wiking | think about other languages | 11:46 |
@HeikoS | not everywhere in code | 11:46 |
@wiking | there's not such thing | 11:46 |
@wiking | it's so fucking limiting | 11:46 |
@wiking | :))) | 11:46 |
@HeikoS | sure I agree, but please not duplicate code everywhere only to repsect API. Rather provide a wrapper .... | 11:46 |
@HeikoS | btw thats why we need linalg | 11:46 |
@wiking | yeah yeah | 11:46 |
@wiking | gottcha | 11:46 |
@wiking | linalg FTW | 11:46 |
@HeikoS | then all the macro stuff is in there and alg devs never have to bother with this library shit | 11:47 |
@HeikoS | wiking: btw I talked to lambday about the discussion we had for the linalg | 11:49 |
@HeikoS | wiking: think we found a nice way to avoid static backends, and at the same time not suffer from the virtual call speed | 11:50 |
@HeikoS | so all good | 11:50 |
@HeikoS | can switch at runtime, no additional build | 11:50 |
@wiking | virtual call speed? | 11:50 |
@HeikoS | but all linalg methods are static | 11:50 |
@HeikoS | wiking: dont know how to call that | 11:50 |
@HeikoS | but we benchmarked this a while ago | 11:50 |
@wiking | what exactly? | 11:50 |
@HeikoS | vitual linalg methods for say computing dot product | 11:51 |
@HeikoS | and subclasses overload with the specific library backend | 11:51 |
@HeikoS | that was slow | 11:51 |
@HeikoS | slowER than statically linking the backend and not having virtual calls for the dot product | 11:51 |
@wiking | okok | 11:51 |
@HeikoS | but now | 11:51 |
@HeikoS | with this factory idea | 11:51 |
@wiking | lets step back a bit | 11:51 |
@wiking | you are saying | 11:52 |
@wiking | that | 11:52 |
@HeikoS | just the factory call is virtual | 11:52 |
@wiking | virtual functions | 11:52 |
@HeikoS | and the dot product is static | 11:52 |
@wiking | are were making significantly slower runtimes? | 11:52 |
@wiking | because basically you are saying | 11:52 |
@wiking | that c++ = python | 11:52 |
@wiking | :DDD | 11:52 |
@HeikoS | haha :D | 11:52 |
@HeikoS | yes that what I am saying | 11:52 |
@wiking | i mean i would really like to see that benchmark | 11:52 |
@HeikoS | I think we should also get rid of all the static types | 11:52 |
@HeikoS | in shogun in general | 11:52 |
@wiking | what static types? | 11:52 |
@wiking | i mena are you shitting me | 11:53 |
@HeikoS | thought we could maybe just have a swig wrapper to use the python dynamic typing magic in shoguns core | 11:53 |
@HeikoS | :D :D :D | 11:53 |
@HeikoS | got ya | 11:53 |
@wiking | is this april 1? | 11:53 |
@wiking | :DDDDDD | 11:53 |
@HeikoS | lambday will dig out the benchmark | 11:53 |
@HeikoS | and I will help him prototype the new thing | 11:54 |
@HeikoS | and then we can discuss | 11:54 |
@wiking | wait wait | 11:54 |
@wiking | before you really submerge into this | 11:54 |
@wiking | please | 11:54 |
@HeikoS | I think it is good to get rid of the additional builds for each lib, you are right with that | 11:54 |
@wiking | let's make the benchmark proper | 11:54 |
@wiking | because fuck | 11:54 |
@wiking | that's a vtable lookup | 11:54 |
@wiking | it's VERY VERY fast | 11:54 |
@HeikoS | wiking: yes, we were surprised as well | 11:54 |
@wiking | that should be measured in nanoseconds | 11:55 |
@wiking | or less | 11:55 |
@wiking | so there is soemthing else wrong | 11:55 |
@HeikoS | Ill dig it out | 11:55 |
@wiking | thnx | 11:55 |
@HeikoS | we were really surprised ourselves | 11:55 |
@wiking | i wouldn't not put too much effort into anything else | 11:55 |
@HeikoS | I remember saying the same thing as you now | 11:55 |
@wiking | before really measuring that | 11:55 |
@HeikoS | sure | 11:55 |
@HeikoS | but hey | 11:55 |
@wiking | say perf | 11:55 |
@wiking | etc. | 11:55 |
@wiking | because there's something else | 11:55 |
@HeikoS | we solved it anyways, we dont want to go static | 11:55 |
@HeikoS | no need | 11:55 |
@HeikoS | thats the nice thing about the new idea | 11:55 |
@HeikoS | with the factory, the method can be vritual | 11:56 |
@HeikoS | but it is only called once anyways | 11:56 |
@HeikoS | and then you get a typed structure | 11:56 |
@HeikoS | and the type automatically chooses a static method | 11:56 |
@HeikoS | but yeah benchmark | 11:56 |
@HeikoS | I agree | 11:56 |
@HeikoS | will show | 11:56 |
@HeikoS | once I found it ;) | 11:56 |
@HeikoS | and once april1 is over | 11:56 |
@wiking | heheh | 11:57 |
@wiking | but man | 11:57 |
@wiking | you are saying | 11:57 |
@HeikoS | yeah I know | 11:58 |
@HeikoS | so let's look at benchmark | 11:58 |
@HeikoS | (even though it doesnt matter anymore, the decision doesnt need to be taken) | 11:58 |
@HeikoS | more important to get rid of the statically linked library build | 11:58 |
@wiking | i mean look | 11:59 |
@wiking | look at our whole thing | 11:59 |
@wiking | CMachine -> CKernelMachine | 11:59 |
@wiking | then CKernel -> CDotKernel | 11:59 |
@wiking | if you are saying that all virtual functions has a significant timeout | 11:59 |
@wiking | we can start throwing out *everything* | 11:59 |
@wiking | that benchmark | 12:00 |
@wiking | has to be fucked up somewhere | 12:00 |
@wiking | :) | 12:00 |
-!- travis-ci [~travis-ci@ec2-54-92-147-78.compute-1.amazonaws.com] has joined #shogun | 12:00 | |
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/120026918 | 12:00 |
-!- travis-ci [~travis-ci@ec2-54-92-147-78.compute-1.amazonaws.com] has left #shogun [] | 12:00 | |
@HeikoS | we isolated | 12:00 |
@HeikoS | it was just the linalg calls, no shogun underneath | 12:01 |
@HeikoS | but yeah, the kernel functions are there as well | 12:01 |
@HeikoS | and all the rest | 12:01 |
@HeikoS | all virtual | 12:01 |
@wiking | yeah | 12:02 |
@wiking | so fuck | 12:02 |
@wiking | I CALL BULLSHIT | 12:02 |
@wiking | so please | 12:03 |
@wiking | send me that benchmark | 12:03 |
@HeikoS | CAPITAL LETTERS | 12:05 |
-!- travis-ci [~travis-ci@ec2-54-92-147-78.compute-1.amazonaws.com] has joined #shogun | 12:07 | |
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/120024469 | 12:08 |
-!- travis-ci [~travis-ci@ec2-54-92-147-78.compute-1.amazonaws.com] has left #shogun [] | 12:08 | |
-!- curiousguy13 [~curiousgu@120.59.105.249] has joined #shogun | 12:20 | |
-!- curiousguy13 [~curiousgu@120.59.105.249] has quit [Ping timeout: 244 seconds] | 12:25 | |
@HeikoS | wiking: just chatted more to lambday | 12:30 |
@HeikoS | wiking: "if we can avoid virtual calls, why not do that?" | 12:31 |
@HeikoS | wiking: so there is not really a need for digging into the benchmark code, as it is not a decision to take really | 12:31 |
@HeikoS | only with the old design, which has to be improved anyways | 12:31 |
@HeikoS | and I actually agree that embedded into shogun, it doesnt make a difference | 12:32 |
@HeikoS | benchmark code is not done properly, so I think we canont infer anything from the results | 12:32 |
@HeikoS | I think there might be other things going on as well, caching etc, so not a clean investigation | 12:33 |
-!- curiousguy13 [~curiousgu@120.59.103.227] has joined #shogun | 12:39 | |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has joined #shogun | 12:44 | |
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/120028898 | 12:44 |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has left #shogun [] | 12:44 | |
-!- HeikoS [~heiko@217.138.5.14] has quit [Remote host closed the connection] | 12:46 | |
-!- HeikoS [~heiko@217.138.5.14] has joined #shogun | 12:47 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 12:47 | |
-!- HeikoS [~heiko@217.138.5.14] has quit [Quit: Leaving.] | 12:54 | |
-!- curiousguy13 [~curiousgu@120.59.103.227] has quit [Ping timeout: 244 seconds] | 13:59 | |
-!- curiousguy13 [~curiousgu@59.177.198.104] has joined #shogun | 14:11 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun | 15:29 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:29 | |
shogun-buildbot | build #634 of debian wheezy - memcheck is complete: Failure [failed memory check] Build details are at http://buildbot.shogun-toolbox.org/builders/debian%20wheezy%20-%20memcheck/builds/634 blamelist: Heiko Strathmann <heiko.strathmann@gmail.com>, Ariane Paola Gomes <arianepaola@users.noreply.github.com> | 15:33 |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has joined #shogun | 15:43 | |
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/120069300 | 15:43 |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has left #shogun [] | 15:43 | |
-!- curiousguy13 [~curiousgu@59.177.198.104] has quit [Ping timeout: 260 seconds] | 15:46 | |
-!- curiousguy13 [~curiousgu@120.59.229.225] has joined #shogun | 15:59 | |
curiousguy13 | HeikoS, ping | 16:15 |
@HeikoS | curiousguy13: hi | 16:15 |
curiousguy13 | hey, i wanted to discuss my PR #3101 and the implementation of LLT linear solvers in linalg | 16:16 |
curiousguy13 | this PR : https://github.com/shogun-toolbox/shogun/pull/3101 | 16:16 |
curiousguy13 | HeikoS, so, as I understand the idea is to implement a basic linear solver, cholesky_solve , svd_solve etc all as part of linalg | 16:18 |
@HeikoS | curiousguy13: yes, not implement, but add the interface | 16:18 |
@HeikoS | curiousguy13: just in a call, will get back to you | 16:18 |
curiousguy13 | HeikoS, yeah sure, no problem | 16:18 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has joined #shogun | 16:39 | |
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/120070051 | 16:39 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has left #shogun [] | 16:39 | |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has joined #shogun | 16:50 | |
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/120075922 | 16:50 |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has left #shogun [] | 16:50 | |
-!- sanuj [0e8bc402@gateway/web/freenode/ip.14.139.196.2] has joined #shogun | 16:55 | |
sanuj | lisitsyn: there? | 16:56 |
sanuj | HeikoS: there? | 16:56 |
sanuj | besser82: there? | 16:57 |
@besser82 | sanuj, A'ight! | 16:57 |
sanuj | besser82: hi :) | 16:57 |
sanuj | i had some doubts regarding implementing typesafe tags | 16:57 |
sanuj | besser82: in context to https://github.com/shogun-toolbox/shogun/wiki/New-parameters-framework-and-plugins | 16:58 |
sanuj | besser82: have time to talk about it? | 16:58 |
@besser82 | sanuj, yes, I do ^^ | 17:00 |
sanuj | :D | 17:00 |
sanuj | besser82: what's the point of 'name' field in Tag class? | 17:00 |
@HeikoS | wiking: https://www.google.com/url?q=https%3A%2F%2Fgist.github.com%2Flambday%2Fd31506225ce78759e1b5e5945f770bc8&sa=D&sntz=1&usg=AFQjCNHi_28zIVQOjysyE_qo8RuEu_bRsw | 17:01 |
@besser82 | sanuj, you're talking about this --> Tag(string name) : name_(name) ? | 17:01 |
sanuj | besser82: yeah | 17:01 |
@besser82 | sanuj, that's actually the name of the parameter this Tag represents | 17:03 |
sanuj | besser82: yes, but what's the use-case ? | 17:03 |
@besser82 | sanuj, the use-case is for naming the paramters and users can set them by their name | 17:07 |
@besser82 | like we have a Tag<float> fancy("fancy") | 17:08 |
@besser82 | and the user can then do sth like CFancyThing.set("fancy", 3.14) | 17:09 |
sanuj | besser82: if you look at this example from the wiki page | 17:10 |
sanuj | SGObject object; Tag<int> intParameter; object.set(intParameter, 3); | 17:10 |
sanuj | besser82: name is not used here | 17:10 |
sanuj | besser82: is it for string based parameters in high level languages like python | 17:11 |
sanuj | like | 17:11 |
sanuj | kernel = shogun.GaussianKernel() | 17:12 |
sanuj | kernel.set("width", 1.0) | 17:12 |
@besser82 | sanuj, yes, and there the name-member of the Tag comes into play, afaik | 17:13 |
sanuj | besser82: okay, one more question | 17:14 |
sanuj | i have the Tag class (similar to one in the wiki page) | 17:14 |
sanuj | now i want to implement a setter in SGObject | 17:15 |
sanuj | like | 17:15 |
sanuj | template <typename T> void set(Tag<T> tag, T value) | 17:15 |
sanuj | value should be saved in a private member variable of SGObject | 17:15 |
sanuj | but T can be anything and it depends on the tag | 17:16 |
sanuj | besser82: so how to go about implementing it | 17:16 |
lisitsyn | map<Tag, Any> | 17:17 |
@besser82 | sanuj, then it should be a member of the Tag-class, I think… | 17:17 |
@besser82 | lisitsyn, ^ | 17:17 |
@besser82 | lisitsyn, a map for that is overkill… :( | 17:18 |
lisitsyn | ?? | 17:18 |
sanuj | lisitsyn: besser82: can i read about tags from some online resource? | 17:18 |
sanuj | to get a better understanding | 17:19 |
@besser82 | lisitsyn, Storing data in the map directly is freaking slow… | 17:19 |
sanuj | i mean do you guys know of any resource | 17:19 |
sanuj | besser82: map is implemented as a bst right?? | 17:19 |
sanuj | or is it hashing | 17:20 |
@besser82 | lisitsyn, ? | 17:21 |
@besser82 | sanuj, it's bst, yes | 17:21 |
lisitsyn | okay unordered_map | 17:21 |
lisitsyn | no matter :) | 17:22 |
sanuj | lisitsyn: yeah | 17:22 |
sanuj | but the usage of this setter is like | 17:22 |
sanuj | SGObject object; Tag<int> intParameter; object.set(intParameter, 3); | 17:22 |
sanuj | suppose there are 2 intParameter -> width, length | 17:23 |
sanuj | then to set these parameters it should be like | 17:23 |
sanuj | Tag<int> length; object.set(length, 3); | 17:24 |
sanuj | or | 17:24 |
sanuj | Tag<int> length("length"); object.set(length, 3); | 17:24 |
sanuj | and respectively for width | 17:25 |
sanuj | Tag<int> width; object.set(width, 3); | 17:25 |
sanuj | lisitsyn: ^^ ? | 17:25 |
sanuj | lisitsyn: and also how should the map look like | 17:27 |
sanuj | for the above example | 17:27 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has joined #shogun | 17:30 | |
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/120085427 | 17:30 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has left #shogun [] | 17:30 | |
@besser82 | sanuj, with using the name-string to resolve back to the Tag, we need to have an unordered_map<std::string, Any*> | 17:30 |
lisitsyn | Tag should be hashable | 17:31 |
lisitsyn | it should have unique id | 17:31 |
sanuj | besser82: Any* is a pointer to a member variable? | 17:32 |
@besser82 | sanuj, nope to Tag<T> | 17:33 |
@besser82 | sanuj, with the corresponding name | 17:33 |
@besser82 | lisitsyn, name should be unique enough, shouldn't it? | 17:33 |
@besser82 | sanuj, so we can then internally call set(*Tag<T>, string_value) | 17:34 |
@besser82 | sanuj, to preserve run-time type consistency… | 17:35 |
@besser82 | lisitsyn, or do we want to use traits for that? | 17:35 |
sanuj | besser82: for ex: Tag<int> lengthTag("length"); object.set(lengthTag, 3); | 17:36 |
sanuj | mapping goes from "length" --> lengthTag ? | 17:36 |
lisitsyn | besser82: no, e.g. a few kernels could have width | 17:36 |
lisitsyn | sanuj: yes | 17:37 |
sanuj | yey i finally got something right :P | 17:37 |
@besser82 | lisitsyn, what do you mean? | 17:37 |
lisitsyn | besser82: ah | 17:37 |
@besser82 | lisitsyn, so we need e.g. width several times? | 17:37 |
lisitsyn | sorry you're right | 17:37 |
lisitsyn | name is enough | 17:37 |
lisitsyn | we can hash it once | 17:37 |
@besser82 | lisitsyn, okie ^^ | 17:38 |
lisitsyn | or use a pool of strings | 17:38 |
lisitsyn | with already hashed | 17:38 |
lisitsyn | so when tag is created it is transformed into hash | 17:38 |
lisitsyn | then access is ultrafast | 17:38 |
@besser82 | lisitsyn, same should be with using std::string in the map | 17:38 |
@besser82 | lisitsyn, since std::string is just a wrapped char* | 17:39 |
@besser82 | lisitsyn, not too much overhead, when storing it insinde the map | 17:39 |
lisitsyn | besser82: std::string would compute hash all the time | 17:39 |
sanuj | lisitsyn: besser82: so the hashmap just tells what is the type of a particular member variable? | 17:40 |
lisitsyn | we forget type | 17:40 |
lisitsyn | aka type erasure | 17:40 |
sanuj | lisitsyn: what ? | 17:41 |
sanuj | i need to read about type erasure | 17:41 |
sanuj | void * | 17:43 |
@besser82 | sanuj, for string-based setter, yes | 17:44 |
@besser82 | lisitsyn, woot? | 17:44 |
sanuj | besser82: where should this hash map reside? | 17:45 |
sanuj | Tag or SGObject? | 17:45 |
@besser82 | sanuj, SGObject | 17:45 |
@besser82 | sanuj, and I'd prefer heap-allocation | 17:46 |
sanuj | okay | 17:46 |
@besser82 | lisitsyn, so you'd propose hashing the name-string into sth. like int? | 17:47 |
@besser82 | lisitsyn, and do the lookup by that? | 17:47 |
lisitsyn | besser82: exactly | 17:47 |
@besser82 | lisitsyn, mhh… so how do we want to hash then? | 17:48 |
lisitsyn | besser82: on initialization | 17:48 |
lisitsyn | ctor should hash it | 17:49 |
@besser82 | lisitsyn, I see… but which hash-algo? | 17:49 |
@besser82 | lisitsyn, I mean we should be collsion-free, then | 17:49 |
@besser82 | lisitsyn, and e.g. SHA1 is more than a uint64_t… :S | 17:50 |
lisitsyn | besser82: uhmmm ok we can make it collision free | 17:50 |
lisitsyn | we can just have a pool of strings | 17:50 |
lisitsyn | of tags | 17:50 |
@besser82 | lisitsyn, mhh… | 17:51 |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has joined #shogun | 17:52 | |
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/120090139 | 17:52 |
-!- travis-ci [~travis-ci@ec2-107-22-112-205.compute-1.amazonaws.com] has left #shogun [] | 17:52 | |
@besser82 | lisitsyn, my idea behind would be more like having a container of ptr to the tags, so we don't need to alter anything manually and all… | 17:53 |
@besser82 | lisitsyn, like if we need a new parameter for whatever new plugin, we don't need to rebuild libshogun | 17:54 |
@besser82 | lisitsyn, any thoughts on this? | 17:54 |
sanuj | besser82: most of the things are going over my head :P | 17:55 |
@HeikoS | wiking: jojo | 17:56 |
@besser82 | sanuj, don't mind… lisitsyn and me are hardcore-C++ guys. :P | 17:56 |
sanuj | haha | 17:57 |
@besser82 | sanuj, =) | 17:57 |
sanuj | i'll also become one in some time B) | 17:57 |
sanuj | :D | 17:57 |
@besser82 | sanuj, Sure you will =) Just to give you a feeling for my expirience: I learned coding, when we limits like a string could not be more than 255 chars and such… TurboPascal3 on Z80 ;) | 17:59 |
@besser82 | 2 MB of RAM these days was like having 2 TB today… :P | 18:00 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has joined #shogun | 18:00 | |
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/120085427 | 18:00 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has left #shogun [] | 18:00 | |
sanuj | besser82: woooaaah | 18:00 |
sanuj | :D | 18:00 |
@besser82 | hehe | 18:01 |
sanuj | besser82: i will say that to people after 15 years when RAM goes 1 TTB :P | 18:01 |
sanuj | if moore's law continues | 18:02 |
@besser82 | sanuj, hehe, yes for sure | 18:02 |
@besser82 | sanuj, When I was your age floppy disk was da gangsta way for storing them files ;) | 18:02 |
@besser82 | sanuj, 360 kb on double-sided 5.25 inch floppy | 18:03 |
sanuj | besser82: simply outrageous | 18:03 |
sanuj | besser82: i feel sort of lucky :P | 18:03 |
@besser82 | sanuj, hehe… There will be such stories for you, too 20 yrs. in the future | 18:04 |
sanuj | besser82: if someone solves human longevity till then, i won't complain ;) | 18:05 |
@besser82 | sanuj, "Hey, Kids… When I was young our SSDs were about 2.5 inches in size and just had 2 TB…" | 18:05 |
sanuj | haha | 18:05 |
sanuj | besser82: so coming back to tags :P | 18:07 |
@besser82 | sanuj, yes =) | 18:07 |
sanuj | i have a hashmap in sgobject which gives me tag objects given it's name | 18:07 |
sanuj | i want to store the setter value in a class variable | 18:07 |
sanuj | all class variables will be void *? | 18:08 |
@besser82 | sanuj, huh? | 18:08 |
@besser82 | sanuj, the value should be in the Tag, too, I think… | 18:09 |
@besser82 | sanuj, so we definitly type-safety | 18:09 |
sanuj | besser82: Tag only has one parameter i.e. its name | 18:10 |
sanuj | in the wiki page | 18:10 |
@besser82 | sanuj, mhh… I need to discuss that with lisitsyn later… so go on using void* then ;) | 18:10 |
@besser82 | sanuj, we can change that later, into a suitable way | 18:11 |
sanuj | lisitsyn was saying something about type erasures so i inferred void * | 18:11 |
sanuj | besser82: yeah we are just prototyping for now | 18:11 |
sanuj | besser82: how will i know which member variable should i store the setter value in? | 18:13 |
sanuj | from the tag name? | 18:13 |
@besser82 | sanuj, sth. like that… For that reason I was like we should have that var inside Tag<T> | 18:14 |
sanuj | yeah | 18:15 |
sanuj | besser82: i gotta run for dinner | 18:15 |
sanuj | will be back in sometime | 18:15 |
sanuj | besser82: thanks | 18:15 |
sanuj | :) | 18:15 |
@besser82 | sanuj, allrighty! me,too | 18:16 |
@besser82 | sanuj, will be offline later… erm… you are on tomorrow? | 18:16 |
-!- sanuj [0e8bc402@gateway/web/freenode/ip.14.139.196.2] has quit [Ping timeout: 250 seconds] | 18:20 | |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has joined #shogun | 18:24 | |
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/120095963 | 18:24 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has left #shogun [] | 18:24 | |
-!- curiousguy13 [~curiousgu@120.59.229.225] has quit [Remote host closed the connection] | 18:37 | |
lisitsyn | besser82: please no void* :) | 18:39 |
@besser82 | lisitsyn, was not my intention… ;) | 18:48 |
@besser82 | lisitsyn, for Proof of Concept it would be ok… | 18:49 |
@besser82 | lisitsyn, production would be different | 18:49 |
lisitsyn | struct Any { void* data; } | 18:52 |
lisitsyn | :) | 18:52 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has joined #shogun | 18:52 | |
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/120103779 | 18:52 |
-!- travis-ci [~travis-ci@ec2-54-198-118-249.compute-1.amazonaws.com] has left #shogun [] | 18:52 | |
@besser82 | lisitsyn, :P | 20:18 |
@besser82 | lisitsyn, struct Any { std::traits_type type } avail, too? | 20:19 |
-!- besser82 [~besser82@fedora/besser82] has quit [Ping timeout: 248 seconds] | 20:23 | |
-!- sanuj [0e8bc402@gateway/web/freenode/ip.14.139.196.2] has joined #shogun | 20:25 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has quit [Ping timeout: 264 seconds] | 21:01 | |
-!- sanuj [0e8bc402@gateway/web/freenode/ip.14.139.196.2] has quit [Quit: Page closed] | 21:24 | |
lisitsyn | why traits? | 21:48 |
-!- arianepaola [~ariane@unaffiliated/arianepaola] has quit [Read error: Connection reset by peer] | 22:11 | |
-!- arianepaola [~ariane@unaffiliated/arianepaola] has joined #shogun | 22:16 | |
-!- arianepaola [~ariane@unaffiliated/arianepaola] has quit [Excess Flood] | 22:20 | |
-!- arianepaola [~ariane@unaffiliated/arianepaola] has joined #shogun | 22:21 | |
-!- c4goldsw [8a33fe83@gateway/web/cgi-irc/kiwiirc.com/ip.138.51.254.131] has joined #shogun | 22:39 | |
arianepaola | What is the process to contribute to the wiki pages? It seems that github does not support creating pull requests for wikis. | 22:58 |
c4goldsw | Not even after editing the Markdown? | 22:58 |
c4goldsw | Ah, excuse me, nvm. | 22:59 |
arianepaola | Does this sound good? clone wiki locally, push to my own github account and open an issue referencing the change. | 22:59 |
arianepaola | c4goldsw: it's a contribution. can't change the wiki directly. | 22:59 |
c4goldsw | I'm not the person to be asking, unfortunately - most of them are probably aren't working anymore, as they're mainly based in Europe. | 23:00 |
c4goldsw | That is, try again tomorrow. | 23:00 |
arianepaola | thanks c4goldsw | 23:03 |
-!- c4goldsw [8a33fe83@gateway/web/cgi-irc/kiwiirc.com/ip.138.51.254.131] has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client] | 23:07 | |
--- Log closed Sat Apr 02 00:00:56 2016 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!