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>
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