4 ms·
Single core? No AVX? What's the point of writing it in C?
by p1esk 9y ago
Single core? No AVX? What's the point of writing it in C?
- sanxiyn 9y agoIt's a demo, like https://github.com/rswier/c4 https://github.com/rswier/c4.
- deleted 9y ago[deleted]
- Annatar 9y agoMinimal dependencies; people are starting to get fed up with having to bootstrap and/or compile the planet just to be able to run some software. The situation has gotten completely out of hand, especially if one is not on GNU/Linux.
- AstralStorm 9y agoThis does nor preclude the use of threads or SIMD. Essentially this library is a demo toy that will need a lot to work to make useful in real conditions.
- purerandomness 9y agoThat's exactly the point.
- taneq 9y ago> Essentially this library is a demo toy It's 200 lines of C, what were you expecting?
- didymospl 9y agoGenerally when I see links to github projects on HN I expect something useful or extraordinary and this looks like my Neural Networks 101 assignment, only far more polished. But people seem to like it(over 400 stars right now) so maybe I am missing something.
- fao_ 9y agoPeople like it because it does what it says on the tin without any further dependencies and having to pull in the entire planet, as with the respective node.js binaries.
- torstenvl 9y agoSo... if its usefulness is equal to something you've made, AND it's available to the public, AND it's more polished... why exactly are you shitposting about it? Let people enjoy things.
- didymospl 9y agoI just pointed out that this is a very basic code. It's definitely not something I would use in any real life scenario(see other posts itt). And if you want to learn about NN you'd be better off googling something like 'backpropagation example' as this project does is virtually not documented. I personally don't find it useful and it takes up the space that can be filled with more interesting content. How is that 'shitposting'?
- nl 9y agoIt's not shitposting. One of the core requirements of modern deep neural networks is performance. The high accuracy you get from very fast training over large amounts of data is the only reason to look at neural networks over very fast, very accurate systems like XGBoost. If something doesn't deliver that, then it's worth pointing out that it is inadequate for anything but toy tasks.
- AstralStorm 9y agoExpected about 100 lines more for actual performance. ;)
- m_eiman 9y agoWhen I'm looking for libraries to use on my Cortex M0 and M3 embedded devices, I prefer small code size to fast execution (as long as it's fast enough) and don't have SIMD and no use for threads. Sometimes size does matter greatly.
- zimpenfish 9y agoThe included test script demonstrates that it can learn to recognise the semeion digits with reasonable accuracy in under a second. I've tested it on the pendigits data (8 points to describe a digit) and it can learn to recognise those with 93% accuracy in 1.5 seconds. What more do you want from 200 lines of code?
- yvdriess 9y agoWriting clean C loops are a good way of writing vectorized code. Checking the vectorization report of icc 2018 for fprop() shows that the loops got inlined, unrolled and vectorized (with AVX512 and AVX2 instructions using XMM/YMM registers). I doubt that doing it by hand would be faster, but it would make the code a lot more complex. You have a point on the parallelization part though, it can be cleanly parallelized with a few OpenMP Pragmas.
- matthewaveryusa 9y agoA thing of beauty happens when you write simple code in C and C++: the compiler has a field-day optimizing ad-nauseum. look at all those zmm(AVX-512) registers being used if your architecture supports it (on top of all the inlining and unrolling)! godbolt link of the source + assembly -- all I did was combine the header, source and test files: https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAKxAEZSAbAQwDtRkBSAJgCFufSAZ1QBXYskwgA5NwDMeFsgYisAag6yAwoILomxYADoEG7BwAMAQTkKlKzOq078qY6YvWu8xcrUbtugx4AEZusmZWNj72jpoAtkwECGER1pFetr4O/s54ribhHlF2floEeHGYKUUZ0aUBxApGBanFWbHOQaEtRVYEAJ4ADphYAGaqOsQiyARFAOx8VqrLqqMMqIkAVKoA7ho8qgD0h6qWDAyqSQ47mHjACASChh4rq%2BtbqgAe%2B0cnABJ4dBYFiXVCqUQEQYiAiqZj9TDEXa3e6PZ5LFZrDYEbbBH7HVQ8PBMQSYJ4vDHvbGqAoHfEAoGYEFwhFoyyvTEfVB4k4AeWhUJhzOIrPJywUMJYuNktJOADkRHFggjweNgkSSYJVABaVRMBg7Jj9TUEHZgnUAFQUINQLAY/QmIkGgxIj11EyaDAcCEBwNhhpZotU4tULD20t%2BqnliuVqHGNzuDzJkXRYpYErwg0E3MjCqViNjQZYAqTbJWwZY3vQ2ajeZV1J9jJDmDENpLr3LqEz1dzMfGEOLIrmABEPJaWCx9r1LPjzcQmApNUxLlbdoQELqQQoBRv0Jd9MBMDD%2B9DV0k3Z79Cwmqo5wQqh58QAlQ9iFiahHEEg3xIOAtXJtiHqTYmiQADWrIcjCnwEAQc4KBAY4sKQqhoG%2BMKQdsCjIahOhvFi2wEMAyGQd%2Bd4AJSTsm04nDwIh4Aw6CLk2OzLuO4LBFQmAzKowB4AAbo2LA9vm4xbtCmoQFemZkaQD4nEJ0YifWDIgiwzafm%2Bqxfv%2Bla%2BkKqiSZWMlyTuIbCXWx6upJnaCGRrKIV8BDBHRDEQOWGaCMh5aVl5aYhjZFHSlOT4vsQmmsOC/InoMxAjHgMx5CCvECSCEViQQEGUts0ExXFMwIVa2GtuhWWFoFixpNRqgAMpMAJxoIA45RsUQqj4II4EeHxqCAo5gh1ZgBXjkVaEoQg%2BjbIMiQIOVwUnAAMhsjFumpLHNSCoyfnEbV4B19krtB7zoBAOEwsg43EJN02zVR%2BIAGKxaSbrrasW2XI11KYEwgyst1vXQZtmCDYhN2VSZ2DEJ%2BiKjCIijlDarI6Ik8V4YkqgfidxWozCTAjbhJHBBRkQLIGsUEK%2BqjmIYACs4yTagOyjBAS46sEyFcIY5ijKDHDDnNqgAAr6OUQFYI0fHIwJdYfl%2BMNw4liMEMjyDY6ogxi8QmOjSRuMoVjBNE9YJMpjeoWpdqqhShVvMjrdJzmqgSsXDLwoeEj5QqyRRB3pDWv46Vp2XERevawHWOoHjMLBoIeAAF6YIbvMVeylIOttGhDpTnOjJRpbLKMJBuX5eCOJn5g/CX/juvHFf8PwhuvK8ggKuovAZ%2BjvuERw1OEt3Q7IVyPd4H3oOvGTFPN3Euc2/zlgJRL8MbbDCUI27Sse6rTD5YHOuJ8beem%2BTYWqLQ2dHAZp9c63ByYJ8gxM1qTBkTzfN24LwtEhcYv8ZLv7jFv5QF6JVWMvReitlaq3VgAv2JUsS6j3snFY49j5Lm2BAS%2B4wdRP2nq/Sq91KTXmdMGOcLB0CoG2ptchWdzAW0vuAjeJFNqsGOgg0mZtvykIgGRc%2BEBILcMfJYWUQ4AD6ABZSwAANHBts8E0S3qBNWn4prAGRqvKw7sUZ/V3MEGKnYYGqAcgQSO2NtiBywiHf2%2BELEwkIsRVOt4E7zEQfnQuwZK6yDLhXWIlxDAVkBLXNuvAG4rCToGFOcDJ6l2oTnIKJtXj4k0HqZAIhmB3lBE7DuUMxqsAPKedcsVBDDG4q1SyrJG4YlcX5KgUTy7hmqVXDKLAbI/CoHXIJYSQn73KeUneqclzt3VhjDKg8eCtOpv3IO3dRkj1zt0xuvS4HBCiVA/KwypljKHKPOZKxIl1w8W6HEqgCKGG%2BD3apxy/G7n4EGPusztnLASSQWK3F4wok1AoZSvoSlRUFP6V2cTukZVOaMo5PjLnXxueM7U7cHGgtQZbUFGUTBD1ubEg%2BrwZ4AoeScTQTyuIwleYmQshZtytV0o2IUZTukF01sGep%2BzakHHpZoMFHkWltJ4ME%2B5GU9hD0Rb4jyEKNnQv2bC7YkTJp6FWW4FF4zuGYQnGc1Fzj1C4MxbI1Qd0SAGmILuXRyjVEsHoZonqu5Rj6v0YY4xGFrFlScYGBJSSUk/k%2BRSv5AENKqAlsoUkVKXG0uLjUrxDTfGVgCXwdpJtQlYtVrshl2c7nlJpUXGE9LPF1O8Y0tldSOVcu2bstu%2ByFDrL7vy3lhJ%2BVSU1NcjZibG5IqmcPKF7doEFoOBlXEPdy5yrreq%2BJOKnWpN/D8v08JERqRbCCb1IhfWBmTW4oN4Z3Essac0pdubAzRvRRSCJLd25Uy5nW9klTU2LqZZm0N/ic2BM5R08pbb24NqVVC45wKS4XMrEK5Vd6fEjKbZnFt%2BU20%2BM7TwWgMy0UYrVWqqwT5mHkLjk9QlrpmGW3VLO9R68TW9RNCQ46gdDGsJNvOwN%2B7g1aDBWGA4w8b3cJ5Y20t7cmGcO4TqKmtM60kajmeoMF7JThvriBhjzb9nMZYRbdjMTrYwaqgLRoaYmKVEEP1XJqHb6EBLBolWWjLbkOCPo86E1bVKZU5gZChgLNEYPhLYRQRcL7izJBlYNmkbEAIMzAwnlVAmaYAeLZyw%2BIxXFEzHzB5kIOf816pgwjGTHQi3W9T7naAvxkSZO684Lj9VGA4UY9FfzDCvGwY1Ks7oAEl5rYG2JgAuBWDMXVMVjKaSQWBMEqMYwzl1jMYEccTFVZWKsNe1nlqJNXGQQCawgFrbXvPdci3gJmuXPSl3brKAAqvNeaebXjBD0xAbgXBRgZbEJILStXu6aH29wamWZqYXa4FwZC53LtcGu09%2B7FFbsTnu8hCbU2zMzawJF5BG08vSP5ul%2BiEwmDZZQheREep1jIENcVr1pqqtI/OKgZA%2BiY7x2ERKSoipjG48wPj6uPWjYqq0YN3ChOokY8R5JQnbNydzZC5gdOHiVvrc2z%2Bnbio9v3cO/RY7IAUII6x4L6m6BHsvfQB9zQX2HshmZ8hEnQP2GE7B1RG1OVYr4G3ljK1tqbVmJYFZ9kFqjF2qc8sYHv7teVRItBWC84WCWpXNbhZHwzfWrDqNWxqsHEW4xFb3ykWdFKIgNb8xgfg91vt97IZwdhnIVXdJR3o4DpORcvhrG7lMzGO8oCIvfkmkZ964GQxdaZwrhtHaB0ToXSahtF6BsTJ3XCHegiBw%2BgmqmjQ8SDDB9GlLPblwOtjSWLt3BWgqtELy%2B2Un4Yaf%2BzeFZW4VxCX2Op9q8Q7GCAmweXP2X58KJPKF%2Bfu2FW5fY%2B18YU3wzyXo%2B9/xwP0fwwhNItIqiev/Cj/t9DIS9yd38kUT9bdf1f8H90Yn9sdF9X9MBQDDBUBwCVUs1Mwokb8IDGlP0Z8w1sDfEbJMC100Cdg8No8Ncj4QRZg0V1UupTU%2BoBoPcWp2t6tbUJsQ9lh%2BtKsTdht25qtOwxsJtZcuA9h3sa9/gvoxY/VVggs0wFs8sRCrsrk5dW5pdzslc08BVC8wUfIwUAoJCCR0NFxSEkQExUQ50T1eMyMl0%2BMrYblaNZD5MCAFDPQlCXsmAND9tkIIAyERBghPQ6NP9hNNlOMrD3F01qM%2BMqMHCI1OUnDgteFFDW4J8PCvDvsDI/CAiE4fFy1/1ItRglBUASQkjAjM8rAHJDolo6sjNA4OD7UTZuCad0I%2BD9kBDathCUjiB9s5sy9BUbCVVi8rkGU60OwMCBiHVJCmBpC51BAkcWBXD/tntpc1CVD1DPtvDW4AA2KtWXHYvQ7gHYgwiA/ENkVaViTcTUYHEYGQgjT3KJaCZyeiY6XYkMPQxfSLfEQkIfEw3cZDNsCpANbjAY6wijUfATIJVYOY1gRY9w6mTwjYjIw4jtEIgo8InjZdSjCE%2BI0YaEhY0opY%2B7K7BExXTY5ElfVEzjIokoxbRxCAxPcoywHTAGR6Zg6gzg16IGaPFfAo1kjtXkrksAzjPk5AlLKcAYYYMYCYWCaYWYSvYjLKBVTjRUyZCAgvRzQYsvEgwMYhBmDU%2BYGRIcRITw2gzDCBYMBgN8CAJo3gso%2BUg%2BYMc6KJbAHkO6UYvyIINSatEYtUvyQYFWduMAGQT7IMutHYb0T0KAJ09uA8AgbHWk5%2BVQMAMAduF0u6PNLdOZebE6dcDOQM4MxXIMrbbpT00kDlI9FYf0%2BnGkTdXBdsJmKs5M/MjQosn9UsrMG9BPTAHYBQY6BMrsqg2EBQMs2gmTLTbJTrWKaYy0608rHgnePLDkx03M/ZNM90mEKc5aCYk2aORDKJWgLgAADjrQ622FLN/1PO4QSEx2xwgHV1BRJwPw61QMDHDLyyjJXMzljPjMXO4SbP2VDJDKkG2MOLGiTJTNXNdIzK6RLOHKmU3I7LiMY32XOgrLFCZgQohVoGW32XVx/VeHPPbhzImm4SnJvKgFLJkgMhJyOXH3lRAKZmfMiz7RWFLPgqkJuwAwAoLPMFDPpPYTYtHNSzNIYRVNWi4Dz1Gl1J2C8zNzOlQAYCX3tPCS2G2E/FX0zj/1UqvMAIgHUtsgfP3wWw3zRKBJvB40RCrn0p%2BG6Nox/XUvguQs0ugOvMZ0xkUvosfOMqxBfJNntwcqEqnHHKNKVhDD0CVn0XVNLwlBsmipvD1I5MDhCqXHCv6X2UzO6XEuOn0uQirSoqyr0r1NyoClyo8mKp0OsqjT5n4sHNSsZPHJ0ymmIBKKSuNLamNOwjYNLLivUsSvzz8jQEUqiVSu0OrV4HaqVkIK7AgK4z1guBBMGu8UGo1Lmo3SqpVVeG9xhG9SiUSAP0mCIFAncpwrLkcDuiHLUlUDFzWw2xEJSN8u3XQuOqrhGryvwpWBGuLR7gcvGSmUGqcqiwYDQvRkUswHeuWBGq7m%2BoZluR7kWp1FerZRE0zm9V7Wg2EssAaoYPQEBkGlatCvlwaIPlmvUosoZm8XQEMGsvDAcrsvWp/Vxt8MMC%2Bp4B%2BtCIgPZFZMpqhtZphp7QgJYvzi5uZvN2FK5O5uADFKoixt6kEAQBEFGDWDxqxmSrag5NmrSsiLdBeqpr1J%2BE8LpoPgyp6X6phDv0znIO4Suzal1pkuBptUdmGsMB5oRJHA5p3Q%2BEICdpZtduBvxGqgNEGEikhGhBkNeAlqmVdqdp5s7Tdo2o%2BuduACmVjqiUdj9pOADu%2BhJVDp/Upp9oBrzsVR4FjuBsLuToBsIDRtSzHKwxVlVqeNckDlPLVmmjiteLkv8gr0p0DBtNpJG0EPd06P21sq4DZwJJOsjB52gvjuWDkJcMFy4FxRSV3CaSPAKzUJu1JIyPqPdtnucKZn2wAHFDwgx0I3p/wEhzphzYQvowprxUrggh8xcejga56D77sdhYzqQYJBgQBjh9Ar6BJmbkAnhpg8BDARgRBDg4gGBoGt5vQ1ItQ4dCtgAtQH6fjDgSRKhEpMGOdbgEY6rETR7gbEt0FmK6yVgO79KolLTBACTItVbUrMDUrJIyrO6vN9LTKU14qNLKYbLyarK9aaaYbDaoMZ6Jyzzr6YUpCZz%2Bzd6W7mrBpUrkJuqeHItOauTKKq651qTBo5GVV7c6rAqqJgwEh4IOTa82IyEnpV6JggZdx/w8MqEFJawDw1JbwSAZDBByDyhKgIBzAHr%2B1VBSsiwTxUNLJycgxNQLosBdw0BYnPpYpdRNRL6EGHBkGmhJjTZnQY4iBGgnoRBm4Ed7QyEWAgyo46gmoPp0pTIImaKPl/wmGNNMAGBRhbjTaQx%2Bj9kXstiTyOnF99zGUsm/ghhlQhY5xKgfYATsVVB5pb6UHSIHBdoNw1I9QRhTIkhCn/J5K0JWAMosnSszoIolRVhr7yY1Jdw9QbRgA8lu8zJFI6xyUO8x1pmIw7ogYLhcbQQAd5t7R/xWBVmLhYViQkRzh2mpKy9cDunjyZr7EXV24ME%2BnQ44EAWvp5r40ABODFqTLJxaaYu513BQa8EkfZk2fGlKtq9uBu46fbLB/Bo1OqjI14j4ww2cN3ZCR%2B4IfoNPOCI1QMO4lqFcduR43PVhnQy5cqpfGa9EkEzE2gcwRlWI%2BuWs8RuWhWpW3w409Rj2mEF2GpBNeR2atNPhjNF64022la1pUR7pY27ZLa5o4lduT6ou2teRza/Wf3XCQiYa81nm118R14PVvZTOF3Xl6PQqQsNPYOePeRwWxuN%2BheoNl7QwA88YEAMXDJtgRZtQnOIh2SGNV4Xw0QbIzfSGL8E4EanK8GzI4twIxZ7Vu3F1TYFtccNF7Rk2Gcb0d5aJ8m/oUQKHKWf8CdOcC4NSECYgBRVqdqTqE2aCfqAScN4aFI%2Bdm49aF%2BiAlkwUq0T4%2B2LtqJ6kXt/to6O54doCMd00Cd16Khad8F3CByI6dZ4VggI6Beld7mq0ddlVfEWUcmm4NqMEJcXKA3ReW5od9SM9w8C9hRP9h9s1N6G9g5rAYp5CP900Ze3URSsEY9pcO8HQYlk%2B1qBIUCKphwID%2BKEDnspIfNg%2BfEZydCbSD6fqYjusYIWKPiQge0RqJJv9qgQpjc5sEkAl3l/Ds%2BqhW%2BoIAMMlj1qxM3H1yalm7tOO/l6Tn3LGb1p131pOrtb9KT5F1T0adWB4yEfXcjiAWD8PMIsyiIk1qIs1yaxfbEq2hYRRRI5Y8YTYot/wutnm/In4G2Fz%2BQhe9I4h6VqzjEim81hz9dRwpOAL%2BetzlInwrIut9WSk8MfzhNy7Ihnd04c4f9tSQwWZw8IMzUJQL6EER0GQzdwaWDyLHGrmrVgcimIZ4mGRKQGSBgaQamKQUgFgaQcwHr1AaQO7OIiYUQcQbILwWgHrggfr9rmSUCEALgU%2BLYrYgAFnMGpnMC8GpjW7mEPMPNoGpkYGkDW56766kAG9ICG6kB68EBAHMFIFm8u/a9IDgFgCQDQDiEGDyzIAoExm%2B9%2B5AGADmFkFIEWymcoGCDm9IDVBa2IH6GkGm9IC%2B8qDTB5FtER5e9ICwASDYE9Bh/wGeUAVJBh9vi4mhEkCkGR/FBaZh9ggqDm465yRQA5UYBCHu8gBkk7EXnu6kC1B5FkG1ASHEAKCHA6n6GYGI8fj4k%2BGpgPLu/G4kDoA666/O5h5u8%2BEPK2K1HW54mQBVjmEMCF4gFwEIC/DkHoFUFxUB89Esqm%2B4RG/4Bm6Z5kkammIREoAW5ADW%2BphTcPIxf24xa4G29kAxbW5exO6kDO9641%2BkDu4e6e6Z7e5gEQBQHIR%2B7t/IEoC%2B8z895B7B4h4RHu4gGh%2Bx7h/0Cx%2BR9R8ZAIAx7tEJ45xyQJ%2Bx6J/xX4lJ%2Bx/J%2BSTvCR569p86%2Bx4Z7iGT%2BYDYFZ5vXZ%2BCE564Wu8GF5%2BkAF6F61BF9Qo8Ql6l8wEV7EGV%2BSyj%2B69j%2Bx81%2B1917W/18N%2BN4MjN7ydblkCt5t7z/t9kFHut45Rd5e%2BflIEW9kFkBTbW62NoBbFNuWxZblwC2IYtjug/GPhdyu43cE%2Bj3Z7gN0/6D8uA6vI/vHyT4f8ZIAkZqolB95AA%3D%3D%3D https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaP...