These are chat archives for deeplearning4j/deeplearning4j/earlyadopters

20th
Jun 2016
Paul Dubs
@treo
Jun 20 2016 06:47
Is anyone working on the introduction docs already? (deeplearning4j/deeplearning4j#1716) If not I'd like to take a stab at creating a first draft that we can collaboratively improve :D
Alex Black
@AlexDBlack
Jun 20 2016 06:49
not yet
that would be awesome though
Paul Dubs
@treo
Jun 20 2016 06:50
Ok, I'll get started this evening then
Alex Black
@AlexDBlack
Jun 20 2016 06:50
something I think we need (obviously) but probably wont' be able to get to for a bit
:+1:
with hbm2
raver119
@raver119
Jun 20 2016 08:28
still wonder, what'll be the price tag there :)
Paul Dubs
@treo
Jun 20 2016 08:43
right, probably the usual 4x of the highend consumer model
raver119
@raver119
Jun 20 2016 08:45
i still don't have 1080 in shops around me
980ti and titan x are still top gpus available
and that's actually surprising me a lot
Eduardo Gonzalez
@wmeddie
Jun 20 2016 08:49
Same here. 1080s are either sold out or cost over $1000.
raver119
@raver119
Jun 20 2016 08:50
yea, i see few shops in moscow, but price is 1k$
for regular 1080
in kiev it's around 800
Eduardo Gonzalez
@wmeddie
Jun 20 2016 08:52
Was the pcie version announced today?
Paul Dubs
@treo
Jun 20 2016 08:55
the cheapest 1080 I can get around here is 660 Euro...
and, if I read this correctly, then yes, the pcie version was announced today
Paul Dubs
@treo
Jun 20 2016 16:45
has anyone of you ever heard of Yeppp!?
they boast that they are even faster than MKL on basic ops (log, exp, cos...) and support multiple platforms
raver119
@raver119
Jun 20 2016 16:49
hmmm
that looks too good to be true
they even got bsd license
Paul Dubs
@treo
Jun 20 2016 16:49
right
Looks like I'll be trying it out later instead of getting started on the docs
Adam Gibson
@agibsonccc
Jun 20 2016 16:50
I'm up for that :D
raver119
@raver119
Jun 20 2016 16:51
hm, they should actually be +- on par with glibc 2.22 & libmvec
but on any platform
Paul Dubs
@treo
Jun 20 2016 16:52
fast out of the box would be a really great thing to be :)
the only problem is that they aren't a drop in replacement
Paul Dubs
@treo
Jun 20 2016 17:03
I must be doing something wrong... When I use their examples I get 16x performance on the native code over their version
Adam Gibson
@agibsonccc
Jun 20 2016 17:20
lol
Paul Dubs
@treo
Jun 20 2016 17:21
using floats I even get 32x the performance
Something must be broken...
Paul Dubs
@treo
Jun 20 2016 18:11
may be that the reason that it doesn't work for me is that the binary release is 3 years old, and I have a newer CPU, so it tries to play safe. Building it from master looks to be quite a hassle
Paul Dubs
@treo
Jun 20 2016 19:52
yep... got the confirmation from the maintainer that the reason is that it doesn't recognize my cpu due to the old release. And building a current version isn't documented well yet. I'll try to figure it out though...
The 48GFLOPS that they report using a i7-4770K, is still quite a lot more then the 16 i'm getting on my tests
Drew Shaw
@ds923y
Jun 20 2016 23:02
So I take a slice of an array and that has 2 elements. Then I take call .data then call .asDouble on the result. I get 4 elements. If I call dup before I call .data I get 2 results. Should I always get 2 results even if I am looking at a view?
Was my question clear?
Adam Gibson
@agibsonccc
Jun 20 2016 23:05
No
dup() will only take the necessary elements
Sorry my no was ambiguous there ;)
Drew Shaw
@ds923y
Jun 20 2016 23:07
So not calling dup will sometimes result in taking unnecessary elements if someone is working with views.
I could not escape the double negative
Adam Gibson
@agibsonccc
Jun 20 2016 23:13
well no not really
Drew Shaw
@ds923y
Jun 20 2016 23:13
It was a really big gotcha moment when I got 4 elements instead of 2 recently. When I was working with slices on [[0 0] [0 0]]. The double array of the first slice is 4 elements
Adam Gibson
@agibsonccc
Jun 20 2016 23:13
I mean the whole point is to avoid moving data around or copying it
views are working as intended
you reuse as much as possible
dup is also working as intended
You don't copy more than needed
Drew Shaw
@ds923y
Jun 20 2016 23:14
I was hoping I could forget I was working with views
Adam Gibson
@agibsonccc
Jun 20 2016 23:14
Not sure what you even mean by that
You shouldn't be using .data() anywaysa
anyways*
Drew Shaw
@ds923y
Jun 20 2016 23:14
I need a double array representation
Adam Gibson
@agibsonccc
Jun 20 2016 23:15
for?
This message was deleted
You could also try to use helper method I suppose, are you trying to interop with some other lib?
FWIW, python/matlab folks don't go outside the ndarrays usually
Usually people don't need the underlying representation
Its highly specific
And if you do you're usually doing something wrong
Drew Shaw
@ds923y
Jun 20 2016 23:19
Well I am working with core.matrix. The library is very permissive. Which means you should be able to pass a lot of things into the functions and they should work. One compliance test tests equality of a double array representation and an INDArray representation
Adam Gibson
@agibsonccc
Jun 20 2016 23:20
oh the lisp thing
hm
Yeah you'd need dup() then
In the java world that's not a problem in practice
That's a selfish stance to take but it's better than people naively copying data all the time
It's a huge perf improvement for things like copying vectors around
That being said - we'd take pull requests on things that make your life easier
I'd suggest maybe just building a direct toDoubleArray(boolean dup) or something equivalent on the INDArray directly
This way you don't have to go down in to .data()
Drew Shaw
@ds923y
Jun 20 2016 23:30
Sure. Thanks. A lot of what clojure does is aimed at program correctness and removing boilerplate (hence no types) not really speed. Because of the permissiveness the default implementation will take care of providing things like QR decomposition. I did not see a path to get a LAPACK object yet. So I can't provide it through Nd4j yet.
Adam Gibson
@agibsonccc
Jun 20 2016 23:30
right
Yeah multi backend lapack is about done...need to iron out a few things there yet though
Mostly bandwidth to roi ratios
Drew Shaw
@ds923y
Jun 20 2016 23:34
One thing that would be nice would be an epsilon equals where someone could specify an epsilon. That would be a better target of a pull request unless there is a better way of using the Nd4j functions than I am currently.
Adam Gibson
@agibsonccc
Jun 20 2016 23:34
I'm up for anything
Both those things just rely on modify basendarray and the INDArray api
You wouldn't have to go in to c++ land
Drew Shaw
@ds923y
Jun 20 2016 23:35
a-add (.add a eps) a-sub (.sub a eps) prt2 (println (type a-add)) gt (.gt a-add b-new) lt (.lt a-sub b-new) gt-min (.minNumber gt) gt-max (.maxNumber gt) lt-min (.minNumber lt) lt-max (.maxNumber lt)] (= gt-min gt-max lt-min lt-max)
that did not past well
I have to add and subtract from one matrix then compare it to the other.
Adam Gibson
@agibsonccc
Jun 20 2016 23:36
((((((((((((((((()))))))))))))))))
That's what I saw
)))
Sorry lisp and its cousins crack me up
Anyways - feel free to send us a pr on that
If it makes your life easier
Drew Shaw
@ds923y
Jun 20 2016 23:37
Sure
Adam Gibson
@agibsonccc
Jun 20 2016 23:37
We did that before
))))(())
I'm not sure I could ever code in clojure
Drew Shaw
@ds923y
Jun 20 2016 23:38
Your brain has to substitute expressions for values.
Adam Gibson
@agibsonccc
Jun 20 2016 23:38
My brain just threw a NullPointer
Drew Shaw
@ds923y
Jun 20 2016 23:39
The more common problem is an infinite loop with recursion and complex stacktraces.
Adam Gibson
@agibsonccc
Jun 20 2016 23:40
right
Drew Shaw
@ds923y
Jun 20 2016 23:40
Thanks so much
Adam Gibson
@agibsonccc
Jun 20 2016 23:40
yeah of course, if you need any help on modifying the code let me know
It's literally INDArray and BaseNDArray though