Adventures in SIMD Thinking (Part 1 of 2)
#undef __OPTIMIZE__ #define KEWB_FORCE_INLINE inline #endif namespace simd { using rf_512 = __m512; using ri_512 = __m512i; using msk_512 = uint32_t; ... }Copyright © 2020 Bob Steagall P U T I N G 4 CppCon 2020 - Adventures in SIMD Thinking Function load_value() KEWB_FORCE_INLINE rf_512 load_value(float fill) { return _mm512_set1_ps(v); } 2.3 2.3 2.3 2.3 2.3 2.3 2.3 2.3 2.3 2 M P U T I N G 6 CppCon 2020 - Adventures in SIMD Thinking Function load_from() KEWB_FORCE_INLINE rf_512 load_from(float const* psrc) { return _mm512_loadu_ps(psrc); } m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 0 码力 | 88 页 | 824.07 KB | 5 月前3Changing Legacy Code: With Confidence
#endifDiscovery Testing proc_rf_msg(buff, true, false, 7); What does this function do? proc_rf_msg(uint8* buff, bool is_full, bool is_actvty, size_t sz);Discovery Testing void hndl_new_pkt(rf_pkt* pkt, size_t size) ... proc_rf_msg(buff, true, false, 7); proc_rf_msg(nullptr, false, false, 0); activity activity; activity.start_loc = {32.2226, 110.9747}; activity.end_loc = {39.8175, 104.7509}; proc_rf_msg(&activity proc_rf_msg(&activity, true, true, sizeof(activity)}; ... } void proc_rf_msg(void* buf, bool is_verified, bool is_activity, size_t buf_size) { ... if(is_activity) { activity* activ = (activity)buf; int activity_distance0 码力 | 114 页 | 982.54 KB | 5 月前3Adventures in SIMD Thinking (Part 2 of 2)
KernelSize - KernelCenter - 1; rf_512 prev; //- Bottom of the input data window rf_512 curr; //- Middle of the input data windows rf_512 next; //- Top of the input data window rf_512 lo; //- Primary work work data register, used to multiply kernel coefficients rf_512 hi; //- Upper work data register, supplies values to the top of 'lo' rf_512 sum; //- Accumulated value ...Copyright © 2020 Bob Steagall KernelCenter> void avx_convolve(float* pdst, float const* pkrnl, float const* psrc, size_t len) { ... rf_512 kcoeff[KernelSize]; //- Coefficients of the convolution kernel //- Broadcast each kernel coefficient0 码力 | 135 页 | 551.08 KB | 5 月前3Boosting Software Efficiency
detected anymore. Problems:PROBLEMS & SOLUTIONS 125 RF receiver UART (Serial port) BACKEND READy concentratorPROBLEMS & SOLUTIONS 126 RF receiver UART (Serial port) BACKEND READy concentrator this silence issue – and I realized the RF receiver reset itself.PROBLEMS & SOLUTIONS 136 Junk Frame 1 Frame 2 Frame 3 Frame 4 Frame 5 Frame 6 Frame 7 Frame 8 RF receiver reset As a result, the READY0 码力 | 180 页 | 1.65 MB | 5 月前3Just-In-Time Compilation: The Next Big Thing
USER=John ./cpp_injection -> John USER="\";std::system(\"rm -rf /\");\"" ./cpp_injection // []{ std::cout << "";std::system("rm -rf /");""; } -> 🔓 5 . 11HOW IT WORKS? - DETAILS HOW IT WORKS? - DETAILS0 码力 | 222 页 | 5.45 MB | 5 月前3Back to Basics: Pointers
return a pointer from a function ○ https://isocpp.github.io/CppCoreG uidelines/CppCoreGuidelines#Rf-re turn-ptr ○ (Careful!) 120Bug Mitigate with a Wrapper Class ● We can build our own pointer class0 码力 | 152 页 | 5.61 MB | 5 月前3julia 1.10.10
without needing to create temporary array objects first: julia> `rm -rf $["foo","bar","baz","qux"].$["aux","log","pdf"]` `rm -rf foo.aux foo.log foo.pdf bar.aux bar.log bar.pdf baz.aux baz.log baz.pdf codesign step. If it was indeed successful, you can detach the .dmg now: hdiutil eject /dev/disk3 rm -rf ./jlmnt If you get a message like Julia-x.y.app: code object is not signed at all then you'll need now well, unmount the writable .dmg and convert it back to read-only: hdiutil eject /dev/disk3 rm -rf ./jlmnt hdiutil convert julia-x.y.z-osx_writable.dmg -format UDZO -o julia-x.y.z-osx_fixed.dmg Verify0 码力 | 1692 页 | 6.34 MB | 3 月前3Julia 1.10.9
without needing to create temporary array objects first: julia> `rm -rf $["foo","bar","baz","qux"].$["aux","log","pdf"]` `rm -rf foo.aux foo.log foo.pdf bar.aux bar.log bar.pdf baz.aux baz.log baz.pdf codesign step. If it was indeed successful, you can detach the .dmg now: hdiutil eject /dev/disk3 rm -rf ./jlmnt If you get a message like Julia-x.y.app: code object is not signed at all then you'll need now well, unmount the writable .dmg and convert it back to read-only: hdiutil eject /dev/disk3 rm -rf ./jlmnt hdiutil convert julia-x.y.z-osx_writable.dmg -format UDZO -o julia-x.y.z-osx_fixed.dmg Verify0 码力 | 1692 页 | 6.34 MB | 3 月前3Julia 1.11.4
without needing to create temporary array objects first: julia> `rm -rf $["foo","bar","baz","qux"].$["aux","log","pdf"]` `rm -rf foo.aux foo.log foo.pdf bar.aux bar.log bar.pdf baz.aux baz.log baz.pdf codesign step. If it was indeed successful, you can detach the .dmg now: hdiutil eject /dev/disk3 rm -rf ./jlmnt If you get a message like Julia-x.y.app: code object is not signed at all then you'll need now well, unmount the writable .dmg and convert it back to read-only: hdiutil eject /dev/disk3 rm -rf ./jlmnt hdiutil convert julia-x.y.z-osx_writable.dmg -format UDZO -o julia-x.y.z-osx_fixed.dmg Verify0 码力 | 2007 页 | 6.73 MB | 3 月前3Julia 1.11.5 Documentation
without needing to create temporary array objects first: julia> `rm -rf $["foo","bar","baz","qux"].$["aux","log","pdf"]` `rm -rf foo.aux foo.log foo.pdf bar.aux bar.log bar.pdf baz.aux baz.log baz.pdf codesign step. If it was indeed successful, you can detach the .dmg now: hdiutil eject /dev/disk3 rm -rf ./jlmnt If you get a message like Julia-x.y.app: code object is not signed at all then you'll need now well, unmount the writable .dmg and convert it back to read-only: hdiutil eject /dev/disk3 rm -rf ./jlmnt hdiutil convert julia-x.y.z-osx_writable.dmg -format UDZO -o julia-x.y.z-osx_fixed.dmg Verify0 码力 | 2007 页 | 6.73 MB | 3 月前3
共 17 条
- 1
- 2