Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Feb 24 07:46
    rillk500 starred libmir/mir
  • Nov 17 2020 07:14
    aminya starred libmir/mir
  • Nov 17 2020 01:23
    wrmsr starred libmir/mir
  • Nov 15 2020 09:37

    9il on v3.2.2

    (compare)

  • Nov 15 2020 08:44

    9il on master

    update gitignore (compare)

  • Sep 21 2020 17:29
    dangkhoasdc starred libmir/mir
  • Sep 12 2020 20:22
    breandan starred libmir/mir
  • Sep 01 2020 03:04
  • Jul 17 2020 02:49
    shikuijie starred libmir/mir
  • Jul 04 2020 06:01
    tastyminerals commented #403
  • Jul 03 2020 07:09
    9il commented #403
  • Jul 03 2020 05:16
    tastyminerals starred libmir/mir
  • Jul 03 2020 05:15
    tastyminerals closed #403
  • Jul 03 2020 05:15
    tastyminerals commented #403
  • Jul 03 2020 05:13
    tastyminerals commented #403
  • Jul 03 2020 05:12
    tastyminerals commented #403
  • Jul 03 2020 04:03
    9il commented #403
  • Jul 03 2020 01:25
    mridsole starred libmir/mir
  • Jul 02 2020 18:29
    tastyminerals edited #403
  • Jul 02 2020 18:29
    tastyminerals opened #403
Ilya Yaroshenko
@9il
mir-glas is not used in Lubeck
lubeck uses only common cblas / lapack libs. Glas does not provide full cblas
The bug in lubeck code
Mathias L. Baumann
@Marenz
hmm alright. But I suppose I don't actually need lubeck and just use mir-glas directly
btw, I don't know when opBinary was implemented, but it is soooo nice to be able to write m[] = m1 + m2 (it wasn't possible last time I used it)
me gusta
Mathias L. Baumann
@Marenz
I assume there is no libary that offers something like a lazy gemm abstraction so I could write things like m[] = m1.mtimes(m2) + m3;
It seems not trivial to write something like that myself as I discovered
at least if you want to avoid temporary allocations
Ilya Yaroshenko
@9il
m[] = m1.mtimes(m2) + m3; should be possible with lubeck
I will fix the mtimes bug
Thank you for the report!
Mathias L. Baumann
@Marenz
Yeah, it is with lubeck, but as I understood, lubeck doesn't use mir-glas, right?
Ilya Yaroshenko
@9il
Yes, lubeck does not
Mathias L. Baumann
@Marenz
another question: what exactly does the universal() function do? It doesn't take the slice as a ref-argument so I am wondering if it modifies the original slice in any way or if it just returns a new slice that has a different "view" on the same data? Or would it be a mistake to use the original slice after I called universal() on it?
I mean, a Slice is a struct referencing some external data. Is that data modified by universal()? the docu isn't very clear here
My use case is when using gemm from mir-glas. It requires the SliceKind.universal but all I have is contiguous, so my solution so far was to just do gemm(1.0f, m1.universal, m2.universal, 0.0f, tmp_result.universal);
but i am not very faithful in my solution
especially when using m1 afterwards
Ilya Yaroshenko
@9il
Hi @Marenz , universal as well as other contents of topology does not modify the data. universal just returns a slice of Universal kind with the same strides and shapes. The difference is only in kind.
Mathias L. Baumann
@Marenz
thank you for that info :)
I still haven't figured out all those details
Mind if I create PRs that add what you just told me?
for the docu
Ilya Yaroshenko
@9il
Sure, hope you will improve English
Mathias L. Baumann
@Marenz
I didn't notice any weird English so far. But when I do I'll fix it
btw, I wrote my own mtimes() now that works like the one in lubeck but uses mir-glas and also expects an allocator to be passed
That way I can use e.g. the Region allocator for loops to reuse the memory
Ilya Yaroshenko
@9il
:+1:
Nicholas Wilson
@thewilsonator
@Marenz you should make alignment an enum, it doesn't change.
Nicholas Wilson
@thewilsonator
First set of docs for dcompute: libmir/dcompute#37
Mathias L. Baumann
@Marenz
I am trying to port a python example for a neural net with a hidden layer to D2/mir
And.. everything seems to be working, only that it.. doesn't
As far as I can tell, my code is identical
It's a lot to ask to compare those and get feedback on the code, so I understand if you feel like you don't want to ;)-
I just thought I try asking here because I am a bit out of ideas currently
Ilya Yaroshenko
@9il
Hi Mathias,
I would suggest to do step by step verification. It is common for SCI code to do so.
After quick review i found one small bug (but there may be also others): Random gen is not initialized.
You may want to use https://github.com/libmir/mir-random as wall as https://github.com/libmir/numir to generate random slices. Mir Random has default contrcuttor disabled for RNGs, so it is safer then Phobos.
Mathias L. Baumann
@Marenz
it actually is, here: https://github.com/Marenz/neural_net_examples/blob/master/lstm/source/app.d#L64 if you mean seed when you say initialized?
I tried to construct it in a way that it matches the random numbers generated in python
I got surprisingly close
to see where it starts diverging
but there was no clear point
Ilya Yaroshenko
@9il
Ah, ok. BTW keep in mind that gen is TLS variable
Mathias L. Baumann
@Marenz
I don't plan on more threads yet :)
Francis Nixon
@pirocks
Hello. I'm having trouble compiling dcompute on debian 9. My dub.json looks like this:
{
    "name": "compute-messing-around",
    "authors": [
        "Francis Nixon"
    ],
    "description": "A minimal D application.",
    "license": "proprietary",
    "dependencies": {
        "dcompute": "~>0.1.0"
    },
    "dflags": ["-mdcompute-targets=ocl-210,cuda-350","-oq"]
}
The error I'm currently getting is:
../../.dub/packages/dcompute-0.1.0/dcompute/source/dcompute/driver/error.d(143,13): Error: undefined identifier `fprintf`
../../.dub/packages/dcompute-0.1.0/dcompute/source/dcompute/driver/ocl/context.d(144,19): Error: undefined identifier `clCreateProgramWithIL`
Nicholas Wilson
@thewilsonator
Thats embarrassing. libmir/dcompute@cee8eb3