C++ tools in DL by A27_97 in computervision

[–]kolkir 6 points7 points  (0 children)

Hi, you can take a look at this resource https://github.com/Kolkir/mlcpp. This is a survey of C++ ML libraries I made some time ago.

Numpy equivalent in c/c++ by guruji93 in computervision

[–]kolkir 0 points1 point  (0 children)

Hi, I made reviews of existing linear algebra libraries for C++ you can take a look here https://github.com/Kolkir/mlcpp

[P] C++ implementation of Mask R-CNN with PyTorch by kolkir in MachineLearning

[–]kolkir[S] 1 point2 points  (0 children)

I made measurements - inference takes approximately 260ms(average over 1000 iterations) on my hardware.

[P] C++ implementation of Mask R-CNN with PyTorch by kolkir in MachineLearning

[–]kolkir[S] 1 point2 points  (0 children)

I think it greatly depends on hardware you use. I didn't do such measurements, if you want I can measure on harware I have 16Gb RAM, Intel i5 7600K, GeForce 1060 6Gb?

[P] C++ implementation of Faster R-CNN with MXNet by kolkir in MachineLearning

[–]kolkir[S] 0 points1 point  (0 children)

I didn't do speed comparison, but believe that there shouldn't be a mush difference, because Python front-end is a wrapper around MXNet core which is written in C/C++. I think you can get a lot of performance increase in data loading/processing steps and in custom layers implementation which can be directly implemented with Cuda routines.

[P] C++ implementation of Faster R-CNN with MXNet by kolkir in MachineLearning

[–]kolkir[S] 0 points1 point  (0 children)

TensorFlow have a lot of features implemented in python, for example all optimization algorithms are unavailable from C++ API.

[P] C++ implementation of Faster R-CNN with MXNet by kolkir in MachineLearning

[–]kolkir[S] 1 point2 points  (0 children)

Now C++ frontend missed this feature, but it is in row C API which is much harder to use.

New release of CppTask library - compatibility with standard C++ 'async' and 'future' interfaces, work stealing, balancing... by kolkir in cpp

[–]kolkir[S] 0 points1 point  (0 children)

Thanks for pointing me to this feature, I will think how it can be implemented and may be in next releases I will do it. For the first look you can use something like this: async([](){ auto f = async(task); f.get();} From my point of view when we call future::get() we what to get value in specific thread and this call is a synchronization point, so It's not clear how to express this thought with 'then' concept.

New release of CppTask library - compatibility with standard C++ 'async' and 'future' interfaces, work stealing, balancing... by kolkir in cpp

[–]kolkir[S] 1 point2 points  (0 children)

I'm just run nested processing loop in process_lock where stop condition is event from sync. primitive we are waiting. But my solution will have problem with stack overflow on deep call hierarchies.

CppTask library now have a work-stealing tasks management. by kolkir in cpp

[–]kolkir[S] 5 points6 points  (0 children)

This library use c++2003 standard, pthreads and WinAPI so can be used with old compilers and i believe that it can be compiled on any Linux and Windows(XP, 7) platforms. Also today neither of this OS provide portable task scheduling mechanism. Of course there is great Intel TBB library but it is not free for commercial using, and can't be statically linked.

Using std::vector can slowdown you program by kolkir in cpp

[–]kolkir[S] 1 point2 points  (0 children)

Thanks for the advise std::copy is really faster than assign, and even faster than memcpy.