00:04 karolherbst: mhh I think the ram is broken in my fermi laptop :/
00:04 karolherbst: meh
00:11 karolherbst: now that's funny, even with different RAM (which works great in my laptop usually) the laptop won't start right :/
00:13 karolherbst: looooool...
00:13 karolherbst: guess what, the AC adapter wasn't plugged in
00:13 karolherbst: ...
00:32 mwk: imirkin: so, fmac works as follows
00:33 mwk: if the third operand is +-0, it's a fmul.rn; therwise it's fmul.rz followed by fadd.rn
00:34 mwk: except that the intemediate result has wider exponent range and cannot overflow to inf / underflow to 0 until after the add
00:34 mwk: I guess they only have onepiece of round-to-nearest circuitry...
00:35 mwk: I'm still getting some errors, but they're all related to +-0 and underflows
00:41 karolherbst: weird stuff
00:55 karolherbst: mwk: did you check if the hw implementation works according to the IEEE 754-2008 fmac thing?
00:55 mwk: karolherbst: do you mean fma?
00:56 karolherbst: should be, right? or what do you mean by fmac?
00:56 karolherbst: ohh wait
00:56 mwk: floating-point multiply-accumulate
00:56 karolherbst: no
00:56 karolherbst: I mean fmac
00:56 karolherbst: :D
00:57 karolherbst: ahh right, the IEEE thingy doesn't contain fmac :/
00:57 karolherbst: right
00:57 mwk: as opposed to fma, which would be ffma, floating-point fused-multiply add
00:57 mwk: which this thing most definitely isn't
00:57 imirkin: also G80 was released in 2008, so probably not complying to any standards released that year
00:58 mwk: fma is older than that though
00:58 karolherbst: mwk: no, I meant fmac, I just thought the 2008 thing also describes fmac
00:58 mwk: and G80 is a 2006 child
00:59 karolherbst: mwk: but I read that the IEEE fma states that it is required that the hw only does one rounding
00:59 karolherbst: two roundings aren't allowed
00:59 mwk: yes
00:59 karolherbst: so I was thinking the same could apply to fmac
00:59 mwk: fmac does two roundings
01:00 karolherbst: mhh, k
01:01 karolherbst: then it's not fmac
01:01 karolherbst: or not directly fmac :/
01:02 karolherbst: strange
01:02 mwk: karolherbst: look, you got a reference for that "fmac" thing?
01:02 karolherbst: I am searching, but everything tells me that fma and fmac is the same
01:02 mwk: because the only IEEE operation I can think of is fma
01:02 mwk: and I've ruled that out several years ago
01:05 karolherbst: mwk: from the IEEE spec: "The idea behind a Multiply-Add ( or “ MAC ” for “ Multiply-Accumulate ” ) instruction is
01:06 karolherbst: they also mostly say FMAC
01:07 mwk: ah, annoying
01:07 mwk: I'll have to pick a different name then
01:07 karolherbst: ohh k
01:07 karolherbst: also the IEEE states one rounding
01:07 karolherbst: not two
01:08 karolherbst: so this fmac you found would be a non-compliant fmac then?
01:08 mwk: yep
01:08 karolherbst: k
01:08 karolherbst: would be still good to know where it complies and where not :D
01:09 mwk: karolherbst: told you, it's more or less a normal rounding mul followed by rounding add
01:09 karolherbst: mhh okay
01:09 mwk: with a few surprises
01:10 mwk: first one is, if third operand is 0, the mul rounds to nearest; otherwise, it rounds to zero (leaving the round to nearest circuit available for add, I suppose)
01:11 mwk: second one, the intermediate result has 24 bits of precision like a normal float, but the full range of exponents, so you don't get overflows/underflows until the addition
01:11 karolherbst: so, fma 0.5 0.7 3 is what?
01:11 karolherbst: ohh 0.7 is badly choosen :D
01:15 mwk: third one, the normalization step in add has to stop once you hit an output exponent of 1, once you hit it, go directly to the rounding step
01:16 mwk: if you normalize until normalized, then round, you'll get a different result
01:17 mwk: (it doesn't matter for normal add since once you get below exponent 0, you get to denormals, and rounding doesn't change anything)
01:17 mwk: ok, so now the only problem I have is getting the sign of 0s on output correct
01:20 karolherbst: what was cuda sm 1 again?
01:20 mwk: Tesla
01:20 karolherbst: k
01:20 karolherbst: because there is some fma docs in the cuda stuff for sm_1x
01:21 karolherbst: not much though
01:22 karolherbst: mwk: "fma.f32 requires sm_20 or higher." and "fma.f64 requires sm_13 or higher."
01:22 karolherbst: ...
01:22 karolherbst: somehow that sounds strange
01:22 mwk: yup
01:22 mwk: there's a simple explanation though
01:22 mwk: they made the G80 without a fma
01:23 karolherbst: ahh k
01:23 mwk: but when they made the fp64 unit for G200, they started anew and stuffed a fma in there
01:23 mwk: but didn't want to touch the fp32 one
01:24 karolherbst: I see
01:25 imirkin: mwk: btw, if you got a clever way of emulating rcp/rsq f64 with the g200 ops, let me know
01:25 karolherbst: mwk: how does that sound to you? "computes the product of a and b at double precision, and then the mantissa is truncated to 23 bits, but the exponent is preserved."
01:26 mwk: sounds like what I'm seeing
01:26 karolherbst: nice
01:26 mwk: ... except when second operand is 0
01:26 karolherbst: wait
01:26 mwk: er, third
01:26 karolherbst: "mad.f32 computes the product of a and b at double precision, and then the mantissa is truncated to 23 bits, but the exponent is preserved. Note that this is different from computing the product with mul, where the mantissa can be rounded and the exponent will be clamped. The exception for mad.f32 is when c = +/-0.0, mad.f32 is identical to the result computed using separate mul and add instructions. When JIT-compiled for SM 2.0 devices, mad.f32 is
01:26 karolherbst: implemented as a fused multiply-add (i.e., fma.rn.ftz.f32). In this case, mad.f32 can produce slightly different numeric results and backward compatibility is not guaranteed in this case."
01:26 karolherbst: maybe this helps?
01:27 karolherbst: this is for sm_1x:
01:30 mwk: karolherbst: that's a good one, actually
01:30 mwk: thanks
01:30 karolherbst: cuda docs for the rescue! :D
01:30 mwk: I have no idea what exactly went wrong, but I handled 0 results wrongly when third op was 0
01:32 mwk: actually, let's clean that function up
01:32 mwk: I'll just delegate to mul-add whenever I get *any* nan, inf, or 0
01:34 karolherbst: is there somehwere a good mapping of cuda sm to chipsets?
01:34 mwk: karolherbst: I'm not sure if it's written down anywhere
01:34 karolherbst: mhh
01:34 karolherbst: imirkin: sure the g200 can't do rcp?
01:34 karolherbst: ohh f64
01:35 mwk: 1x is Tesla, 2x is Fermi, 30 is GK10x, 35 is GK20x, 50 is Maxwell
01:35 karolherbst: imirkin: the cuda doc says there should be rcp.rn.f64 on sm_13
01:35 mwk: for Tesla, 10 is G80; 11 is G84, G86, G9x, 12 is G200, 13 is GT21x and MCPxx
01:35 mwk: karolherbst: there's not
01:35 karolherbst: mhh
01:35 hakzsam: https://en.wikipedia.org/wiki/CUDA (Supported GPUs table)
01:36 karolherbst: hakzsam: thanks :)
01:36 mwk: PTX docs are for a lie, for a big part
01:36 karolherbst: ohh k
01:36 karolherbst: because of emulation in software?
01:36 mwk: lots of the instructions are just expanded to long sequences
01:36 mwk: and by long, I mean they involve calls to 200LOC functions
01:36 mwk: rcp.rn.f64 is one of them
01:37 karolherbst: ...
01:37 karolherbst: useless
01:37 mwk: which is why I stopped looking at that doc a long time ago, even though it happens to have an actually useful description of mad.f32
01:37 karolherbst: rcp was 1/x right?
01:37 mwk: yep
01:38 karolherbst: imirkin: rsq: https://en.wikipedia.org/wiki/Fast_inverse_square_root
01:38 karolherbst: :D
01:39 mwk: karolherbst: yeah, one of my favorite algorithms...
01:39 karolherbst: best one there is
01:42 mwk: ugh
01:43 mwk: I cannot just defer to add-mul for all cases, big*big - inf is different..
01:43 karolherbst: :/
01:47 karolherbst: mwk: maybe if the difference isn't that big, there could be a variable like NV50_FAST_ARITH, which reduces accuracy, but improves performance by using instructions like that?
01:48 mwk: karolherbst: that instruction is *more* precise than add / mul combination
01:48 karolherbst: yeah but you said big*big-inf is odd
01:49 mwk: yup
01:49 mwk: compute it separately, and big*big overflows to inf, and inf-inf is NaN
01:49 mwk: use mad, and it immediately computes -inf
01:49 karolherbst: ohh right
01:52 karolherbst: is this a big problem though? :/
01:54 mwk: there are numeric algorithms out there where every difference from IEEE is a problem
01:54 mwk: that said, the big*big-inf issue is not one I'd be concerned about
01:55 mwk: the unreliable rounding mode for the mul is the bigger problem
01:56 mwk: anyhow
01:56 mwk: the test passes, let's spice it up
01:57 mwk: yep, still passing with modifiers
02:00 mwk: mad... for once, a fitting name
02:01 karolherbst: :D
02:37 KhazAkar: Hi all!
02:39 KhazAkar: I need to type "nvapeek 110100"?
02:42 karolherbst: 101000
02:43 KhazAkar: Btw - I can't use it -> "WARN: Can't probe 0000:01:00.1" "PCI Init failure!"
02:43 mwk: KhazAkar: sudo works wonders
02:44 KhazAkar: Ok,thanks. "00101000: 8f44ac1c"
02:44 karolherbst: thank you
02:46 KhazAkar: No problemo :P
02:46 KhazAkar: If something more is needed,just ask
02:48 KhazAkar: And how about my lid problem? On blob It doesn't exist
02:48 karolherbst: what lid problem?
02:49 KhazAkar: I close a lid on ~15 sec,then open it and screen don't Wake up. I need to fast close and open it again to have screen on
02:50 karolherbst: KhazAkar: did you check dmesg after it stays black?
02:50 KhazAkar: Not yet,wait,I need to remove blob and reboot notebook
03:01 KhazAkar: Checked dmesg - nothing
03:03 karolherbst: KhazAkar: can you increase the brightnes through /sys/class/backlight ?
03:04 karolherbst: I don't know how the nouveau provider is called, but there should be a subdirectory
03:04 KhazAkar: I have there acpi_video0 and nv_backlight folders
03:04 karolherbst: k, then check nv_backlight
03:04 karolherbst: and check the actual_brightness
03:05 KhazAkar: I cannot do echo on actual brightness
03:06 karolherbst: cat
03:06 KhazAkar: 0
03:06 karolherbst: k
03:06 karolherbst: and you have to echo into brightness
03:06 karolherbst: cat max_brightness > brightness
03:06 karolherbst: as root
03:06 KhazAkar: Now actual brightness is 100
03:07 KhazAkar: But nothing changed on the screen
03:07 karolherbst: mhh k
03:07 karolherbst: maybe acpi_video0 then
03:07 KhazAkar: Under acpi_video0 it changes
03:07 karolherbst: so the screen is back on?
03:08 KhazAkar: I have now screen back on,Then I make changes Under acpi_video0
03:08 karolherbst: k
03:08 KhazAkar: If Needed I can attach second screen then make it
03:08 karolherbst: I think you need to boot with "acpi_backlight=native" then
03:09 karolherbst: or acpi_backlight=video
03:09 karolherbst: not sure though
03:09 karolherbst: I think it is native though
03:09 karolherbst: KhazAkar: so then reboot with acpi_backlight=native
03:10 karolherbst: and see if that works without tinkering inside sysfs
03:10 KhazAkar: Ok,rebooting
03:10 karolherbst: KhazAkar: you should have also brightness keys on your laptop
03:10 karolherbst: fn+ something, right?
03:11 KhazAkar: yup,fn + Arrow up/down
03:11 karolherbst: and I suspect they didn't work yet?
03:11 KhazAkar: They worked
03:11 karolherbst: ohh k
03:11 karolherbst: then the problem might be somehwere else actually
03:11 KhazAkar: Because they're controlled via Dell_wmi module
03:12 karolherbst: ahhh
03:12 karolherbst: so on a hardware level
03:12 karolherbst: mhh k
03:12 karolherbst: because sometimes userspace has to fetch those keys
03:12 karolherbst: and then it depends on what acpi_backlight thing is selected
03:12 karolherbst: I have for example intel_backlight, which would be nv_backlight for you
03:12 karolherbst: but that doesn't work
03:13 karolherbst: which would be acpi_backlight=vendor
03:13 karolherbst: or was vendor the wmi thing?
03:13 karolherbst: ...
03:13 karolherbst: nvm
03:13 KhazAkar: I needed to bind Keys depended to control audio :p
03:13 KhazAkar: Because Debian do it right,siduction no :D
03:14 KhazAkar: With native Control don't work :D
03:14 karolherbst: those keys always causes some sort of troubles
03:14 karolherbst: I am happy that all important ones are working here
03:15 KhazAkar: So acpi_backlight=vendor?
03:15 karolherbst: native
03:15 KhazAkar: Native = not working Control,even with keys
03:16 karolherbst: then vendor
03:16 KhazAkar: I need to add acpi_osi line?
03:16 karolherbst: no
03:16 karolherbst: that acpi_osi line is bad hack essentially
03:17 KhazAkar: On some notebooks acpi_osi='Windows 2012' can help :p
03:17 karolherbst: yeah well
03:17 karolherbst: it still is a bad hack
03:18 KhazAkar: Sometimes It's needed to have Linux working properly :)
03:18 RSpliet: karolherbst: the bigger issue is that ACPI is a bad hack
03:18 karolherbst: :D
03:19 karolherbst: KhazAkar: yeah, because the firmware checks the kernel what it supports, and if something gos wrong the firmware messes up for no apperant reason
03:19 RSpliet:tends to approach ACPI with extreme pragmatism
03:19 karolherbst: RSpliet: and I thought ACPI should make everything so easy cause of unified API :D
03:19 karolherbst: well "API"
03:20 KhazAkar: With acpi_backlight=vendor worked like worked without that line :D
03:21 KhazAkar: About changing brightness of course
03:21 RSpliet: karolherbst: ACPI was designed anticipating the rise of bigger idiots
03:21 RSpliet: *not anticipating
03:21 KhazAkar: But It changed nothing about my lid problem, eh
03:21 karolherbst: mhh
03:22 karolherbst: things like that are just stupid
03:22 karolherbst: most ACPI issues only occur on some distributions because of some insane config
03:22 karolherbst: :/
03:22 KhazAkar: I always have hard to solve problems,eh :/
03:22 karolherbst: KhazAkar: anyway, that's no nouveau problem
03:22 RSpliet: there's BIOSes with faulty tables for Linux, KhazAkar: try all that acpi_osi stuff anyway
03:23 karolherbst: RSpliet: yeah, but the backlight controls are working
03:23 karolherbst: maybe the lid opened event doesn'T arive though?
03:23 RSpliet: throw everything at it you have, and see what sticks
03:23 KhazAkar: karolherbst So why with blob it works flawlessly?
03:23 karolherbst: KhazAkar: maybe because there is no nv_backlight thingy ;)
03:23 karolherbst: no idea though
03:23 karolherbst: such issues are just messy
03:23 RSpliet: karolherbst: nouveau has backlight control when necessary, but don't ask me about the specifics
03:24 RSpliet: (esp. on the bit where it needs to determine when it's "necessary")
03:24 karolherbst: RSpliet: do you know at which clock the gpu needs to have a different config for memory clocks?
03:24 karolherbst: RSpliet: like 2400MHz on gddr5 kepler where you start using the second pll
03:24 KhazAkar: With nouveau - after open lid no screen. With nlob - works like a charm :p
03:24 KhazAkar: s/nlob/blob
03:24 RSpliet: karolherbst: the first PLL on my board can only be configured to 300 or 600MHz, so I guess the answer is "always"
03:25 karolherbst: okay, so above 600MHz you have to do something else in addition?
03:25 karolherbst: or below 300
03:25 RSpliet: khazakar: does the machine suspend when you close the lid? does it wake up properly? got logs?
03:26 RSpliet: karolherbst: no, always
03:26 RSpliet: you can't make a 400MHz clock with one PLL
03:26 RSpliet: it's 300, or 600... check your VBIOS
03:26 karolherbst: ohhh k
03:26 RSpliet: (if it's GDDR5 that is, my sample size is 1)
03:26 KhazAkar: Dmesg clean,not suspend
03:26 karolherbst: nah mine is ddr3
03:26 RSpliet: check anyway, could be informative ;-)
03:27 karolherbst: RSpliet: you know what, I will clock down in 100MHz steps through coolbits :D
03:27 karolherbst: I did it a bit and only _one_ line changes in the SEQ script...
03:27 RSpliet: gl hf
03:27 RSpliet: check the resulting clocks too for a laugh
03:27 karolherbst: well, PMPLL.MCLK0_COEF changes
03:28 KhazAkar: I think its nouveau thing,because after connecting second screen "no signal"
03:28 RSpliet: KhazAkar: if you are running a 4.4 kernel, please file a bug for that over at the freedesktop bugzilla
03:29 KhazAkar: 4.4.0-towo1-siduction
03:29 RSpliet: our expert for that I'm afraid is Australian, so you'll have a hard time catching his attention on IRC ;-)
03:29 KhazAkar: It's like hardware switching off a card
03:30 KhazAkar: After fast close/open lid it works,but after it the "screen" apo appeares
03:31 KhazAkar: On dmesg only spam with unknown wmi event.
03:33 RSpliet: well, there's an important hint
03:33 karolherbst: KhazAkar: you might want to report those wmi events upstream
03:34 karolherbst: could be important ;)
03:34 karolherbst: I bet these are those lid events
03:34 KhazAkar: Sure,but it doesn't appear when I'm using blob driver ;_;
03:36 KhazAkar: It's like missing communicating
03:36 RSpliet: KhazAkar: whether it's a dell_wmi issue, a nouveau issue or a blob workaround of a broken ACPI we don't know, either way we need different eyes on it than karolherbst and me, because we're not the expert
03:36 RSpliet: so file a bug!
03:37 karolherbst: RSpliet: any idea how high ddr3 can be clocked?
03:37 RSpliet: no idea... 1GHz?
03:38 karolherbst: mhh nvidia-settings displays doubled clocks?
03:38 karolherbst: cause I am on 2100MHz
03:39 mupuf: has anyone tried to compile mesa with libdrm-git?
03:39 karolherbst: RSpliet: but yeah, 1GHz seems about right somewhat
03:40 karolherbst: maybe a bit more or less
03:41 karolherbst: KhazAkar: any you should state that suspend also doesn't work through closing lid
03:41 karolherbst: that's like the important part ;)
03:43 KhazAkar: It's like half suspend :D
03:44 karolherbst: well as long as ssh works, it isn't ;)
03:44 mwk: sooo... quadop and cvt
03:44 KhazAkar: It's locking the screen,not suspend :p
03:44 karolherbst: mhhhh
03:44 karolherbst: that's weird
03:45 karolherbst: that means the lid closed events arives somehow
03:45 karolherbst: well no clue then
03:45 KhazAkar: My notebooks are always "magic" under Linux
03:47 KhazAkar: Suspend makes more magic when external screen are connected :D
03:49 karolherbst: RSpliet: different configuration of ddr3 reclocking needed somewhere between 900 and 1000
03:49 karolherbst: ohh wait
03:49 karolherbst: there is other stuff too
03:49 karolherbst: wow, how nice
03:51 karolherbst: ahh, k
03:59 RSpliet: mupuf: I take it this means "no"
04:00 mupuf: RSpliet: hehe
04:01 mupuf: I must be doing something wrong
04:01 mupuf: Will have a look later
04:06 karolherbst: does it makes sense, that mem training is only needed when the timings are changing?
04:06 RSpliet: no
04:06 karolherbst: but it looks that way :/
04:07 karolherbst: 810 -> 900 MHz, no changed timings, no link training
04:07 RSpliet: for GT21x, memory training is done once, and once only
04:07 RSpliet: check what nouveau does there
04:07 karolherbst: 900 -> 1000 MHz, changed timings, link training
04:07 karolherbst: RSpliet: this is mem training right? https://gist.github.com/karolherbst/6280616f9678b98dcd57
04:07 RSpliet: no
04:07 karolherbst: ohh
04:07 karolherbst: what is it then?
04:08 RSpliet: no idea, but check the GDDR5 code for more details
04:08 karolherbst: k, first I will analyze my trace though
04:18 karolherbst: those waits are also important, right?
04:19 RSpliet: yes
04:56 codehotter: OK, I downgraded to kernel 4.3 and I still have display issues. This time with connectors with a display port icon, but they're the wide white plugs
04:57 codehotter: I don't have access to the hdmi display anymore. But I have much the same problems
04:57 codehotter: strange cursor behavior, computer seems slow, no output on one of the monitors
04:58 codehotter: Ah, the plug is apparently called "DVI"
04:58 codehotter: xrandr thinks it's HDMI
04:58 codehotter: again ,everything works fine in Windows
05:00 codehotter: karolherbst: your troubleshooting procedure was, close X, then ?
05:00 codehotter: Should I upgrade back to 4.4?
05:01 karolherbst: ohhh, did you had this issue with non working internal display after plugging in an external one?
05:01 karolherbst: or was it something else
05:06 codehotter: Internal display is always working
05:06 codehotter: Except for the fact that it appears sluggish and my cursor disappears unless I'm moving it
05:06 codehotter: (the cursor is always visible as soon as I unplug the external monitor)
05:07 codehotter: I have problems getting output on the external monitors
05:07 karolherbst: RSpliet: my findings so far: https://gist.github.com/karolherbst/6280616f9678b98dcd57 does anything looks familiar to you?
05:07 karolherbst: codehotter: ahh right
05:07 codehotter: sometimes if I move my cursor to the external monitor they multiply and I can make cursor fireworks
05:07 codehotter: it looks kind of cool
05:08 codehotter: I have 3 monitors in this setup, is that an acceptable configuration?
05:08 RSpliet: karolherbst: yes... well, I do believe the GDDR5 script contains more details than that
05:08 codehotter: internal, and 2 external, both connected via DVI
05:08 codehotter: one of them is recognized as DP-1-3 and the other as HDMI1
05:08 karolherbst: RSpliet: k
05:09 karolherbst: I also found some patterns in it, but nothing usefull yet
05:09 RSpliet: a lot of those if statements are misleading, as there's a "only write registers that actually change" check in the SEQ script gen
05:11 karolherbst: RSpliet: yeah I know, I have some more SEQ scripts I want to look at. I just wanted to start with the smaller steps to see some patterns in the values
05:11 karolherbst: but I have also big reclocks
05:12 RSpliet: I think you'll do yourself a big favour if you first read the current code, skipping over the if(mode == ?) parts (because they tend to contain stale static not-so-useful reg writes)
05:13 RSpliet: I think "mode" was meant to have the connotation of "PLL or just postdiv", but the name "mode" is so non-descriptive that anything I wrote instead check for whether the new mode has a PLL coef
05:13 RSpliet: *checks
05:13 karolherbst: yeah there is also a mode for kepler gddr5 which decides if you have one pll or two
05:14 karolherbst: well for kepler in general I think
05:14 RSpliet: the name is rubbish ;-)
05:15 codehotter: Can I just ask if this setup is supposed to work and a configuration issue or if it's not supported yet? I have intel card, and GK107GLM, and I want to use my laptop display and 2 external monitors using xrandr
05:18 karolherbst: it should usually work
05:18 karolherbst: but as always, there can be bugs
05:20 codehotter: I think I can disable the intel card in the bios. Would that help?
05:21 karolherbst: codehotter: if you don't care about battery lifetime, sure
05:22 codehotter: Not sure how the bios manages that if different displays are wired to different cards
05:22 codehotter: but I'll try it
05:23 karolherbst: RSpliet: well, nothing really fits that well yet :/
05:25 codehotter: Everything works great now when I disabled "Switchable graphics"
05:25 codehotter: What actually physically happens with that button? Why is it working now if it wasn't working before? Surely there's not a motorized mechanism changing the cable wirings inside the case?
05:25 karolherbst: which button?
05:26 codehotter: The "switchable graphics" button in the bios setup
05:26 codehotter: It's now disabled
05:26 karolherbst: ahh k
05:26 karolherbst: well I assume the bios does some smart stuff
05:26 RSpliet: karolherbst: not? your gistfile line 19 -> https://github.com/RSpliet/kernel-nouveau-nv50-pm/commit/92937716e1687ed5b15f74e6a955ea3dff717d18#diff-2245c015e8c518edce5ab5509cde189aR484
05:26 RSpliet: line 484
05:26 karolherbst: RSpliet: yeah some writes are there on both sides
05:27 karolherbst: but I would say it fits around 25%
05:27 RSpliet: well, a) you're missing some of the writes NVIDIA does outside the SEQ script
05:28 karolherbst: RSpliet: but that's only before and after, right?
05:28 RSpliet: b) I'm fairly sure that's an underestimation; it's likely to be closer to 75%
05:29 mwk: hehe, quadop instruction with src1 coming from s[] hangs the GPU
05:31 mwk: huh, quite permanently on G98
05:31 karolherbst: so real dead now?
05:31 mwk: PGRAPH reset didn't help
05:32 mwk: ok, rebooting fixed it
05:32 mwk: perhaps I just missed something in my setup sequence
05:32 mwk: it's far from a proper initialization after all
05:33 KhazAkar: It is normal when Nouveau have better performance even 2 times than nvidia blob? Quadro NVS 160M :D
05:33 karolherbst: mhh, is the rendering the same?
05:33 KhazAkar: Checked with glxgears. On blob ~600 FPS,on Nouveau - ~1.2k
05:34 RSpliet: glxgears is not a benchmark
05:34 karolherbst: yeah
05:34 karolherbst: KhazAkar: prime offloading?
05:34 karolherbst: or was it just glxgeasr?
05:34 KhazAkar: I don't have second graphics card on my Dell,only Quadro
05:34 karolherbst: but yes, ignore the result from glxgears
05:34 karolherbst: better run unigine heaven
05:35 KhazAkar: Firstly,I need to download it and install :P
05:37 KhazAkar: Ignore FreeCAD too?Similiar performance,sometimes Nouveau better,but on closed drivers Wings3D works better... :P
05:37 karolherbst: try unigine ;)
05:37 karolherbst: but I am not sure if it will run at all :/
05:37 karolherbst: I don't know what it requires
05:38 KhazAkar: OpenGL 4.0
05:38 karolherbst: heaven?
05:38 KhazAkar: Yup
05:38 KhazAkar: DX9/DX11 or OpenGL 4.0
05:39 karolherbst: for tesselation yes
05:39 karolherbst: but it will also run on OpenGL 3 gpus
05:39 karolherbst: but I don't know what you get with yours
05:41 KhazAkar: My graphics card is on PCIe slot in my notebook,so mayby change it to better? :D
05:46 KhazAkar: Or use eGPU via ExpressCard :>
05:48 KhazAkar: On blob blender works slower,wth?
05:57 mwk: hmm, quadop with dx/dy mode doesn't work at all in compute mode, it seems
05:57 mwk: always gives 0
05:58 mwk:looks at the funny unknown methods
06:02 RSpliet: mwk: out of curiousity; are there any ops that might behave differently depending on the grctx? like, bits that might represent a DX vs. OpenGL "mode"?
06:02 mwk: RSpliet: I haven't tested that yet
06:02 mwk: but I'm expecting some
06:03 mwk: there should be a bit controlling 0*NaN behavior somewhere
06:03 mwk: with old assembly shader languages, that was defined to be 0
06:04 mwk: which is rather important since there were no branches and you did conditions by doing shit like (a < b) * c + (a >= b) * d
06:08 RSpliet: hmm, I reckon those bits could equally well hide in the program launch command
06:11 mwk: yep, found them
06:11 mwk: there's a method for that
06:21 mwk: another one bites the dust
06:30 karolherbst: nice one
06:49 mwk: RSpliet: btw I'm also expecting at least the quadop insn to work differently in pixel shaders than other types
06:50 mwk: and fwiw the tesla "launch command" takes no parameters
06:51 mwk: the program control blocks in memory only started appearing on fermi
07:28 Tom^: karolherbst: sup.
07:28 Tom^: karolherbst: ok time to figure out how to pull in these commits into this branch.
07:28 Tom^: karolherbst: or wait, "i need more, ping when i got time."
07:28 Tom^: karolherbst: ping.
07:32 karolherbst: Tom^: https://github.com/karolherbst/nouveau/commits/tom
07:32 karolherbst: ohh wait
07:33 Tom^: nothing new there
07:33 karolherbst: reload
07:33 Tom^: mmh :p
07:33 karolherbst: but try it out with debug=clk=trace, so that we have the data
07:34 karolherbst: and it might be that memory won't be reclocked high enough sometimes
07:34 Tom^: oki
07:34 karolherbst: but that's more because the pmu memory counter is somehow bad
07:35 Tom^: you are also quite behind skeggs according to github
07:36 Tom^: "52 commits behind skeggsb:master." :P
07:36 karolherbst: ahh he pushed
07:37 karolherbst: mhhh noi
07:37 karolherbst: no
07:37 karolherbst: that's okay
07:37 karolherbst: doesn't matter
07:47 Tom^: karolherbst: yea seems to work rather nicely now. now you just got to figure out the flicker from changing cstate :P
07:47 Tom^: karolherbst: quite annoying when it jumps ~10 times or so. instead of when i manually set it one time xD
07:48 Tom^: karolherbst: it changes cstates, seems to detect load quite nicely and only put core etc at proper levels, goes back to 07 when nothing is used etc.
07:48 Tom^: so i got no complaints.
07:48 RSpliet: karolherbst, Tom^: for single-monitor set-ups that's solved by syncing to VBLANK, for multi-monitor set-ups we probably need the linebuffer to keep feeding the scanout engine with pixels while memory is inaccessible
07:49 Tom^: RSpliet: yea solving to vblank isnt quite a solution either
07:49 Tom^: RSpliet: some people run window managers without compositors.
07:49 Tom^: *syncing to
07:49 RSpliet: doesn't matter
07:49 RSpliet: every monitor has a VBLANK period
07:50 Tom^: ah ok yea.
07:50 RSpliet: which is long enough to change your memory clock 3 or 4 times ;-)
07:50 karolherbst: Tom^: you should also test if you hit the 60 fps mark with most games, and if something runs slower check that the gpu has max memory clock and not maxed out core load or max core clock
07:50 RSpliet: without causing flicker
07:51 Tom^: karolherbst: yea did that with glxspheres, it ran core at ~600 mhz and mem at 6999 , and jumped up and down at times without what i can tell impact the mpixels count.
07:51 Tom^: and unigine ramped it up to max.
07:52 karolherbst: I am relieved we figured out those pmu issues, so that we can now implement dyn reclocking without hanging the driver :D
07:52 karolherbst: Tom^: yeah, there is some memory stuff still missing
07:52 karolherbst: Tom^: currently the pmu just sends a request when the core load is high enough
07:52 karolherbst: usually when memory is too slow, the core load seems rather high, and drops after memory got reclocked
07:52 karolherbst: currently such loads withh create an endless reclocking cycle
07:53 karolherbst: because it selects a cstate where you need a higher pstate
07:53 karolherbst: and higher pstate means higher memory clock
07:53 karolherbst: but then the core load suddenly drops and memory load is too low anyway, because of the stupid pmu memory counters
07:53 karolherbst: so it clocks down the pstate, because lower cstates doesn't need the highest pstate
07:53 karolherbst: *don't
07:54 Tom^: mm ok
07:55 karolherbst: currently my plan is to check the loads on the pmu and send a reclock requests when the load goes outside a specified load range and the kernel module decides to reclock or not
07:55 karolherbst: on reclock it acks the requests and the pmu resets some state, otherwise the pmu will only bother with higher or lower loads (depending on the situation)
07:59 Tom^: karolherbst: https://gist.github.com/anonymous/79ef19d9fe6a3a1b78eb this is from some testing if its of any value.
08:04 karolherbst: not by itself
08:04 karolherbst: this is just a dump what the dyn reclocking code on the kernel is doing. I bet there are a lot of smarter ways to do it though
08:04 karolherbst: and faster
08:06 karolherbst: Tom^: but maybe you get the feeling your fans are quieter for not so heavy workloads?
08:13 Tom^: my fans was always kinda quiet on this non reference card
08:13 Tom^: its some dual fan thingie :P
08:13 karolherbst: ohhh k
08:14 Tom^: just that its recently started to vibrate a bit in one of them. so im thinking about ordering some water cooling setup. but im not sure its so expensive :<
08:14 karolherbst: maybe you just want to tighten the screws then
08:20 karolherbst: RSpliet: I think I got now all possible combinations of the reg writes from the SEQ scripts possible on my card. And I hope the nouveau code is really not that far away from that :)
08:20 karolherbst: maybe just some branches are missing
08:21 RSpliet: for GDDR5 I know that the main missing bit is perfect clock reg config. I started on it, but then lost the GPU before testing
08:22 RSpliet: and a few minor unknown values for random registers, but I think most bases are covered (and if they aren't, they depend on whether it's PLL driven or postdiv)
08:22 RSpliet: for DDR3 it's a different story, and the first surprise I saw in your trace was 0x100224
08:22 RSpliet: *cough* 0x10f224
08:24 karolherbst: ohh wait, I update my paste
08:24 RSpliet: no worries, I don't have time to look into it in detail anyway
08:24 karolherbst: :D
08:24 karolherbst: k
09:27 stephane_: Hello. Linux user for 19 years (Red Hat, Mandrake, Debian, Ubuntu, Fedora, Mint). On a laptop with Mint 17.2 (same observed on Fedora live USB), GM107M [GeForce GTX 850M] + Optimus, shipped with nouveau driver 1:1.0.10-1ubuntu2. nouveau crashes at system startup about 2/3 of the time. http://linuxmint.com/rel_rafaela_cinnamon.php says to install proprietary driver. Alas, nVidia driver freezes video playback (Ctrl-Alt-F1 then back w
09:27 stephane_: orks around). Switched through nVidia GUI to Intel GPU which mostly works but system sometimes lags, dmesg shows warnings with stack traces. Any reference (bug tracker) about nouveau, why it hangs on startup, is it fixed in git? Thanks.
09:28 imirkin: stephane_: what kernel?
09:29 imirkin: stephane_: while nouveau isn't going to be immensely useful to you with a GM107, it shouldn't crash
09:29 stephane_: kernel 3.16.0-38-generic
09:29 imirkin: stephane_: also... 19 years? oh hm. that seemed like a big number, but then i realized i've also been using linux for 19 years.
09:30 stephane_: welcome to the club :-)
09:30 imirkin: time flies :)
09:30 stephane_: linux-image-3.16.0-38-generic 3.16.0-38.52~14.04.1 amd64
09:30 imirkin: well, 3.16 should contain no support for acceleration on the GM107. not 100% sure there's *any* support for it tbh.
09:30 stephane_: "time flies like an arrow, fruit flies like an apple" ;-)
09:30 imirkin: what makes you say that nouveau is having issues
09:30 imirkin: mmm.... i've always heard it with a banana...
09:31 stephane_: Observed crashed on startup. http://linuxmint.com/rel_rafaela_cinnamon.php
09:31 imirkin: i don't see a backtrace or any concrete info there
09:31 imirkin: perhaps i skimmed it too fast
09:31 stephane_: stack not there
09:31 mwk: huh, G80 supports fp16 denormals
09:31 mwk: that's a surprise
09:31 stephane_: just acknowledgement of the bug
09:31 imirkin: mwk: via cvt?
09:32 mwk: imirkin: yup
09:32 imirkin: stephane_: well, that's a pretty ancient kernel
09:32 mwk: not like there's any other instruction that knows about f16
09:32 imirkin: stephane_: if you're still having issues with kernel 4.4, we can see what's going on
09:32 imirkin: stephane_: it's unlikely you'll find people interested in debugging a kernel released 1.5y ago
09:32 imirkin: mwk: yeah, i guess not :)
09:33 stephane_: okay
09:33 imirkin: mwk: i should probably hook up the unpack/packHalf2x16 stuff for nv50. i only did it for nvc0...
09:35 stephane_: Considering installing http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-wily/linux-image-4.4.0-040400-generic_4.4.0-040400.201601101930_amd64.deb
09:35 mwk: ugh, I have to clean up the fp routines
09:36 mwk: it's like the 7th time I write a normalization loop
09:38 stephane_: imirkin: looking at kernel logs at the time I was using nouveau, I see "kernel: [ 3.773038] irq 16: nobody cared (try booting with the "irqpoll" option)"
09:38 stephane_: Any hunch?
09:40 imirkin: mwk: you should be getting good at it
09:40 imirkin: stephane_: what's hooked up to irq 16?
09:41 mwk: imirkin: but I'm going to copy this code straight to ISA docs and if you see 15 different normalization loops for 20 instructions, you're going to kill me
09:42 imirkin: lol
09:42 imirkin: i dunno, it might actually not be horrible for isa docs to be repetitive
09:42 imirkin: since when looking at them you usually want to know how *one* *specific* op works
09:42 stephane_: imirkin: good question. grep 16: /proc/interrupts
09:42 stephane_: 16: 30 0 0 0 3 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb1
09:43 imirkin: so... not nouveau
09:43 stephane_: usb? coincidence that it appears right at nouveau init time?
09:43 stephane_: imirkin: should I expect improvements by using kernel 4.4, or just more willingness to debug?
09:43 imirkin: dunno, could be that the ACPI call we make is doing something funky
09:43 imirkin: stephane_: it should just work on 4.4...
09:43 stephane_: Ah, good thing rthen
09:44 imirkin: i forget when maxwell support was added at all, i think i twas 3.17
09:44 imirkin: or 3.19
09:44 imirkin: and accel for maxwell was added in 4.1
09:44 imirkin: that said, expect it to be slow, since we don't have any reclocking support on maxwell
09:46 imirkin: bbiab
09:46 stephane_: imirkin: hmm, thanks for the warning. I see https://launchpad.net/~xorg-edgers/+archive/ubuntu/ppa lists 1:1.0.11+git20150401.212fc535-0ubuntu0sarvatt~trusty while current (no-ppa) update is 1:1.0.10-1ubuntu2. What about linking to this ppa and upgrading to 1.0.11?
09:47 imirkin: oh yeah 1.0.10 didn't do maxwell either. but really you should just use DRI3 on your intel ddx which will allow you to switch between nouveau and nvidia at runtime if you like
09:48 imirkin: unless you have screens attached to it
09:49 imirkin: bbiab. for real this time.
09:49 stephane_: imirkin: thanks for the tip. There is the screen laptop (1920x1080) and an external monitor 2560x1440 attached via HDMI. Can it interfere somehow?
09:49 stephane_: imirkin: okay waiting for your being back
09:52 stephane_: Regarding DRI3, there's another PPA on https://launchpad.net/~ubuntu-desktop/+archive/ubuntu/dri3
09:53 stephane_: (If using any PPA just works that'd be enough for me.)
10:06 imirkin_: stephane_: with newer laptops, usually it'll all be hooked up via the intel gpu
10:06 imirkin_: stephane_: so the nvidia gpu is only for acceleration
10:09 stephane_: So...
10:10 stephane_: imirkin: you mean I can probably get away with pure intel driver? If it works it's okay for me, but I thought setups were usually plugged on nVidia chip actually.
10:12 imirkin_: not anymore
10:12 imirkin_: but you can check
10:12 imirkin_: sometimes it is
10:12 stephane_: Hmm how can I check that? lspci might actually lend to what you say
10:13 stephane_: Intel is listed as VGA compatible controller, and NVIDIA as 3D controller.
10:13 imirkin_: usually "3d controller" means "no displays attached"
10:13 imirkin_: but not always
10:13 stephane_: how to test?
10:13 imirkin_: pastebin your dmesg
10:13 stephane_: (reminds me of the old 3dfx hacks)
10:13 stephane_: ok
10:13 imirkin_: (with nouveau loaded)
10:14 stephane_: ah
10:14 imirkin_: i need to look at the DCB stuff it prints
10:14 stephane_: of course :-)
10:14 stephane_: will have to reboot for that
10:14 imirkin_: forget that
10:14 imirkin_: look, 99.9% chance it's all hooked up to intel
10:14 stephane_: mh okay.
10:14 stephane_: So basically I can launch another X session from a plain virtual console with the intel driver and see if it works, right?
10:18 imirkin_: sure
10:28 redeyedman: Hi
10:28 redeyedman: when I doing echo 0f > /sys/class/drm/card0/device/pstate it says that function isn't implemented
10:29 redeyedman: what is mean ?
10:29 redeyedman: I have Fermi card 630 GT
10:30 imirkin_: redeyedman: it means there's no support for this
10:30 imirkin_: no reclocking on fermi
10:30 redeyedman: :(
10:30 imirkin_: yes. very :(
10:30 stephane_: imirkin: after a failed first try (stuck to another console, had to take an old powerpc mac from a drawer to ssh into the machine and chvt 1), I made another xorg.conf swapping the "Screen0" and "Inactive" lines in section ServerLayout, and I have a running X server with a terminal.
10:31 imirkin_: stephane_: you shouldn't need an xorg.conf... that way lies sadness.
10:31 redeyedman: and there is no any possibiblity in the future?
10:31 imirkin_: stephane_: or there should be only very minimal things in there
10:31 imirkin_: redeyedman: there's always possibility :)
10:32 imirkin_: someone started looking at it again recently
10:42 stephane_: imirkin: 31 lines in the config file. "It seems that perfection is attained, not when there is nothing more to add, but when there is nothing more to take away."
10:42 stephane_: Could be shorter by not even mentioning nvidia GPU.
10:42 imirkin_: stephane_: normally 4-5 lines is sufficient. well, normally 0 lines is sufficient.
10:43 stephane_: Can I select a driver with 0 line ? Been used to a minimal xorg.conf for that.
10:43 imirkin_: no, but X will know what to do
10:43 imirkin_: X the almighty
10:43 stephane_: Hmmm
10:43 imirkin_: this isn't XFree86 3.3.6 anymore
10:44 stephane_: At boot it selects nvidia GPU and proprietary driver.
10:44 stephane_: Anyway, there I have xrandr working (color LUT), two screens ok. vlc complains no xvideo, and indeed fullscreen is slow.
10:44 imirkin_: you must have a bunch of configs
10:44 stephane_: there was no xorg.conf before I created one to select intel.
10:44 stephane_: well, actually there is none at all
10:45 stephane_: I ran: startx /usr/bin/xfce4-terminal -- :1 -config xorg.conf.intel2
10:47 imirkin_: stephane_: xorg.conf likes to hide nowadays
10:48 imirkin_: bits of it are in xorg.conf.d directories sprinkled around your FS
10:48 stephane_: It's been around 10 years already, actually.
10:48 stephane_: Yeah I forgot those.
10:48 stephane_: /usr/share/X11/xorg.conf.d
10:48 stephane_: No /etc/X11/xorg.conf.d anyway.
10:48 imirkin_: if no xorg.conf, i think it picks stuff from there
10:50 stephane_: dpms works
10:50 imirkin_: well i bet you also have a pretty new intel chip, perhaps that's not supported by your stack either :)
10:51 stephane_: Laptop bought around march 2015.
10:51 imirkin_: what cpu is it?
10:51 stephane_: Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz 2 cores.
10:51 stephane_: No, 4 multithreaded cores.
10:51 imirkin_: ah ok, haswell - you're fine
10:51 stephane_: ok thx
10:51 imirkin_: if it had been -5xxx it'd be broadwell in which case you might have needed some updates
10:52 stephane_: Thanks for the precision.
10:52 imirkin_: (or -6xxx, which is skylake, but that wasn't out in march 2015)
10:52 stephane_: https://wiki.archlinux.org/index.php/Intel_graphics#Configuration mentions a 4-lines /etc/X11/xorg.conf.d/20-intel.conf . I guess it should be fine.
10:52 imirkin_: yup
10:53 stephane_: Do all distrib look into /etc/X11/xorg.conf.d/ (Mint, here)
10:53 imirkin_: normally yeah
10:53 stephane_: okay
10:53 imirkin_: i don't know anything about mint in particular
10:53 imirkin_: but as long as they don't do anything _too_ crazy...
10:53 stephane_: Well, it's a thin layer on top of Ubuntu anyway.
10:53 imirkin_: i don't know anything about ubuntu in particular either ;)
10:53 imirkin_: you name it, i don't know it
10:53 stephane_: Well, a layer on top of Debian, and ... ;-)
10:54 stephane_: By the way, sorry for Ian.
10:54 imirkin_: for the past 19 years i've used slackware, then gentoo
10:54 imirkin_: with very short redhat and suse stints
10:54 imirkin_: early in that timeframe
10:54 stephane_: Considered gentoo, but Ubuntu tends to just work, better than Debian in practice.
10:54 imirkin_: ancient memories
10:55 imirkin_: i'm a big fan of people picking what works best for them
10:55 stephane_: imirkin: good philosophy. :-)
10:55 imirkin_: what i'm not a fan of is people asking me about how their things work
10:55 imirkin_: coz i just don't know :)
10:55 karlmag: imirkin_: but Slackware seems to stick? ;-)
10:56 imirkin_: karlmag: well, my (awesome) U160 quantum drive died
10:56 imirkin_: karlmag: and i had to reinstall
10:56 imirkin_: karlmag: and i reinstalled with gentoo, because i was sick of manually trackign down all the dependencies to compile myself
10:56 imirkin_: which gentoo did in a much nicer more automated manner
10:56 stephane_: (off-topic) On removing a package, can gentoo automatically remove dependencies no longer needed?
10:57 karlmag: imirkin_: hmm.. right..
10:57 imirkin_: stephane_: nowadays yeah... there's emerge --depclean
10:57 karlmag: imirkin_: well.. I've been using slack for the past 20 years or so myself, so...
10:57 imirkin_: back in the bad old days when i first started with gentoo... i don't think so
10:57 stephane_: I appreciate that Debian and derivatives to it. Fedora seems not to.
10:58 stephane_: "big fan of people picking what's best for them". I'm a big fan of "Short term best tool is often what you know now. Long-term best tool is often what you'll learn in the meantime."
10:59 karlmag: I've been doing other distros at work though (suse, fedora and ubuntu in particular)
11:00 stephane_: Funny how there's https://fr.wikipedia.org/wiki/Emerge but not in English.
11:00 karolherbst: well you can always check the tree for non referenced packages though
11:03 stephane_: For a quick GPU assessment, is there anything lighter than phoronix?
11:03 imirkin_: stephane_: "assessment"?
11:03 stephane_: I meant simple benchmark.
11:03 karlmag: imirkin_: and yeah, its sad when nice hardware dies..
11:04 stephane_: 15 years ago I remember an old X11-style benchmarking tool, which worked, was light, but took a ling time.
11:04 imirkin_: stephane_: i like unigine heaven and unigine valley
11:04 imirkin_: stephane_: x11perf
11:04 stephane_: Ah yeah x11 perf. Thanks.
11:04 imirkin_: stephane_: but that measures something else
11:04 stephane_: Ah. :-/
11:04 imirkin_: it measures... x11 perf :)
11:04 imirkin_: (surprising, i know)
11:05 stephane_: Well, I won't be doing 3D. Need 2D stuff, playing video.
11:05 imirkin_: you say that
11:05 imirkin_: but i bet you use gnome or kde or some bs like that
11:05 imirkin_: which will use OpenGL on your behalf
11:05 stephane_: xfce. Dropped KDE when they did 4 (what a monster) and Gnome even earlier.
11:05 stephane_: I think I disabled the compositor.
11:05 imirkin_: but that will all run on your intel gpu
11:05 imirkin_: which should be quite capable
11:06 stephane_: Ok. I guess I'll soon close this X session, to run on Intel only.
11:07 karolherbst: well you might want to enable the xfce compositor anyway, I don't think there is any downside to this
11:11 stephane_: karolherbst: thanks for the tip. Don't remember quite why I disabled it.
11:11 stephane_: What desktop environment is popular in users of this channel?
11:12 imirkin_: don't know that there is one. i use WindowMaker :)
11:12 imirkin_: and no "desktop"
11:12 stephane_: Wow, used WindowMaker in 1997.
11:12 stephane_: Notification tool?
11:14 stephane_: imirkin: regarding "that measures something else" [What is wrong with X?](http://wayland.freedesktop.org/faq.html#heading_toc_j_6) states it well.
11:15 stephane_: karolherbst: Do you use any notification tool, wifi selector?
11:16 imirkin_: stephane_: notification?
11:16 imirkin_: stephane_: i use wmsystemtray which lets things put up little icons
11:17 mwk: ugh, now I'm bogged down in cvt
11:17 imirkin_: mwk: which one?
11:17 mwk: apparently cvt f32 to f16 with round-to-integer is a real mess
11:17 imirkin_: hah
11:17 imirkin_: a common use-case, to be sure
11:18 stephane_: imirkin: notifcation, when some network becomes reachable, when a new mail arrives, when music player switched to another music, ...
11:18 imirkin_: stephane_: i have no such thing
11:18 mwk: first I figured I'd just round-to-int on f32, then do a separate conversion
11:18 mwk: but that didn't match
11:18 imirkin_: mwk: for what numbers?
11:19 mwk: then I tried to do it the other way around
11:19 mwk: also no luck
11:19 imirkin_: there's funny questions around whether things get rounded to infinity or to max_float
11:19 mwk: now I made a monstrosity that does both in single rounding, and it's getting better now
11:19 stephane_: Is there a general opinion (consensus) on Wayland here? Positive, negative?
11:19 mwk: I have at most 1ulp of error now
11:19 imirkin_: stephane_: never touched it myself
11:19 mwk: imirkin_: lots
11:20 mwk: want an example?
11:20 imirkin_: mwk: yes :) give me like 3 examples.
11:20 mwk: 0xc6ef3d6e cvt.rmi
11:20 mwk: I say 0xf77a, hw says 0xf779
11:21 imirkin_: what do those map to? i'm too lazy to convert the fp16 values myelf
11:21 mwk: 0xc5b47458 rni, I say 0xeda4, hw says 0xeda3
11:21 mwk: I have no idea, that's just what my test runner spews out
11:21 imirkin_: hmmmm ok
11:22 imirkin_: ok, give me a few
11:23 mwk: https://gist.github.com/anonymous/ed9a0c4b9c5112dccd93
11:23 mwk: there you go
11:23 imirkin_: thanks :)
11:23 mwk: rzi mode is notably absent
11:23 mwk: but then rz is the nicest-behaved of the rounding modes
11:24 mwk: double-rounding-proof
11:24 imirkin_: mwk: ok, so
11:24 imirkin_: 0xc6ef3d6d = -30622.712890625
11:24 imirkin_: 0xf77a = -30624.0, 0xf779 = -30608.0
11:25 imirkin_: this was with rmi, which is... what?
11:25 mwk: round to -inf
11:25 imirkin_: so the hw is a lying liar
11:25 mwk: hw is a double-rounding liar
11:25 imirkin_: perhaps the rounding direction doesn't work on f32 -> f16?
11:25 imirkin_: and it always rounds to 0?
11:25 mwk: hmm
11:26 mwk: it works ok when I don't round to int
11:27 mwk: let's see...
11:29 imirkin_: btw this is what i do to look at the numbers: numpy.uint16(0xf779).view('float16')
11:30 mwk: what the.
11:30 mwk: okay
11:30 mwk: so cvt.rm results in 0xf77a, which is correct
11:30 mwk: but .rmi results in 0xf779
11:30 mwk: both are integers
11:31 mwk: so rm should be identical to rmi
11:31 imirkin_: and yet... they're not
11:31 imirkin_: did you test my theory?
11:31 mwk: I guess it works like mad instruction
11:32 mwk: two roundings, only one rounder, one of them gets rz
11:32 imirkin_: heh
11:32 mwk: ok, let's try forcing the whole rounding mode to rz
11:33 mwk: nope, doesn't work
11:33 mwk: rpi *does* work a bit
11:34 mwk: as in, smallest finite number gets converted to 0x3c00 (1.0)
11:34 imirkin_: heh ok
11:34 mwk: it's some bullshit like the mad insn
11:35 mwk: imirkin_: note that with my single-rounding function, I get errors only on a very narrow range of exponents
11:35 imirkin_: ah hm
11:36 mwk: corresponding to [2**11, 2**14)
11:36 mwk: er, [2**11, 2**15)
11:37 mwk: funny, in that range, fp16's are always integers
11:37 mwk: well, that sounds like a job for captain If Statement
11:38 imirkin_: a little dirty but... meh
11:38 mwk: oh wait, 2**15 overflows to inf
11:39 imirkin_: i've been told that the DX10 behavior is that non-inf values go to maxfloat
11:39 imirkin_: i.e. not infinity
11:40 imirkin_: mwk: http://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/auxiliary/util/u_half.h#n38
11:41 mwk: imirkin_: infinites work as usual in IEEE
11:41 mwk: nothing weird there
11:42 imirkin_: in IEEE, yes. but apparently DX10 had funky behaviour
11:44 stephane_: Just for the record: I have closed nearly all windows and am nearly ready to close the X session with proprietary Intel driver. I see messages in dmesg
11:44 stephane_: pci 0000:01:00.0: Max Payload Size 16384, but upstream 0000:00:01.0 set to 256; if necessary, use "pci=pcie_bus_safe" and report a bug
11:44 stephane_: i915 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
11:44 stephane_: Any comment?
11:44 imirkin_: nothing to do with nouveau
11:44 stephane_: Sure. :-)
11:44 imirkin_: there is also no proprietary intel driver
11:44 stephane_: Well, the nVidia driver set to Intel. :-)
11:45 imirkin_: huh?
11:45 stephane_: As stated earlier,
11:46 stephane_: It's an optimus setup. The nVidia proprietary driver offers to use NVIDIA or Intel GPU. Since NVIDIA had freezes when playing video, I switched to Intel.
11:46 imirkin_: nvidia blob driver can only drive the nvidia gpu.
11:46 stephane_: Well, I do observe a different behavior when Intel is selected.
11:46 mwk: hmh waitaminute
11:47 stephane_: No more freeze on playing video, but sometimes lags (when exiting emacs for example).
11:47 mwk: the max fp16 number is ridiculously small
11:47 stephane_: Also, having started a second X server appears to lag more, and even sometimes miss the Alt-² combination used to switch windows. WT?
11:47 imirkin_: mwk: yeah, 64k or so
11:48 imirkin_: er, 32k?
11:48 imirkin_: er no. -65504
11:48 stephane_: Anyway thank you for hinting me to simply use Intel driver. On another laptop (2012) it looks like it was not possible to use Intel chip alone.
11:48 imirkin_: (or +65504)
11:58 mwk: imirkin_: got it
11:58 mwk: it's really really simple
11:59 mwk: turns out my initial idea of doing 32-bit rint first was right
11:59 imirkin_: and then the f32 -> f16 is rz?
11:59 stephane_: imirkin: strangely I had to reboot. After closing session with proprietary DDX, I could switch to the other (free intel) session. I killed -9 -1 because I was weary of xfce clobbering my config. That switched to vt 1 but no key worked. strace chvt via ssh appeared to work but screen stuck on console 1. After a reboot I get a nice reactive X server, no lag. Thanks again.
12:00 mwk: imirkin_: it's *mostly* rz, except overflows return Inf instead of max finite (as would be usual for rz)
12:00 mwk: or... scratch that
12:01 mwk: overflows behave as usual for the rounding mode (rm gives -Inf but +maxfin), but rounding itself is like for rz
12:01 stephane_: Saying this on the nouveau channel is a bit like discussing POTS telephony on an ADSL-related channel. Thanks anyway. Am probably over now.
12:02 mwk: so yeah... exactly the mad deal
12:09 mwk: works perfectly now
12:09 mwk: f2f down
12:09 mwk: ... for non-fp64 cases at least
12:11 imirkin_: nice
12:11 mwk: that would leave f2i and i2f, and then I'm done with fp32 instructions
12:18 mwk: when I'm done with that, I'll have to make a big fat drawing of the FPU
12:19 mwk: with the single damn rounder
12:21 mwk: ok, let's attempt i2f now
12:30 mwk: eh.
12:30 mwk:feels like the mathematician with the pot and stove right now
12:31 mwk: using fp32_add(x, 0) merely to change NaNs to the canonical NaN
12:31 imirkin_: probably more like the chip designer
12:36 stephane_: imirkin: quick glmark2 Score (2 seconds per test): 178
12:36 stephane_: Don't know how it compares with the rest of the world, though.
12:36 imirkin_: stephane_: i assume you're running that on your intel gpu
12:36 stephane_: yes
12:37 karolherbst: stephane_: well I use kde plasma 5, so I use the kde plasma stuff
12:37 stephane_: Overall feeling is much smoother than the proprietary driver.
12:38 stephane_: karolherbst: thanks.
12:38 karolherbst: Tom^: do you get over 107 fps in cs:go at 2560x1600? :D
12:38 Tom^: no idea, doubt it.
12:38 karolherbst: stephane_: is that a desktop or laptop system?
12:38 stephane_: karolherbst: laptop, why?
12:38 karolherbst: just asking
12:39 stephane_: karolherbst: ran benchmark on external monitor 2560x1440, don't know it it skews results in some way (probably not, I guess it computes pixels or vertices per second anyway).
12:41 karolherbst: Tom^: gputest furmark at 2560x1600?
12:42 karolherbst: Tom^: please do the benchmark there :D I just want to see the result
12:42 Tom^: means removing blob and rebooting, and im going to bed. i can tomorrow
12:43 karolherbst: k
12:43 karolherbst: there is a new benchmark at phoronix and these are easy to compare with radeon :D
12:43 karolherbst: so
12:46 karolherbst: mhh I am close to the HD 6870
12:46 karolherbst: which has like 33% more GFLOPS than mine :D
12:48 Yoshimo: i tried to test the fermi branch, does it work by default or does it need any kind of boot parameters karol?
12:50 karolherbst: ohh the fermi github branch?
12:50 karolherbst: or just those patches?
13:01 karolherbst: imirkin_: slowly I get the feeling, that the nouveau compiler is pretty fast compared to the radeon one :O
13:05 imirkin_: heh
13:07 karolherbst: I mean, I just ran a test and I was faster than a radeon card with faster memory and core :O
13:07 karolherbst: imirkin_: or how would you compared the HD 6870 against a gtx 770m?
13:07 imirkin_: well, nvidia hw might have something to do with it too
13:07 imirkin_: well, HD 6xxx is a full generation older
13:08 karolherbst: yeah, but mine is a mobile chip
13:08 imirkin_: sure
13:08 imirkin_: all these things come in 100 diff configurations
13:08 karolherbst: half speed of R9 285
13:09 imirkin_: HD 6870 would also use r600
13:09 imirkin_: not radeonsi
13:09 karolherbst: k
13:09 imirkin_: the compiler is different (not llvm)
13:09 imirkin_: and the arch is quite frankly very odd
13:10 karolherbst: the R9 285 should have around 3290 GFLOPS, which would somehow fit then
13:11 karolherbst: then the perf per "GFLOP" is the same
13:11 karolherbst: basically
13:11 karolherbst: still amazing
13:12 mwk: ugh, f16 is a fucking disaster
13:12 mwk: i2f is doing crazy shit on u32 -> f16 conversion
13:13 imirkin_: that's supported?
13:13 mwk: according to envydis, it is
13:13 mwk: ... I might be removing it from here in short order
13:13 imirkin_: heh
13:13 mwk: it *somewhat* works
13:14 glennk: karolherbst, furmark is pretty much a fill rate benchmark on modern-ish cards
13:14 karolherbst: ohh right
13:21 gryffus: karolherbst: i have some time for testing the Fermi reclock and here are some results: http://susepaste.org/16800100
13:21 gryffus: *had
13:22 mwk: imirkin_: okay, i2f u32 -> f16 is a disaster
13:22 mwk: apparently hw sometimes forgets to check some MSBs of the u32 source to detect overflow
13:22 imirkin_: mwk: is there a u16 -> f16 too?
13:22 karolherbst: gryffus: so basically the same as on my fermi: around 25%
13:23 karolherbst: maybe less on your
13:23 imirkin_: or is that only on nvc0?
13:23 mwk: and how many MSBs it forgets to check depends on the MSB of the low 16 bits
13:23 gryffus: It's pretty stable, the benchmark only freezed Xorg in about 1-2 tries of 10
13:23 gryffus: :D
13:23 mwk: imirkin_: there is u16 -> f16 and it appears to work perfectly
13:23 karolherbst: gryffus: yeah this can have various issues
13:23 karolherbst: but thanks for testing
13:23 gryffus: karolherbst: i will try to get some kernel output ASAP
13:23 gryffus: no problem
13:24 karolherbst: gryffus: yeah, would be nice to know what's going on when it fails
13:24 karolherbst: but I think this is just a simple reclocking missconfiguration
13:24 karolherbst: I don't think most of the stuff is yet verified, so it's already a good to know, that it somehow works
13:25 karolherbst: meehhh, all those games
13:25 karolherbst: I need a bigger HDD :/
13:25 gryffus: yeah, TBH i was impressed how smoothly it did go
13:25 gryffus: i was expecting crashes right after reclocking
13:25 gryffus: but no :)
13:25 karolherbst: 180+240+130GB, just for my various steam libraries :/
13:27 gryffus: karolherbst: yeah as i said... Steam is a crap :X
13:27 karolherbst: it isn'T steam fault
13:27 karolherbst: bioshock infinite just needs like 42GB alone :/
13:28 karolherbst: maybe I should convert my steam partiiton to btrfs and do compression :/
13:29 gryffus: Well, Serious Sam 3 and GW2 are also not so small... Especially when you keep the isos...
13:29 gryffus: that's granted
13:29 karolherbst: ss3 is small
13:30 karolherbst: 5.2GB here
13:30 karolherbst: that's like nothing
13:31 gryffus: well it's my 4th biggest
13:31 karolherbst: :D
13:31 karolherbst: lucky you
13:31 karolherbst: its maybe my 20th biggest
13:31 gryffus: i mainly play games 10+years old :x
13:32 gryffus: GW2, WoTLK, SS3, Mafia 2 are my biggest :))
13:32 gryffus: btw, years ago i have migrated to btrfs for my home
13:33 gryffus: and it was one of the dumbest things i have ever done
13:33 gryffus: when it's low on space, it's HORRIBLY slow even with disabled compression
13:35 gryffus: and even with a free space, it's just slow :( maybe i have some extreme fragmentation from torrent usage, dunno, but it's terrible :x
13:48 mwk: imirkin_: fun.
13:48 mwk: so, here's how i2f works
13:49 mwk: take the 32-bit input value
13:49 mwk: if you're converting s32, take abs() of it instead
13:49 mwk: let x be the number of top 0 bits in the low half of that 32-bit word
13:50 mwk: set top min(2+x, 7) bits of that word to 0.
13:51 mwk: and, only if rounding mode is round to nearest or round up, check if bits 5..29 are all 1. if so, change the whole word to 0.
13:51 imirkin_: mwk: so basically the high bits are bogus?
13:51 mwk: basically, the high bits are sometimes ignored
13:52 mwk: but it only happens if you'd have gotten an Inf anyway
13:52 mwk: I guess that counts as a hw bug...
14:25 stephane_: imirkin: thanks again. My PC feels less laggish now. The key information you gave me was that it can run on free intel driver. That was contrary to my previous experience and hints from Mint. Kudos.
14:27 karolherbst: stephane_: what kind of setup did you had before? modesetting intel, nvidia offloading?
14:27 karolherbst: or intel deactived through vbios
14:28 karolherbst: *bios/uefi
14:49 mwk: fucking hw bugs.
15:09 stephane_: karolherbst: I don't know the details. Installed NVIDIA proprietary driver. Use graphical settings manager to switch to Intel.
15:10 stephane_: karolherbst: also, bumblebee is not installed, but nvidia-prime is.
15:11 karolherbst: ahh nvidia-prime
15:24 mwk: okay, got the simple case of f2i working
15:24 mwk: now let's add some modifiers and ruin my day.
15:36 mwk: unbelievable, no weirdness
15:41 imirkin_: inconceivable!
15:44 stephane_:quit soon
15:52 mwk: so... all fp32 instructions covered by the testsuite
15:53 mwk: I guess now I get to clean that mess I made of my code and write the docs
15:53 imirkin_: and then the G80 will have the best isa docs of any gpu :)
15:54 mwk: and then you notice float instructions aren't all that interesting and you'd rather have the control flow hellstructions documented
17:54 imirkin: Tom^: there's an off chance something i pushed will get you another point in heaven :)
18:55 gnurou: skeggsb: sent a little fix for GM107 LTC - I hit some timeouts on GM206 when rendering 3D
19:05 skeggsb: gnurou: thanks
19:17 skeggsb: gnurou: what bit was set for that long?
19:18 gnurou: skeggsb: uh, lemme check...
19:24 gnurou: skeggsb: bit 4. when set it instructs LTC to invalidate only clean lines - it is set by default
19:29 skeggsb: ah right, i did indeed miss that. that bit seems new in gm20x (or, it's just not enabled by default earlier)
23:17 gnurou: skeggsb: you're right, this bit is new in gm20x