Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Mar 31 12:30

    9il on master

    Update README.md (compare)

  • Mar 30 06:00

    9il on v3.2.1

    (compare)

  • Mar 30 06:00

    9il on master

    fix meson (compare)

  • Mar 30 05:54

    9il on master

    update readme (compare)

  • Mar 30 05:53

    9il on master

    add meson & update ci (compare)

  • Jan 27 17:48
    zweimach starred libmir/mir
  • Dec 27 2019 17:00
    chapman2014 starred libmir/mir
  • Nov 25 2019 15:06
    BeardedBeaver starred libmir/mir
  • Nov 20 2019 02:28
    JeffCarpenter starred libmir/mir
  • Nov 13 2019 12:10
    J5ive starred libmir/mir
  • Oct 02 2019 07:06
    stevefan1999-personal starred libmir/mir
  • Sep 06 2019 09:09
    9il commented #402
  • Sep 05 2019 19:35
    mlabayru closed #402
  • Sep 05 2019 19:35
    mlabayru commented #402
  • Sep 05 2019 16:23
    9il commented #402
  • Sep 05 2019 16:23
    9il commented #402
  • Sep 05 2019 12:59
    mlabayru opened #402
  • Aug 08 2019 03:06
    liummistaken starred libmir/mir
  • Jul 27 2019 20:16
    dd86k starred libmir/mir
  • Jul 09 2019 20:56
    myfreeweb starred libmir/mir
Mathias L. Baumann
@Marenz
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
I'm not sure why your clCreateProgramWithIL can't be found. Are you using an up to date DerelictCL?
Francis Nixon
@pirocks
The clCreateProgramWithIL error went away after manually selecting the most recent version of DerelictCL. I then got an error in the same place as the fprintf error, except for toStringz. Adding an import fixed that, but now I'm getting the following:
../../.dub/packages/dcompute-0.1.0/dcompute/source/dcompute/driver/error.d(139,32): Error: cannot implicitly convert expression `__lambda1` of type `void delegate(Status _status) @system` to `immutable(void delegate(Status) nothrow @nogc)`
../../.dub/packages/dcompute-0.1.0/dcompute/source/dcompute/driver/error.d(139,32): Error: cannot implicitly convert expression `__lambda1` of type `void delegate(Status _status) @system` to `immutable(void delegate(Status) nothrow @nogc)`
Nicholas Wilson
@thewilsonator
Hmm, that does seem odd, but that's my fault for not testing it properly.
Francis Nixon
@pirocks
If relevant my ldc version is:
LDC - the LLVM D compiler (1.7.0git-958e58c):
  based on DMD v2.077.1 and LLVM 3.8.1
  built with DMD64 D Compiler v2.077.1
  Default target: x86_64-pc-linux-gnu
  Host CPU: broadwell
Nicholas Wilson
@thewilsonator
Unless you have need to use the D_betterC version try without it. That should "work" (note the @BUG@ just above). You will need to set onDriverError yourself because of it, see e.g.