cameron.freenode.net changed the topic of #mlpack to: http://www.mlpack.org/ -- We don't respond instantly... but we will respond. Give it a few minutes. Or hours. -- Channel logs: http://www.mlpack.org/irc/
jbc_ has joined #mlpack
ashishtilokani has joined #mlpack
< ashishtilokani> Now mlpack_test is running.. all I needed to do was copy the mlpack_test.exe from bin to the build folder where the test data was stored and ./mlpack_test from there. But If want to just tinker around with a method and see if it is still working correctly what is the approach?
< zoq> ashishtilok: Hello, we are using the Boost Unit Test Framework to write tests. Every test contains a so called "TestSuite" (BOOST_AUTO_TEST_SUITE(TestSuite)). you can run only the tests in that test suite with 'bin/mlpack_test -t TestSuite'. A specific test case called 'TestCase' (BOOST_AUTO_TEST_CASE(TestCase)) could be run with 'bin/mlpack_test -t TestSuite/TestCase'. I hope this will be helpful.
< ashishtilokani> for example, if I have to use load_save_test.cpp, then what command do i have to use exacty? I think 'TestCase' needs to be replaced with something in bin/mlpack_test -t TestSuite/TestCase
< zoq> The name of the TestSuit can be found in line 16 "BOOST_AUTO_TEST_SUITE(LoadSaveTest);". So if you want to run all tests in that TestSuit just run 'bin/mlpack_test -t LoadSaveTest'. If you are just interested in the results of the e.g. HDF5 test case run 'bin/mlpack_test -t LoadSaveTest/LoadHDF5Test'. For more test cases take a look into the 'load_save_test.cpp' file.
< ashishtilokani> ./mlpack_test log_level=test_suite --run_test=LoadSaveTest This works..
< ashishtilokani> now if I change the cpp files to be tested and add some more tests in the test file... What all is needed to be build again?
ashishtilokani has quit [Ping timeout: 246 seconds]
billLiu has joined #mlpack
< billLiu> Hi, everyone! First, Merry Christmas!!! And I'm a beginner to use mlpack. Yes, it's absolutely a cool toolkit and easy to use. The main purpose I use it is to train GMM in speaker recognition. Until now, it works.
< billLiu> But I wonder whether things would get even better. I found that when I use GMM::Estimate, it just use single core(top show 100% cpu usage) in my server which has 32 cores. It's definitely a waste and takes times longer than my lab's implementation which is commercial and close source.
< billLiu> So I wonder whether it is possible to utilize multi-core to train GMM using mlpack? Anyone who can help? Thx so much!
< billLiu> BTW, I have manually compile Armadillo using ICC and MKL, and mlpack itself is compiled using ICC. The command I used is like "icpc train_gmm.cpp -o train_gmm -O2 -fp-model strict -fomit-frame-pointer -xhost -larmadillo -lmlpack -lboost_program_options -Wl,--start-group -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group"
< naywhayare> billLiu: merry christmas to you too :)
< naywhayare> you are right that GMM training is single-core
< naywhayare> there are a couple of easy options -- the first is to use OpenBLAS which is parallelized, and the second is to use OpenMP to parallelize the training of GMMs
< naywhayare> anyway, I personally don't have time right now to rewrite the GMM code with OpenMP but if you wanted to I would gladly accept a patch :)
< billLiu> hey, naywhayare. The second one is what I'm thinking about and I will add openMP once I check it works right. And the first one... actually I use intel MKL library while is multi-thread, to compile Armadillo, Does it means the process would be parallelized if I do that?
< billLiu> Or I should do something to compile mlpack?
< naywhayare> billLiu: if MKL is parallelized, then there's no need to use OpenBLAS
< naywhayare> and if it is parallelized, then any parts of mlpack algorithms that call Armadillo methods that use the MKL will also be parallelized
< naywhayare> but I'm not sure how much of the running time of GMM training is spent in those calls
< billLiu> yes, i know
< naywhayare> I have to run for now, but I'll be back maybe later today and if not I'm basically always in the channel and will see messages that you leave :)
< naywhayare> you can also use the mailing list or the bug tracker to get in touch if you need
< billLiu> I will read the corresponding code to see if it is necessary to use openMP
< naywhayare> talk to you later :)
< billLiu> OK, thx !!!
< billLiu> talk you later :)
ashishtilokani has joined #mlpack
< naywhayare> ashishtilokani: to rebuild after you change a file, you just need to 'make mlpack_test' and then run the tests you like :)
< ashishtilokani> Thnx... I will try it and see if it works.
< ashishtilokani> There are two copies of load_impl.hpp. One in the build directory and one in the folder before the first time I used make on mlpack. Where do I need to change the code to see changes?
< ashishtilokani> I guess the file not in the build directory. The one in the build will get updated after using make I guess.
< ashishtilokani> One thing which bothered me is that just for a small change in one file, the mlpack_test is build again which takes a LOT of time. Is there anyway we can quickly test somethinga single file.
< naywhayare> ashishtilokani: unfortunately the answer here is no, because lots of the code in the mlpack test files depends on load_impl.hpp
< naywhayare> if you have a multicore system, you might try a parallel make, i.e. 'make -j4 mlpack_test' (if you had four cores, for instance)
< ashishtilokani> When I changed load_impl.hpp , the changes were not reflected after I used make mlpack_test.
< naywhayare> did you change it in build/src/ or src/?
< ashishtilokani> Any file I modify, to test it, only mlpack_test needs to be build?
< ashishtilokani> src/
< ashishtilokani> build/src/ gets updated once make mlpack_test is executed I guess
< naywhayare> right
< naywhayare> you could try 'make clean' and then 'make mlpack_test' and see if that resolves the issue
< naywhayare> it might take a little while though :(
< ashishtilokani> :(
< ashishtilokani> I really think testing of load_impl.hpp can be done in a quicker manner but don't know how.
< naywhayare> it is possible, it's just tedious
< naywhayare> if you really wanted, you could modify the CMakeLists.txt in mlpack/src/tests/ and comment out every file except load_save_test.cpp
< naywhayare> but you would need to remember that if you wanted to test anything else, you would need to uncomment it
< ashishtilokani> that would work for me
< ashishtilokani> The changes were not being reflected because I had copied mlpack_test.exe from build/bin/ to build/ as all the test data was in this directory.
< ashishtilokani> After using make, the new mlpack_test was in the build/bin and I was still using the old one in the build directory.
< naywhayare> ah, yeah; maybe easier to just run 'bin/mlpack_test' :)
< ashishtilokani> Yeah, that would work. No need to copy it again and again
ashishtilokani has quit [Quit: Page closed]
ashishtilokani has joined #mlpack
< ashishtilokani> I tried inplace_trans() on a 10k * 676 by adding it as test in load_save_test and the process got KILLED
< ashishtilokani> the file size was 228.9 MB
< ashishtilokani> I guess inplace_trans() should not be used as they are damn slow for large matrices and not required for smaller matrices.
< ashishtilokani> You might want to close #209 as wontfix
< ashishtilokani> or something like that
< ashishtilokani> or Is there anything I should do regarding #209
< ashishtilokani> ?
< zoq> hmm, that's weird, I've tried 'arma::mat A = arma::randu<arma::mat>(10000, 1000); arma::inplace_trans(A);' and everything is works just fine.
< ashishtilokani> how much time did it take?
< zoq> 0.744542s
< ashishtilokani> I tried again, this time it executed pretty quickly... I wonder why the first time my computer become unresponsive
< ashishtilokani> The previous time I used trans() then printed the entire matrix on command line and then used inplace_trans() in a single test case
< ashishtilokani> this time i just used inplace_trans()
< zoq> printing such a matrix should be time consuming
< ashishtilokani> you are right but it appeared as if the prinitng had stopped
< ashishtilokani> one thing i did not understand was how to print the total time taken
< ashishtilokani> in a task
< ashishtilokani> Timer::Start("intrans"); Timer::Stop("intrans");
< ashishtilokani> Log::Warn<<Timer::Get("intrans"); does not work
< zoq> right, because Timer::Get(...) returns a timeval struct
< zoq> timeval t = Timer::Get("intrans");
< zoq> Log::Debug << t.tv_sec << "." << std::setw(6) << std::setfill('0')
< zoq> << t.tv_usec << "s";
< zoq> this should work
< ashishtilokani> ok
< ashishtilokani> can you suggest me some non trivial bugs i should try?
< ashishtilokani> or any new algorithm I can implement which can be added to mlpack
< zoq> hm, I think most of the tickets are non trivial, some a really hard to fix because you need to know exactly how the method/algorithm works.
< zoq> If you like to implement a new algorithm it is up to you to pick something you find interesting. If you interested in trees I guess ryan really likes to see some new trees (e.g. octree). But there is so much you can do, I can't just recommend something.
< ashishtilokani> thnx... I would try to find something interesting and also read about octree
ashishtilokani has quit [Quit: Page closed]