| 02:19:08 | FromDiscord | <toitle3554> is there a way for a generic proc to implicitly get the return type of an expression? |
| 02:20:42 | FromDiscord | <toitle3554> trying to implement a proc `@+` for converting arrays to a custom seq type, but running it with empty arrays doesn't work. I think something's feasible with converters but that's not my favorite idea |
| 02:34:25 | FromDiscord | <toitle3554> oh functions can't receive empty brackets as a type at all, might just have to write a macro |
| 02:34:37 | FromDiscord | <toitle3554> (edit) "type" => "parameter" |
| 02:51:33 | FromDiscord | <_timurski> In reply to @toitle3554 "trying to implement a": empty array r-values don't have a type so this makes sense |
| 03:04:28 | FromDiscord | <toitle3554> In reply to @_timurski "empty array r-values don't": templates can check for empty arrays being passed but implicit conversion to an empty custom container doesn't seem possible |
| 03:05:18 | FromDiscord | <toitle3554> not a huge deal but it'd be a nice qol thing |
| 03:12:04 | FromDiscord | <toitle3554> In reply to @toitle3554 "templates can check for": excluding experimental features https://nim-lang.org/docs/manual_experimental.html |
| 03:12:25 | FromDiscord | <pipeliner.osdev> hello |
| 03:14:12 | FromDiscord | <pipeliner.osdev> I'm pipeliner↵and I'm interested in CODEC/Zip/Cryptography/Parser/SIMD/Embedded(hardware)/Operating System/Compiler and other system engineering |
| 03:15:14 | FromDiscord | <pipeliner.osdev> nice to meet you everyguys↵i'd learn nim quite much ↵but it is first time to visit nim community |
| 03:23:41 | FromDiscord | <_timurski> parser |
| 03:25:28 | FromDiscord | <pipeliner.osdev> sorry |
| 03:25:37 | FromDiscord | <pipeliner.osdev> ?? |
| 03:25:54 | FromDiscord | <pipeliner.osdev> I write parser right?↵is it wrong? |
| 03:26:24 | FromDiscord | <pipeliner.osdev> In reply to @_timurski "parser": I'm interesting in SIMD accelerated parser |
| 04:32:43 | * | benson joined #nim |
| 06:40:07 | * | termer quit (Remote host closed the connection) |
| 06:40:28 | * | termer joined #nim |
| 07:00:08 | * | benson quit (Ping timeout: 244 seconds) |
| 07:18:52 | * | pmp-p joined #nim |
| 07:46:19 | * | deavmi quit (Ping timeout: 276 seconds) |
| 08:12:21 | * | beholders_eye joined #nim |
| 08:28:19 | * | deavmi joined #nim |
| 08:29:02 | * | beholders_eye quit (Quit: WeeChat 4.9.2) |
| 09:10:30 | * | skippy8 joined #nim |
| 09:39:19 | * | skippy8 quit (Ping timeout: 264 seconds) |
| 10:57:28 | * | skippy8 joined #nim |
| 11:03:03 | * | skippy8 quit (Ping timeout: 257 seconds) |
| 11:20:03 | * | skippy8 joined #nim |
| 11:25:58 | * | skippy8 quit (Ping timeout: 244 seconds) |
| 11:42:25 | * | void09 quit () |
| 11:43:10 | * | void09 joined #nim |
| 12:14:28 | FromDiscord | <bosinski2023> In reply to @pipeliner.osdev "I'm interesting in SIMD": go, i guess nbdy. has done a SIMD-accellerated parser so far. Maybe on the JSON-parsers uses SIMD - not sure. Use nimsimd - its awesome.. |
| 12:15:40 | FromDiscord | <mratsim> In reply to @pipeliner.osdev "nice to meet you": do you have specific questions or a project in mind? |
| 12:16:05 | FromDiscord | <bosinski2023> (edit) "In reply to @pipeliner.osdev "I'm interesting in SIMD": go, i guess nbdy. has done a SIMD-accellerated parser so far. Maybe on the JSON-parsers uses SIMD - not sure. Use nimsimd - its awesome.. ... " added "And check out the simd-accellerated stuff by guzba, the creator of nimsimd. for inspiration." |
| 12:16:38 | FromDiscord | <pipeliner.osdev> In reply to @mratsim "do you have specific": um... I want to make cross platform SIMD library and SIMD accelerated multi text format parser and zip library |
| 12:17:26 | FromDiscord | <bosinski2023> In reply to @pipeliner.osdev "um... I want to": yeah, i think a simd zip-compression is around. |
| 12:17:30 | FromDiscord | <mratsim> In reply to @pipeliner.osdev "um... I want to": Mmmmh there was one I remember seeing, with a name like swiffer or something in C |
| 12:17:48 | FromDiscord | <pipeliner.osdev> In reply to @mratsim "Mmmmh there was one": I want to write it in nim |
| 12:18:15 | FromDiscord | <pipeliner.osdev> and Nim's most popular SIMD library is "nimsimd" but it is not cross-platform and abstracted |
| 12:19:36 | FromDiscord | <mratsim> In reply to @pipeliner.osdev "and Nim's most popular": I'm probably one of the most heavy user of SIMD in Nim community and I just write my own wrappers |
| 12:20:10 | FromDiscord | <mratsim> if I want abstraction I abstract at a level higher than SIMD usually |
| 12:21:04 | FromDiscord | <mratsim> For example I abstract at function level here: https://github.com/mratsim/constantine/tree/master/constantine/hashes/sha256 same input/output, but different SIMD depending on x86 or arm |
| 12:21:34 | FromDiscord | <bosinski2023> @mratsim hi, good you're around. I found a older discord-thread of yours, where you basically said 'I ve given up on `pinToCpu`- since i use the macOS amd64-cpu affinity-API, which works and surprisingly in my case - it does work without, as well ? Would you recommend to suggest a patch ? |
| 12:23:38 | FromDiscord | <mratsim> In reply to @bosinski2023 "<@570268431522201601> hi, good you're": pinToCPU doesn't work on android. is detrimental on Big.Little ARM, and also Intel CPU since 2021 or so with P-core and E-core distinction.↵↵unless you're writing code only for your hardware I just don't recommend it. Nowadays all the OS have improve hardware schedulers due to heterogeneous cores |
| 12:23:45 | FromDiscord | <[Next-System] systemblue> I'm making cross platform SIMD library |
| 12:24:15 | FromDiscord | <[Next-System] systemblue> https://github.com/systemblue333/Nim-SIMDLang |
| 12:24:16 | FromDiscord | <[Next-System] systemblue> heres |
| 12:24:41 | FromDiscord | <pipeliner.osdev> what a mess |
| 12:25:19 | FromDiscord | <pipeliner.osdev> what is the abstraction layer? https://media.discordapp.net/attachments/371759389889003532/1526927641339367505/Screenshot_20260715_132451.png?ex=6a58cdae&is=6a577c2e&hm=9f1091ade99e795d1523033b42b5b8a92a2708f5174ba2d5cbb3850ddaafb533& |
| 12:26:30 | FromDiscord | <bosinski2023> In reply to @mratsim "pinToCPU doesn't work on": ic, so did i get you right - there is not too much to gain, since OS-schedulers these days are competent and clever enough - that would cover my observations on a Disruptor-alike queue - works the same, with or without tagging the consumers and the producer.. |
| 12:27:23 | FromDiscord | <pipeliner.osdev> @[Next-System] systemblue where is the main logic of abstraction layer |
| 12:28:15 | FromDiscord | <[Next-System] systemblue> https://github.com/systemblue333/Nim-SIMDLang/blob/main/src/simdlang/simdlang.nim |
| 12:28:21 | FromDiscord | <[Next-System] systemblue> here |
| 12:28:52 | FromDiscord | <mratsim> sent a long message, see https://pasty.ee/LuqZbxtt |
| 12:30:03 | FromDiscord | <mratsim> In reply to @pipeliner.osdev "<@1436476641726435469> where is the": I think there is a diff in approaches, What @pipeliner.osdev has in mind is a abstraction layer with polyfill when native doesn't provide the SIMD while @[Next-System] systemblue exposes SIMD |
| 12:30:57 | FromDiscord | <mratsim> btw @pipeliner.osdev on SIMD support detection you might be interested in: https://github.com/mratsim/tattletale/blob/master/workspace/cpuplatforms/x86/cpudetect_x86.nim |
| 12:31:49 | FromDiscord | <[Next-System] systemblue> In reply to @mratsim "I think there is": it will be added↵↵this is not completed↵so SIMD instruction which is not provide as native instruction will be emulated by set of other instruction or scalar |
| 12:32:44 | FromDiscord | <mratsim> also @bosinski2023 it's super annoying to deal with physical vs virtual vs available cores, see: https://github.com/mratsim/constantine/blob/master/constantine/threadpool/primitives/topology.md |
| 12:35:09 | FromDiscord | <bosinski2023> @mratsim @pipeliner.osdev the cpuinfo-stuff is importants and there is a open-source foundation, that actively provides a public XML-db with comments and documentations on the register-values that go-in/come out of cpuinfo. I started smth, reading the XML-file, extract the relevant stuff for your cpu etc.. I think its more and more imortant to have smth. like that. And i found it easy to extended nimsimd/cpuInfo at bit.. |
| 12:36:53 | FromDiscord | <mratsim> In reply to @bosinski2023 "<@570268431522201601> <@1524980300172759070> the cp": I personnaly can't read XML :/. Gives me a serious allergic reaction |
| 12:38:40 | FromDiscord | <bosinski2023> In reply to @mratsim "I personnaly can't read": well, i dunno why they have not been cool with JSON os CSON, whatever. At least they don't put namespaces everywhere and even the on-board nim-xml-parser can read it... Maybe you'd have done it differently, me too 🙂 |
| 12:39:03 | FromDiscord | <mratsim> I use this for CPU feature detection https://en.wikipedia.org/wiki/CPUID↵↵but it's painful on x86 because for say CPU caches and topology like P/E cores AMD and Intel uses completely different flags |
| 12:41:46 | FromDiscord | <bosinski2023> In reply to @mratsim "I use this for": 100-percent, and BTW i found wikipedia to be a rich source for more complicated things. The db is a growing thing, that hopefully remans funded. It took me a afternoon and some Intel-technical papers to read the cache-equipement of my machine. But its nice.. |
| 12:43:24 | FromDiscord | <bosinski2023> (edit) "In reply to @mratsim "I use this for": 100-percent, and BTW i found wikipedia to be a rich source for more complicated things. The db is a growing thing, that hopefully remans funded. It took me a afternoon and some Intel-technical papers to read the cache-equipement of my machine. But its nice.. ... " added "and a very much mainstream i5 - i'm actually looking for a supercomputer which fits my budget :))" |
| 12:49:29 | * | termer quit (Remote host closed the connection) |
| 12:52:22 | * | termer joined #nim |
| 12:53:23 | * | beholders_eye joined #nim |
| 12:55:56 | FromDiscord | <enthus1ast.> should the (c) compiler not infer matching simd? |
| 12:56:39 | FromDiscord | <enthus1ast.> maybe we could write libraries that, when translated to c, form patterns that the c compiler will replace with simd 🙂 |
| 12:58:23 | FromDiscord | <enthus1ast.> also, so many rules for optimizing for low level are so opague, it seems there is a lot of "it depends" etc |
| 12:59:21 | FromDiscord | <enthus1ast.> (i have no clue btw) |
| 12:59:39 | FromDiscord | <bosinski2023> sent a long message, see https://pasty.ee/GxoxAXVK |
| 13:02:50 | FromDiscord | <enthus1ast.> and is simd actually used when not compiled with "-march=native" |
| 13:03:12 | FromDiscord | <enthus1ast.> maybe just an old baseline |
| 13:03:28 | FromDiscord | <enthus1ast.> (edit) ""-march=native"" => ""-march=native"?" |
| 13:05:42 | Amun-Ra | gcc may enable simd in -O2 and -O3 |
| 13:05:48 | FromDiscord | <bosinski2023> In reply to @enthus1ast. "and is simd actually": right, one may decide to rely on the compiler doing the right thing, and maybe look at the disassembly to check if the compiler did what you had hoped he would do. what mratsim (look at his linked markdown ) in certain situations wants to know is - what are the exact hardware-capabillities in order to (maybe even dynamically) adjust some some code.. |
| 13:06:25 | FromDiscord | <bosinski2023> (edit) removed "some" |
| 13:06:33 | FromDiscord | <enthus1ast.> In reply to @Amun-Ra "gcc may enable simd": but it cannot use newer stuff because -O2 is still portable between machines or not |
| 13:07:15 | FromDiscord | <bosinski2023> (edit) "dynamically)" => "dynamically, at runtime)" |
| 13:07:48 | FromDiscord | <tempestro> By default a compiler targets some extensions, which you can override |
| 13:08:01 | Amun-Ra | true, it may enable some vectorizations but I don't remember which ones (mainly tree loop vecotizations and slp ones) |
| 13:08:39 | Amun-Ra | iirc it won't emit avx2 instructions unless -march=native, -mavx2, etc is used |
| 13:12:11 | FromDiscord | <bosinski2023> In reply to @mratsim "also <@754284517316886598> it's super": I'm always happy when the Pros publish smth. like this https://github.com/Asc2011/counters which allows me use perfomance-counter on macOS with Nim and not having to use XCode.. |
| 13:12:50 | FromDiscord | <bosinski2023> (edit) "In reply to @mratsim "also <@754284517316886598> it's super": I'm always happy when the Pros publish smth. like this https://github.com/Asc2011/counters which allows me use perfomance-counter on macOS with Nim and not having to use XCode.. ... " added "that is by the courtesy of Lemire and friends.." |
| 13:20:30 | * | skippy8 joined #nim |
| 13:26:25 | * | beholders_eye quit (Ping timeout: 245 seconds) |
| 13:32:09 | * | skippy8 quit (Ping timeout: 265 seconds) |
| 13:35:01 | * | skippy8 joined #nim |
| 13:41:21 | * | skippy8 quit (Ping timeout: 243 seconds) |
| 14:00:05 | * | skippy8 joined #nim |
| 14:00:45 | FromDiscord | <mratsim> In reply to @enthus1ast. "should the (c) compiler": it should, but compilers are bad at non-straightforward simd. |
| 14:02:46 | FromDiscord | <mratsim> In reply to @bosinski2023 "I'm always happy when": Due to how ARM works, it's hard to get perf counters working without root. There are instructions that read counter registers with EL0, EL1, EL2 privileges |
| 14:11:48 | * | skippy8 quit (Ping timeout: 264 seconds) |
| 14:30:47 | FromDiscord | <bosinski2023> In reply to @mratsim "Due to how ARM": ik, and then its gated and hidden behind some eff framework, but this performace-counters thingy works without me having XCode on my laptop in front of me, that was designed for having 27-inches of viewing real-estate 🙂 The ugly truth is, they have forgotten to include a working thunderbolt-port - bad Lenovo, so bad. During testing i'm ok to use sudo - thats fine 🙂 |
| 14:32:20 | FromDiscord | <bosinski2023> (edit) "In reply to @mratsim "Due to how ARM": ik, and then its gated and hidden behind some eff framework, but this performace-counters thingy works without me having XCode on my laptop in front of me, that was designed for having 27-inches of viewing real-estate 🙂 The ugly truth is, they have forgotten to include" => "sent" | "working thunderbolt-port - bad Lenovo, so bad. During testing i'm ok to use sudo - thats fine 🙂" |
| 15:18:32 | * | lumidify quit (Quit: leaving) |
| 15:20:26 | * | lumidify joined #nim |
| 16:22:24 | * | Freneticks quit (Ping timeout: 245 seconds) |
| 16:33:08 | * | Freneticks joined #nim |
| 17:10:58 | FromDiscord | <im_rob> sent a long message, see https://pasty.ee/NthZVYNV |
| 17:10:59 | FromDiscord | <im_rob> https://github.com/rrenode/goveeLan |