00:12:47 | * | PrimHelios joined #nim |
00:18:32 | * | wildtrees quit (Quit: Leaving) |
00:29:20 | * | btop quit (Ping timeout: 272 seconds) |
01:07:00 | * | btop joined #nim |
01:13:17 | FromDiscord_ | <treeform> $ |
01:13:36 | FromDiscord_ | <DeltaPHC> I was about to ask if Nim as the concept of zero-sized types, but then I went on the playground and verified that it does indeed, heh |
01:13:41 | FromDiscord_ | <DeltaPHC> *has |
01:22:49 | FromDiscord_ | <treeform> why would you need that? |
01:27:40 | * | owl_000 joined #nim |
01:29:18 | FromDiscord_ | <DeltaPHC> Well, I'm unsure yet how useful it is in Nim specifically, but in another language I use it as a type system handle for generics. If you have an object like `StateMachine[T]`, that T can be a zero-size type of, for example, `InitialState`, `SomeOtherState`, etc. This way, you can store a form of state at the type level while keeping the same data. |
01:29:18 | FromDiscord_ | <DeltaPHC> |
01:29:18 | FromDiscord_ | <DeltaPHC> Then, you can have procedures that specifically take a `StateMachine[SomeOtherState]`. If the user can provide this type, this means that the data is guaranteed to be in a certain state, and so you can reduce runtime checks that way |
01:32:07 | FromDiscord_ | <DeltaPHC> It works better in a language like Rust, for the reason that you can have functions there that "consume" (take ownership of) a type where the compiler guarantees that it'll never be used again. I know Nim is headed in that direction, though |
01:44:49 | * | ng0_ joined #nim |
01:46:08 | FromDiscord_ | <DeltaPHC> Something like this: https://play.nim-lang.org/#ix=1Teh |
01:46:38 | * | ng0_ quit (Client Quit) |
01:47:44 | * | ng0 quit (Ping timeout: 260 seconds) |
02:05:05 | * | darithorn joined #nim |
02:21:36 | * | vlad1777d joined #nim |
02:42:58 | * | btop quit (Ping timeout: 272 seconds) |
02:54:40 | * | btop joined #nim |
02:54:53 | * | laaron quit (Remote host closed the connection) |
03:00:39 | * | NimBot joined #nim |
03:05:02 | * | laaron joined #nim |
03:31:10 | shashlick | @leorize - trying neovim on ubuntu, v0.3.8, i just get "nimsuggest is not running for this project" |
03:36:02 | * | btop quit (Quit: leaving) |
03:48:39 | * | darithorn quit (Quit: Leaving) |
03:50:27 | * | chemist69 quit (Ping timeout: 264 seconds) |
03:52:06 | * | chemist69 joined #nim |
04:07:40 | * | skrylar[m] scrolls the backlog and sees the display id one |
04:07:50 | skrylar[m] | wikipedias hatred of primary sources has always amused me |
04:08:01 | skrylar[m] | "don't listen to people who know what they are talking about" good policy. |
04:12:52 | * | vlad1777d quit (Ping timeout: 248 seconds) |
04:43:22 | FromGitter | <Obround> How do you forward declare a proc with its return type set to `auto`? This code des not work: |
04:47:37 | * | owl_000 quit (Ping timeout: 250 seconds) |
04:50:29 | skrylar[m] | how would that even work |
04:51:43 | FromGitter | <Obround> How do you forward declare a proc with its return type set to `auto`? This code does not work: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d60c25f3c1aba311bc03977] |
05:15:29 | * | owl_000 joined #nim |
05:15:35 | * | owl_000 left #nim (#nim) |
05:19:52 | * | nif_ quit (Quit: ...) |
05:20:01 | * | nif joined #nim |
05:32:38 | * | owl_000 joined #nim |
05:53:07 | * | narimiran joined #nim |
06:16:55 | * | laaron quit (Remote host closed the connection) |
06:18:39 | * | solitudesf joined #nim |
06:20:33 | * | dddddd quit (Remote host closed the connection) |
06:25:13 | * | laaron joined #nim |
06:32:35 | FromGitter | <zacharycarter> in an attempt to wrap C++ code - I'm getting these strange errors |
06:32:48 | FromGitter | <zacharycarter> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d60da10dbf5ae2d42b5eb04] |
06:33:14 | FromGitter | <zacharycarter> Not sure where the `Marker_` is coming from |
06:33:38 | FromGitter | <zacharycarter> One of the objects I'm wrapping is an interface declared like - ⏎ ```struct __declspec(novtable) AllocatorI``` |
06:33:54 | FromGitter | <zacharycarter> and then I have another class that inherits from that |
06:34:51 | FromGitter | <zacharycarter> `Marker_bx::DefaultAllocator` keeps ending up in my generated C++ code though... |
06:36:44 | FromGitter | <awr1> @Obround make an issue, maybe? or use code reordering |
06:46:38 | leorize | shashlick: you have nimsuggest installed, right? |
06:55:49 | * | narimiran quit (Remote host closed the connection) |
07:00:00 | * | gmpreussner quit (Quit: kthxbye) |
07:00:18 | * | nsf joined #nim |
07:02:59 | owl_000 | how to use nimpretty, in cmd it is not recognizable. on the other hand in nim/bin directory there is no nimpretty.exe |
07:03:00 | FromGitter | <gogolxdong> Anyone met the following nimble error iof recent version? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d60e124be3a8a311ad9d65f] |
07:04:48 | * | gmpreussner joined #nim |
07:05:05 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
07:05:35 | * | laaron joined #nim |
07:22:46 | lqdev[m] | owl_000: nimpretty does not come installed when you use choosenim, for some reason. you have to compile it manually |
07:22:59 | lqdev[m] | same goes for finish.exe |
07:30:00 | FromGitter | <zacharycarter> if I use the compile pragma to compile some C++ code - I should need to do any further linking steps to importcpp symbols defined in the C++ source I'm compiling - is that correct? |
07:30:04 | FromGitter | <zacharycarter> I should just be able to importcpp them? |
07:32:31 | * | gangstacat quit (Quit: Ĝis!) |
07:37:40 | * | nif quit (Quit: ...) |
07:37:50 | * | nif joined #nim |
07:40:41 | FromGitter | <zacharycarter> ah - figured it out, I wasn't compiling the cpp file that was defined in, yay unblocked on this a bitr |
07:44:16 | * | terps joined #nim |
07:47:07 | * | ng0 joined #nim |
08:48:31 | * | aq60 quit (Ping timeout: 260 seconds) |
08:49:11 | * | gangstacat joined #nim |
08:50:32 | FromGitter | <zacharycarter> sweet - I got bimg working :D |
08:52:48 | FromGitter | <zacharycarter> https://gist.github.com/zacharycarter/6481a1e67c4d17b4a6114f18150be8ff |
08:53:51 | FromGitter | <zacharycarter> now I should be able to continue on with this terrain example: https://bkaradzic.github.io/bgfx/examples.html#tess |
08:54:07 | * | terps quit (Ping timeout: 276 seconds) |
08:58:12 | * | Minimisthupper joined #nim |
09:01:35 | * | Minimisthupper quit (Client Quit) |
09:06:05 | * | Vladar joined #nim |
09:09:38 | * | Ven`` joined #nim |
09:11:16 | * | krux02 joined #nim |
09:28:19 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
09:28:25 | * | shomodj joined #nim |
09:31:34 | * | nsf quit (Quit: WeeChat 2.5) |
09:34:05 | * | shomodj quit (Read error: Connection reset by peer) |
09:34:35 | * | shomodj joined #nim |
09:36:55 | * | terps joined #nim |
09:56:31 | * | vegai joined #nim |
10:00:50 | * | krux02 quit (Remote host closed the connection) |
10:17:10 | * | terps quit (Ping timeout: 246 seconds) |
10:25:53 | * | terps joined #nim |
10:39:00 | * | terps quit (Ping timeout: 248 seconds) |
10:46:14 | * | vegai quit (Disconnected by services) |
10:47:53 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
10:48:45 | * | shomodj joined #nim |
10:55:18 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
11:00:38 | * | solitudesf- joined #nim |
11:02:19 | * | solitudesf- quit (Client Quit) |
11:02:38 | * | solitudesf- joined #nim |
11:02:57 | * | solitudesf quit (Ping timeout: 245 seconds) |
11:12:33 | * | Trustable joined #nim |
11:26:06 | * | Trustable quit (Remote host closed the connection) |
11:46:06 | * | nsf joined #nim |
11:48:15 | * | owl_000 left #nim ("Leaving") |
11:48:40 | * | owl_000 joined #nim |
12:06:24 | * | theelous3 joined #nim |
13:03:12 | * | laaron quit (Remote host closed the connection) |
13:04:45 | * | laaron joined #nim |
13:05:36 | * | endragor joined #nim |
13:21:54 | * | Ven`` joined #nim |
13:21:58 | * | aq60 joined #nim |
13:37:41 | * | livcd quit (Remote host closed the connection) |
14:14:47 | * | laaron quit (Remote host closed the connection) |
14:16:59 | * | nif quit (Quit: ...) |
14:17:08 | * | nif joined #nim |
14:19:07 | * | endragor quit (Remote host closed the connection) |
14:22:20 | * | laaron joined #nim |
14:22:43 | shashlick | @leorize yes I was using latest devel |
14:25:49 | * | endragor joined #nim |
14:29:42 | Zevv | is it in your path, can you just run "nimsuggest" on the command line? |
14:34:52 | * | laaron quit (Remote host closed the connection) |
14:37:21 | * | vlad1777d joined #nim |
14:38:33 | * | laaron joined #nim |
14:53:50 | * | owl_000 quit (Ping timeout: 272 seconds) |
14:56:28 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
14:58:02 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
14:58:39 | * | laaron joined #nim |
14:59:48 | * | Ven`` joined #nim |
15:03:25 | * | solitudesf- quit (Quit: Leaving) |
15:03:44 | * | solitudesf joined #nim |
15:06:37 | * | Ven`` quit (Ping timeout: 246 seconds) |
15:13:56 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
15:14:51 | * | laaron joined #nim |
15:15:36 | * | laaron quit (Remote host closed the connection) |
15:19:47 | * | laaron joined #nim |
15:23:06 | * | laaron quit (Client Quit) |
15:23:49 | * | laaron joined #nim |
15:26:06 | * | nsf quit (Quit: WeeChat 2.5) |
15:42:07 | * | endragor quit (Remote host closed the connection) |
15:45:27 | shashlick | Ya |
15:51:04 | * | vlad1777d quit (Remote host closed the connection) |
15:53:20 | * | vlad1777d joined #nim |
15:53:32 | * | owl_000 joined #nim |
15:53:51 | * | owl_000 left #nim (#nim) |
15:54:04 | * | owl_000 joined #nim |
15:55:55 | * | owl_000 quit (Client Quit) |
15:59:04 | * | vlad1777d quit (Ping timeout: 272 seconds) |
16:07:13 | * | aq60 quit (Remote host closed the connection) |
16:10:02 | Zevv | and do you see anything when checking for :messages? |
16:11:04 | * | vlad1777d joined #nim |
16:15:47 | shashlick | I'll check it out |
16:16:44 | shashlick | Sometimes it says nimsuggest exited with 0 on exit but doesn't do anything for the project and gives the message that not running for this project |
16:16:54 | * | darithorn joined #nim |
16:17:01 | shashlick | Was hoping I could use it at least for Linux |
16:20:36 | shashlick | New nimterop feature in test - https://github.com/nimterop/nimterop/blob/v020/nimterop/build.nim#L498 |
16:20:41 | shashlick | Looking for feedback |
16:21:43 | shashlick | Here's a sample header - https://github.com/nimterop/nimterop/blob/v020/tests/lzma.nim#L11 |
16:22:18 | shashlick | And how to use - https://github.com/nimterop/nimterop/blob/v020/tests/getheader.nims#L23 |
16:22:29 | leorize | shashlick: what file did you test it on? |
16:23:05 | shashlick | I tried a few different nims and a nim files |
16:23:21 | leorize | nimscript doesn't work with nimsuggest |
16:28:27 | shashlick | Ok I'll check messages with a Nim file and get back |
16:28:39 | shashlick | Any feedback on the nimterop feature? |
16:29:52 | * | dddddd joined #nim |
16:30:59 | * | krux02 joined #nim |
16:31:26 | leorize | it's a nice feature |
16:32:00 | leorize | nimterop is on the verge of having a package builder integrated though :P |
16:33:09 | * | narimiran joined #nim |
16:33:23 | leorize | I think you can build an object/tuple instead though |
16:33:50 | leorize | instead of creating `const xxxPath` and `const xxxLDir` |
16:34:18 | leorize | also, are you sure that static params are safe to use now? |
16:34:45 | leorize | the last time I used them they got corrupted at a random position within the macro |
16:42:50 | shashlick | They have worked fine so far, but I'm still debugging to get it working on Travis across Nim versions |
16:42:59 | shashlick | Still some ways from osx as well |
16:43:09 | shashlick | But probably not related to static |
16:43:46 | shashlick | I'm calling builders, is that a builder too? :) |
16:43:59 | shashlick | It detects the builder and deals with it |
16:44:27 | leorize | well that's pretty much how people packages software :P |
16:44:53 | shashlick | Not sure I get your object / tuple feedback |
16:45:12 | leorize | https://github.com/nimterop/nimterop/blob/2c1d8d3bd8e25e331cfd58e17354cd1dc306e5a4/nimterop/build.nim#L518-L520 |
16:45:23 | shashlick | You need the const to be used in the following cimport call |
16:45:37 | shashlick | Considering it is a macro, I cannot return values |
16:45:52 | leorize | you can? |
16:46:14 | leorize | well I'm pretty sure Zevv's managed to do that |
16:46:42 | shashlick | I'm creating defines with the header name so need to generate ast for that |
16:47:03 | shashlick | And that means I have to return a nimnode |
16:47:48 | shashlick | See line 557 |
16:49:53 | shashlick | Any feedback on the api signature or feature in general |
16:50:37 | leorize | the feature is great |
16:50:58 | leorize | personally I'd like it if you can generate {.compile.} calls :P |
16:52:59 | leorize | shashlick: since everything runs at compile-time, do you really need to generate code that do "when defined" checks? |
17:03:35 | shashlick | Well how do I check for defines without hard coding |
17:04:28 | shashlick | The nimterop code has to be generic but I don't want the wrapper writer to have to specify too much |
17:06:08 | shashlick | Only way I could generate the defines to check was this way |
17:06:39 | shashlick | In fact, this way, the wrapper can support a variety of ways but end user can pick a specific one with defines |
17:06:39 | * | krux02 quit (Ping timeout: 264 seconds) |
17:06:56 | shashlick | But that's why I'm asking cause I wonder if there's a better or simpler way |
17:08:32 | leorize | I'm pretty sure defined() takes an indent nimnode |
17:09:01 | leorize | ident* |
17:10:07 | leorize | hmm, it doesn't :/ |
17:11:58 | * | elrood joined #nim |
17:14:06 | shashlick | I prefer quote since it is readable |
17:14:56 | Zevv | I didnt return values but stored them in .compiletime. vars to save state over macro calls |
17:15:22 | Zevv | that took me three weeks because I did not know of the existence of .compileTime. vars :/ |
17:15:51 | shashlick | So I can make them var instead of const |
17:17:54 | Zevv | I assumed that - because normal procs just work at compile time also - normal vars should work at compile time as well. but it seems they dont unless you mark them so epxlicitly |
17:18:15 | Zevv | which in hindsight kind of makes sense, but was not really obvious to me |
17:19:01 | Zevv | so make them var {.compileTime.} |
17:38:09 | shashlick | @leorize - regargin {.compile.} calls |
17:38:11 | shashlick | regarding |
17:38:24 | shashlick | that's what i was doing for all other wrappers i've worked on |
17:38:38 | shashlick | and it was hard and tedious but was cool to make a static binary with no dependencies |
17:38:45 | shashlick | but the effort does not scale |
17:39:02 | shashlick | and with nimarchive, i hit a wall where it compiled but crashed |
17:39:11 | shashlick | and i didn't see the crash with a static link to a .a file |
17:42:57 | * | laaron quit (Remote host closed the connection) |
17:49:57 | * | laaron joined #nim |
18:06:57 | * | livcd joined #nim |
18:07:23 | * | krux02 joined #nim |
18:21:36 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
18:22:15 | * | laaron joined #nim |
18:35:54 | * | elrood quit (Remote host closed the connection) |
18:48:33 | * | nsf joined #nim |
19:08:54 | * | snooptek quit (Remote host closed the connection) |
19:09:18 | * | Vladar quit (Remote host closed the connection) |
19:18:55 | * | actuallybatman joined #nim |
19:23:22 | * | endragor joined #nim |
19:25:14 | * | wildtrees joined #nim |
19:52:48 | Cadey | dom96: i'm trying to make a jester app on a custom port, but i'm getting this error: ... /home/cadey/code/wat/src/wat.nim(175, 3) Error: 'port' cannot be assigned to |
19:52:51 | Cadey | uploading code for you, sec |
19:53:30 | Cadey | https://github.com/Xe/wat/blob/master/src/wat.nim#L174-L175 |
19:54:55 | dom96 | try putting it above `routes` |
19:56:35 | Cadey | same error dom96 |
19:57:34 | Cadey | using jester 0.4.3 |
19:58:16 | * | endragor quit (Remote host closed the connection) |
19:58:41 | dom96 | Cadey, can you check if this works? https://github.com/dom96/jester/blob/master/tests/alltest.nim#L17 |
19:59:40 | Cadey | nope |
19:59:44 | Cadey | it doesn't work |
20:01:45 | Cadey | port = Port(5939) |
20:01:50 | Cadey | still get the same error |
20:01:56 | Cadey | should this before routers too? |
20:02:26 | Cadey | okay it works before the routers |
20:03:02 | Cadey | i don't know if this is a bug in jester or not |
20:03:54 | dom96 | routers creates its own settings block if it doesn't detect one AFAIK |
20:04:01 | dom96 | and it probably generates it as a `let` |
20:04:49 | Cadey | ah |
20:05:04 | Cadey | Araq: how would i use ormin across multiple nim modules? |
20:05:22 | Cadey | dom96: it works now, thanks |
20:05:38 | dom96 | Cadey, please make an issue for this |
20:05:43 | Cadey | wull do |
20:05:46 | Cadey | i'm working on the jester stuff while making a fairly complicated exmaple |
20:09:03 | Cadey | dom96: please take a look: https://github.com/dom96/jester/issues/209 |
20:09:22 | dom96 | looks good, thanks |
20:10:34 | Cadey | no problem |
20:23:13 | FromGitter | <Varriount> Well... This is certainly interesting: https://www.reddit.com/r/programming/comments/cus0zu/a_3mil_downloads_per_month_javascript_library/ |
20:29:20 | FromGitter | <awr1> has anyone ever asked if we could get the `not nil` annotation on `distinct pointer` types? |
20:30:21 | FromGitter | <mratsim> not nil is a bit tricky to work with ... there is always one step where the compiler cannot prove not nil ... |
20:30:22 | FromGitter | <awr1> i've got a library i'm binding too with a lot of opaque handles so I'm making them `distinct pointer` to avoid any wrongful type messiness |
20:31:08 | FromGitter | <awr1> but `not nil` doesn't work on distinct so I'm wondering if I should just make them `ptr` to some...hidden type thing? |
20:31:20 | FromGitter | <awr1> *binding to |
20:32:07 | * | narimiran quit (Ping timeout: 246 seconds) |
20:32:11 | FromGitter | <awr1> alternatively I could use `Option`, but `Option` probably doesn't do the nullptr optimization for distinct pointers |
20:34:05 | FromGitter | <mratsim> oh |
20:34:38 | FromGitter | <mratsim> I think not nil should work on distinct and Option should also do the null pointer optimisation for distinct pointer |
20:35:37 | FromGitter | <awr1> should I make an issue I guess? |
20:36:33 | FromGitter | <mratsim> Yes, note it might probably be impossible to implement without reworking distinct type vs bind many due to reusing the same keyword for 2 different concepts: https://github.com/nim-lang/RFCs/issues/153 |
20:36:40 | FromGitter | <mratsim> note that* |
20:37:15 | FromGitter | <awr1> the `Option` thing can probably be easily fixed, I think @timotheecour or someone else made that `distinctBase()` macro (or something along the lines of that) that can be used to acquire the root type |
20:37:48 | Araq | type Foo = ptr object |
20:38:02 | Araq | is how you wrap opaque pointers, not with 'distinct' |
20:38:40 | FromGitter | <awr1> hmm! didn't know you could do that |
20:38:40 | FromGitter | <awr1> thanks |
20:41:17 | FromGitter | <mratsim> btw, regarding https://github.com/nim-lang/Nim/pull/11816, thoughts on adding the enhancements in different phases? |
20:41:49 | FromGitter | <awr1> oh crap i need to work on that lol. i've been busy as of recent |
20:42:13 | FromGitter | <awr1> yeah that's a good idea |
20:43:50 | FromGitter | <mratsim> just the x86 stuff would help me not having to submodule cpuinfo in all my low-level repo :P https://github.com/mratsim/weave/tree/master/benchmarks |
20:44:09 | FromGitter | <awr1> you probably want the x86 features soon. ARM is trickier because `/proc/cpuinfo` needs to be probed, which doesn't have a perfect Windows analogue (i.e. IsProcessorFeaturePresent()) |
20:44:58 | Cadey | dom96: should before filters in subroutes be bubbling up to the parent? |
20:45:10 | Cadey | subrouters* |
20:45:29 | FromGitter | <awr1> and I mention Windows on ARM since supposedly WIndows on ARM laptops are potentially going to be a thing in the next couple of years |
20:45:29 | FromGitter | <mratsim> I think Windows ARM is not really a priority :P |
20:45:37 | FromGitter | <awr1> not a priority right now, i agree |
20:45:45 | FromGitter | <mratsim> Windows Phones were on ARM? |
20:45:49 | FromGitter | <awr1> but it could in the future |
20:45:51 | FromGitter | <awr1> they were |
20:46:17 | FromGitter | <awr1> microsoft did this new windows 10 on ARM thing where it's not the cut down store-only .NET stuff |
20:46:35 | FromGitter | <mratsim> Facebook's CPUInfo only considers Android, Iphone, Linux: https://github.com/pytorch/cpuinfo/tree/master/src/arm |
20:46:46 | FromGitter | <awr1> and it is full native Win10, plus i386 emulation built in WoW64 |
20:47:29 | FromGitter | <awr1> i mean it's not relevant right now, but the future could be weird |
20:47:35 | FromGitter | <awr1> idk |
20:48:27 | Araq | Windows on ARM is old stuff |
20:49:19 | Cadey | https://gist.github.com/Xe/8f5ca6baa68186247433a7fcfff71b50 dom96 like this |
20:49:20 | FromGitter | <awr1> @Araq not anymore https://mspoweruser.com/at-least-4-snapdragon-8cx-windows-10-on-arm-laptops-coming-to-europe-next-year/ |
20:50:17 | FromGitter | <awr1> microsoft scrapped the old windows sandboxed .NET-only ARM model from a few years back and came out with this rather recently |
20:50:38 | FromGitter | <mratsim> I expect they will introduce some hardware info abstraction |
20:51:04 | FromGitter | <mratsim> parsing proc/cpuinfo is a bit meh |
20:51:31 | FromGitter | <awr1> and considering apple wants to move their laptops to ARM too, the industry being shaked up by this is certainly a possibility |
20:51:37 | FromGitter | <mratsim> 1) ideally you don't want to allocate for such a low-level feature and working with strings is not ideal |
20:51:44 | FromGitter | <mratsim> + |
20:52:08 | FromGitter | <awr1> i think there is a way you can get cpu features on linux without proc cpuinfo |
20:53:55 | Araq | iofnctl |
20:54:21 | FromGitter | <awr1> ARM makes this annoying because all their "cpu feature" stuff is hidden behind supervisor-level instructions |
20:56:02 | dom96 | Cadey, that's a good question |
20:56:14 | Cadey | i found it surprising personally |
20:56:17 | dom96 | I think they should only apply for /api |
20:56:24 | Cadey | i'll go file another bug |
20:56:52 | FromGitter | <awr1> i'll see if I can get the cpuinfo x86 features ready sometime today or tomorrow. i don't know if i can do tests for it since its hardware sensitive |
20:56:58 | * | shomodj joined #nim |
20:57:33 | FromGitter | <mratsim> I also had a look into hwloc from the OpenMPI project (https://github.com/open-mpi/hwloc/tree/master/hwloc) because it's the only one that supports NUMA and also detect hyperthreading siblings (which are very annoying in high-performance computing) |
20:57:41 | FromGitter | <mratsim> but it's quite complex |
20:57:53 | Cadey | https://github.com/dom96/jester/issues/210 |
20:58:25 | * | shomodj quit (Client Quit) |
20:58:32 | FromGitter | <awr1> you can check for HTT/thread topology with cpuid in x86, but i think the "preferred way" is to just use the OS |
20:59:09 | FromGitter | <awr1> since the OS can turn off HW threads in certain configurations if it really wants to |
21:00:39 | * | al_ joined #nim |
21:00:54 | * | shomodj joined #nim |
21:01:20 | FromGitter | <mratsim> AFAIK it's a mess with cpuid :p Intel had various changes between pentium 4, Nehalem and Sandy bridge+ |
21:02:36 | FromGitter | <mratsim> but my main need is knowing on a 4 cores machine if cores {0, 1} and {2, 3} are siblings or if its cores {0, 2} and {1, 3} |
21:03:06 | Araq | write some startup logic to detect it at runtime :P |
21:03:47 | FromGitter | <awr1> i remember a video IBM had demonstrating SMT performance on POWER on some linux system and they swtiched from 2 SMT threads per core to 8 SMT threads to show off the performance increase, so i assume that's just a feature that OSs can do apparently. although exactly *why* one would need to turn off hardware threads while the system is up is beyond me |
21:04:27 | FromGitter | <mratsim> Hyperthreading means that the logical cores share L1/L2 cache, so with HT those are 2x smaller on a workload that can make use of all the cache. It also means that memory bandwidth is shared. And obviously HPC workloads are almost all memory bandwidth bound ... |
21:04:55 | FromGitter | <mratsim> Xeon Phi have 4 Hyperthread siblings per physical core |
21:05:44 | Cadey | mratsim: this smells like premature optimization |
21:05:58 | FromGitter | <mratsim> It's not |
21:06:36 | FromGitter | <mratsim> It's state-of-the art optimization and making regular Nim code faster than C/FOrtran/C++ |
21:06:51 | FromGitter | <mratsim> and assembly |
21:07:51 | FromGitter | <mratsim> You can read the papers and the comments interleave with my code here: https://github.com/numforge/laser/blob/master/laser/primitives/matrix_multiplication/gemm_tiling.nim#L12-L30 |
21:08:13 | FromGitter | <awr1> are "hot-pluggable CPUs" a thing in the HPC space? |
21:08:23 | FromGitter | <mratsim> I need to take into account L1 cache, L2 cache, TLB sizes and number of registers to get the max performance |
21:08:52 | Cadey | dom96: based on what i'm reading, couldn't this be fixed by having the before and after filters respect the prefix in the extend command handler? https://github.com/dom96/jester/blob/master/jester.nim#L1076-L1107 |
21:09:51 | FromGitter | <mratsim> @awr1, not sure, I didn't try "true HPC" with a cluster of thousands of CPUs :P |
21:10:21 | FromGitter | <mratsim> I know that in CERN you reserve a timeslice and some CPU so you basically have a VM |
21:20:50 | * | endragor joined #nim |
21:26:18 | * | endragor quit (Ping timeout: 245 seconds) |
21:37:51 | * | al_ quit (Quit: al_) |
21:49:49 | * | solitudesf quit (Ping timeout: 246 seconds) |
22:00:03 | * | actuallybatman quit (Ping timeout: 245 seconds) |
22:07:05 | * | actuallybatman joined #nim |
22:07:36 | * | actuallybatman quit (Client Quit) |
22:13:31 | * | nsf quit (Quit: WeeChat 2.5) |
22:34:48 | * | actuallybatman joined #nim |
23:03:57 | * | krux02 quit (Remote host closed the connection) |
23:04:57 | * | actuallybatman quit (Remote host closed the connection) |
23:10:22 | * | actuallybatman joined #nim |
23:19:48 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:20:30 | * | couven92 quit (Read error: Connection reset by peer) |
23:21:37 | * | couven92 joined #nim |
23:37:27 | * | couven92 quit (Read error: Connection reset by peer) |
23:38:34 | * | couven92 joined #nim |
23:51:30 | * | couven92 quit (Read error: Connection reset by peer) |
23:52:29 | * | couven92 joined #nim |