Skip to content

Commit 2ca9a83

Browse files
committed
Merge branch '3.0.x' into 2.2.x
# Conflicts: # build.sbt # plugins-Builtins/src/main/scala-2.11/com/thoughtworks/deeplearning/plugins/Builtins.scala # plugins-Builtins/src/main/scala/com/thoughtworks/deeplearning/plugins/Builtins.scala # plugins-CumulativeFloatLayers/build.sbt # plugins-FloatLayers/src/main/scala/com/thoughtworks/deeplearning/plugins/FloatLayers.scala # plugins-INDArrayLayers/src/main/scala-2.11/com/thoughtworks/deeplearning/plugins/INDArrayLayers.scala # plugins-INDArrayWeights/build.sbt # plugins-ImplicitsSingleton/build.sbt # plugins-Layers/src/main/scala/com/thoughtworks/deeplearning/plugins/Layers.scala # project/build.properties # version.sbt
2 parents 6135d2a + 2468f24 commit 2ca9a83

File tree

60 files changed

+1391
-2567
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1391
-2567
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
target/
22
local.sbt
3+
secret/

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "Compute.scala"]
2+
path = Compute.scala
3+
url = https://github.com/ThoughtWorksInc/Compute.scala.git

.travis.yml

+16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
sudo: false
2+
13
matrix:
24
include:
35
- os: linux
@@ -15,6 +17,18 @@ matrix:
1517
on:
1618
condition: -e ./deploy.sbt
1719
all_branches: true
20+
before_install:
21+
- wget --quiet --output-document=/tmp/AMD-SDK.tar.bz2 http://cs.wisc.edu/~riccardo/assets/AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
22+
- mkdir /tmp/amd-app-sdk-installer
23+
- tar -xjf /tmp/AMD-SDK.tar.bz2 -C /tmp/amd-app-sdk-installer
24+
- export AMDAPPSDK=${HOME}/AMDAPPSDK
25+
- export OPENCL_VENDOR_PATH=${AMDAPPSDK}/etc/OpenCL/vendors
26+
- mkdir -p ${OPENCL_VENDOR_PATH}
27+
- sh /tmp/amd-app-sdk-installer/AMD-APP-SDK*.sh --tar -xf -C ${AMDAPPSDK}
28+
- echo libamdocl64.so > ${OPENCL_VENDOR_PATH}/amdocl64.icd
29+
- export LD_LIBRARY_PATH=${AMDAPPSDK}/lib/x86_64/sdk:${LD_LIBRARY_PATH}
30+
- chmod +x ${AMDAPPSDK}/bin/x86_64/clinfo
31+
- ${AMDAPPSDK}/bin/x86_64/clinfo
1832
- os: osx
1933
osx_image: xcode8
2034
language: java
@@ -32,6 +46,8 @@ cache:
3246
- $HOME/.sbt/boot/
3347
- $HOME/Library/Caches/Homebrew
3448

49+
before_script:
50+
3551
script:
3652
- sbt +test +unidoc
3753

.travis/amd_sdk.sh

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/bin/bash
2+
3+
# Original script from https://github.com/gregvw/amd_sdk/
4+
5+
# Location from which get nonce and file name from
6+
URL="https://developer.amd.com/amd-accelerated-parallel-processing-app-sdk/"
7+
URLDOWN="https://developer.amd.com/amd-license-agreement-appsdk/"
8+
9+
NONCE1_STRING='name="amd_developer_central_downloads_page_nonce"'
10+
FILE_STRING='name="f"'
11+
POSTID_STRING='name="post_id"'
12+
NONCE2_STRING='name="amd_developer_central_nonce"'
13+
14+
#For newest FORM=`wget -qO - $URL | sed -n '/download-2/,/64-bit/p'`
15+
FORM=`wget -qO - $URL | sed -n '/download-5/,/64-bit/p'`
16+
17+
# Get nonce from form
18+
NONCE1=`echo $FORM | awk -F ${NONCE1_STRING} '{print $2}'`
19+
NONCE1=`echo $NONCE1 | awk -F'"' '{print $2}'`
20+
echo $NONCE1
21+
22+
# get the postid
23+
POSTID=`echo $FORM | awk -F ${POSTID_STRING} '{print $2}'`
24+
POSTID=`echo $POSTID | awk -F'"' '{print $2}'`
25+
echo $POSTID
26+
27+
# get file name
28+
FILE=`echo $FORM | awk -F ${FILE_STRING} '{print $2}'`
29+
FILE=`echo $FILE | awk -F'"' '{print $2}'`
30+
echo $FILE
31+
32+
FORM=`wget -qO - $URLDOWN --post-data "amd_developer_central_downloads_page_nonce=${NONCE1}&f=${FILE}&post_id=${POSTID}"`
33+
34+
NONCE2=`echo $FORM | awk -F ${NONCE2_STRING} '{print $2}'`
35+
NONCE2=`echo $NONCE2 | awk -F'"' '{print $2}'`
36+
echo $NONCE2
37+
38+
wget --content-disposition --trust-server-names $URLDOWN --post-data "amd_developer_central_nonce=${NONCE2}&f=${FILE}" -O /tmp/AMD-SDK.tar.bz2;

Compute.scala

Submodule Compute.scala added at a40cc0b

DeepLearning/build.sbt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
libraryDependencies += "com.thoughtworks.raii" %% "asynchronous" % "2.0.0"
1+
libraryDependencies += "com.thoughtworks.raii" %% "asynchronous" % "3.0.0-M11"
22

33
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.patch)
44

DeepLearning/src/main/scala/com/thoughtworks/deeplearning/DeepLearning.scala

+4-17
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ object DeepLearning {
9393
/** Returns an asynchronous [[com.thoughtworks.raii.asynchronous.Do Do]] of forward pass, which creates a wengert list. */
9494
def forward(differentiable: Differentiable): Do[Tape[Data, Delta]]
9595

96-
/** Returns a [[com.thoughtworks.future.Future Future]] that updates [[plugins.Weights.Weight Weight]] internally used by `differentiable`. */
97-
def train(differentiable: Differentiable)(implicit monoid: MultiplicativeMonoid[Delta]): Future[Data]
96+
// /** Returns a [[com.thoughtworks.future.Future Future]] that updates [[plugins.Weights.Weight Weight]] internally used by `differentiable`. */
97+
// def train(differentiable: Differentiable)(implicit monoid: MultiplicativeMonoid[Delta]): Future[Data]
9898

99-
/** Returns a [[com.thoughtworks.future.Future Future]] of the [[DeepLearning.Tape.data data]] of the `differentiable` expression. */
100-
def predict(differentiable: Differentiable): Future[Data]
99+
// /** Returns a [[com.thoughtworks.future.Future Future]] of the [[DeepLearning.Tape.data data]] of the `differentiable` expression. */
100+
// def predict(differentiable: Differentiable): Future[Data]
101101
}
102102

103103
}
@@ -122,17 +122,4 @@ trait DeepLearning[Differentiable] extends SimulacrumIssue82WorkAround[Different
122122

123123
def forward(differentiable: Differentiable): Do[Tape[Data, Delta]]
124124

125-
final def train(differentiable: Differentiable)(implicit monoid: MultiplicativeMonoid[Delta]): Future[Data] = {
126-
val doData = forward(differentiable).flatMap[Data] { tape =>
127-
Do.garbageCollected(tape.backward(Do.now(monoid.one))).intransitiveMap { _: Unit =>
128-
tape.data
129-
}
130-
}
131-
doData.run
132-
}
133-
134-
final def predict(differentiable: Differentiable): Future[Data] = {
135-
val doData = forward(differentiable).map(_.data)
136-
doData.run
137-
}
138125
}

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# <a href="http://deeplearning.thoughtworks.school/"><img src="http://deeplearning.thoughtworks.school/assets/images/logo-text-black.png" alt="DeepLearning.scala" height="40"/></a> <a href="http://thoughtworks.com/"><img align="right" src="https://www.thoughtworks.com/imgs/tw-logo.png" alt="ThoughtWorks" height="15"/></a>
22

33
[![Join the chat at https://gitter.im/ThoughtWorksInc/DeepLearning.scala](https://badges.gitter.im/ThoughtWorksInc/DeepLearning.scala.svg)](https://gitter.im/ThoughtWorksInc/DeepLearning.scala?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4-
[![Build Status](https://travis-ci.org/ThoughtWorksInc/DeepLearning.scala.svg?branch=2.0.x)](https://travis-ci.org/ThoughtWorksInc/DeepLearning.scala)
4+
[![Build Status](https://travis-ci.org/ThoughtWorksInc/DeepLearning.scala.svg?branch=3.0.x)](https://travis-ci.org/ThoughtWorksInc/DeepLearning.scala)
55
[![Latest version](https://index.scala-lang.org/thoughtworksinc/deeplearning.scala/plugins-builtins/latest.svg)](https://index.scala-lang.org/thoughtworksinc/deeplearning.scala/plugins-builtins)
66
[![Scaladoc](https://javadoc.io/badge/com.thoughtworks.deeplearning/deeplearning_2.11.svg?label=scaladoc)](https://javadoc.io/page/com.thoughtworks.deeplearning/deeplearning_2.11/latest/com/thoughtworks/deeplearning/package.html)
77

build.sbt

+32-54
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,20 @@ includeFilter in unmanagedSources := (includeFilter in unmanagedSources).value &
44

55
lazy val DeepLearning = project
66

7-
lazy val `plugins-ImplicitsSingleton` = project
7+
lazy val `plugins-Layers` = project.dependsOn(DeepLearning, `plugins-Differentiables`)
88

9-
lazy val `plugins-Layers` = project.dependsOn(DeepLearning)
9+
lazy val `plugins-Weights` = project.dependsOn(DeepLearning, `plugins-Differentiables`)
1010

11-
lazy val `plugins-Weights` = project.dependsOn(DeepLearning)
11+
lazy val `plugins-Names` = project.dependsOn(`plugins-Differentiables`)
1212

13-
lazy val `plugins-Names` = project.dependsOn(`plugins-Layers`, `plugins-Weights`)
14-
15-
lazy val `plugins-Logging` = project.dependsOn(`plugins-Layers`, `plugins-Weights`)
13+
lazy val `plugins-Logging` = project.dependsOn(`plugins-Differentiables`)
1614

1715
lazy val `plugins-Operators` = project
1816

1917
lazy val `plugins-HLists` = project.dependsOn(DeepLearning)
2018

2119
lazy val `plugins-Products` = project.dependsOn(`plugins-HLists`)
2220

23-
lazy val `plugins-FloatTraining` = project.dependsOn(`plugins-Training`)
24-
2521
lazy val `plugins-FloatLiterals` = project.dependsOn(`DeepLearning`)
2622

2723
lazy val `plugins-FloatWeights` = project.dependsOn(`plugins-Weights`)
@@ -30,45 +26,38 @@ lazy val `plugins-FloatLayers` =
3026
project.dependsOn(
3127
`plugins-Layers`,
3228
`plugins-Operators`,
33-
`plugins-FloatLiterals` % Test,
34-
`plugins-FloatTraining` % Test,
35-
`plugins-ImplicitsSingleton` % Test
29+
`plugins-FloatLiterals` % Test
3630
)
3731

3832
lazy val `plugins-CumulativeFloatLayers` =
3933
project.dependsOn(
4034
DeepLearning % "test->test",
4135
`plugins-FloatLayers`,
42-
`plugins-FloatTraining` % Test,
4336
`plugins-FloatLiterals` % Test,
4437
`plugins-FloatWeights` % Test,
45-
`plugins-ImplicitsSingleton` % Test,
4638
`plugins-Products` % Test
4739
)
4840

49-
lazy val `plugins-Training` = project.dependsOn(DeepLearning)
50-
51-
lazy val `plugins-INDArrayTraining` = project.dependsOn(`plugins-Training`)
41+
lazy val `plugins-TensorLiterals` = project.dependsOn(`DeepLearning`, ProjectRef(file("Compute.scala"), "Tensors"))
5242

53-
lazy val `plugins-INDArrayLiterals` = project.dependsOn(DeepLearning)
43+
lazy val `plugins-TensorWeights` = project.dependsOn(`plugins-Weights`, ProjectRef(file("Compute.scala"), "Tensors"))
5444

55-
lazy val `plugins-INDArrayWeights` = project.dependsOn(`plugins-ImplicitsSingleton`, `plugins-Weights`)
56-
57-
lazy val `plugins-INDArrayLayers` =
58-
project.dependsOn(`plugins-ImplicitsSingleton`, `plugins-Layers`, `plugins-DoubleLiterals`, `plugins-DoubleLayers`)
45+
lazy val `plugins-TensorLayers` =
46+
project.dependsOn(
47+
`plugins-Layers`,
48+
`plugins-Operators`,
49+
`plugins-TensorWeights` % Test,
50+
`plugins-TensorLiterals` % Test,
51+
ProjectRef(file("Compute.scala"), "Tensors")
52+
)
5953

60-
lazy val `plugins-CumulativeINDArrayLayers` =
54+
lazy val `plugins-CumulativeTensorLayers` =
6155
project.dependsOn(
62-
`plugins-INDArrayLayers`,
63-
`plugins-CumulativeDoubleLayers`,
6456
DeepLearning % "test->test",
65-
`plugins-DoubleLiterals` % Test,
66-
`plugins-DoubleTraining` % Test,
67-
`plugins-INDArrayTraining` % Test,
68-
`plugins-INDArrayLiterals` % Test,
69-
`plugins-INDArrayWeights` % Test,
57+
`plugins-TensorLayers`,
7058
`plugins-Logging` % Test,
71-
`plugins-ImplicitsSingleton` % Test
59+
`plugins-TensorLiterals` % Test,
60+
`plugins-TensorWeights` % Test
7261
)
7362

7463
lazy val FloatRegex = """(?i:float)""".r
@@ -97,11 +86,6 @@ lazy val `plugins-DoubleWeights` =
9786
.dependsOn(`plugins-Weights`)
9887
.settings(sourceGenerators in Compile += copyAndReplace(`plugins-FloatWeights`).taskValue)
9988

100-
lazy val `plugins-DoubleTraining` =
101-
project
102-
.dependsOn(`plugins-Training`)
103-
.settings(sourceGenerators in Compile += copyAndReplace(`plugins-FloatTraining`).taskValue)
104-
10589
lazy val `plugins-DoubleLiterals` =
10690
project
10791
.dependsOn(`DeepLearning`)
@@ -121,42 +105,36 @@ lazy val `plugins-Builtins` =
121105
project.dependsOn(
122106
`plugins-Products`,
123107
`plugins-HLists`,
124-
`plugins-ImplicitsSingleton`,
125108
`plugins-Layers`,
126109
`plugins-Weights`,
127110
`plugins-Logging`,
128111
`plugins-Names`,
129112
`plugins-Operators`,
130-
`plugins-FloatTraining`,
131113
`plugins-FloatLiterals`,
132114
`plugins-FloatWeights`,
133115
`plugins-FloatLayers`,
134116
`plugins-CumulativeFloatLayers`,
135-
`plugins-DoubleTraining`,
136117
`plugins-DoubleLiterals`,
137118
`plugins-DoubleWeights`,
138119
`plugins-DoubleLayers`,
139120
`plugins-CumulativeDoubleLayers`,
140-
`plugins-INDArrayTraining`,
141-
`plugins-INDArrayLiterals`,
142-
`plugins-INDArrayWeights`,
143-
`plugins-INDArrayLayers`,
144-
`plugins-CumulativeINDArrayLayers`,
121+
`plugins-TensorLiterals`,
122+
`plugins-TensorWeights`,
123+
`plugins-TensorLayers`,
124+
`plugins-CumulativeTensorLayers`,
145125
DeepLearning % "test->test"
146126
)
127+
lazy val `plugins-Differentiables` = project
128+
147129
publishArtifact := false
148130

149-
lazy val unidoc =
150-
project
151-
.enablePlugins(StandaloneUnidoc, TravisUnidocTitle)
152-
.settings(
153-
UnidocKeys.unidocProjectFilter in ScalaUnidoc in UnidocKeys.unidoc := inAggregates(LocalRootProject),
154-
addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.3"),
155-
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full),
156-
scalacOptions += "-Xexperimental",
157-
scalacOptions += "-Ypartial-unification"
158-
)
131+
enablePlugins(StandaloneUnidoc, TravisUnidocTitle)
132+
unidocProjectFilter in ScalaUnidoc in unidoc := inAggregates(LocalRootProject)
133+
addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.3")
134+
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
135+
scalacOptions += "-Xexperimental"
136+
scalacOptions += "-Ypartial-unification"
159137

160138
organization in ThisBuild := "com.thoughtworks.deeplearning"
161139

162-
crossScalaVersions := Seq("2.11.11", "2.12.3")
140+
crossScalaVersions in Global := Seq("2.11.12", "2.12.4")

deploy.sbt.disabled

+14-10
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ scalacOptions in ThisBuild ++= {
1313
}
1414
}
1515

16-
lazy val secret = project settings(publishArtifact := false) configure { secret =>
17-
sys.env.get("GITHUB_PERSONAL_ACCESS_TOKEN") match {
18-
case Some(pat) =>
19-
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider
20-
secret.addSbtFilesFromGit(
21-
"https://github.com/ThoughtWorksInc/tw-data-china-continuous-delivery-password.git",
22-
new UsernamePasswordCredentialsProvider(pat, ""),
23-
file("secret.sbt"))
24-
case None =>
25-
secret
16+
lazy val secret = project.settings(publishArtifact := false).in {
17+
val secretDirectory = file(sourcecode.File()).getParentFile / "secret"
18+
sys.env.get("GITHUB_PERSONAL_ACCESS_TOKEN").foreach { token =>
19+
IO.delete(secretDirectory)
20+
org.eclipse.jgit.api.Git
21+
.cloneRepository()
22+
.setURI("https://github.com/ThoughtWorksInc/tw-data-china-continuous-delivery-password.git")
23+
.setDirectory(secretDirectory)
24+
.setCredentialsProvider(
25+
new org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider(token, "")
26+
)
27+
.call()
28+
.close()
2629
}
30+
secretDirectory
2731
}

plugins-Builtins/build.sbt

+9-14
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
11
enablePlugins(Example)
22

3-
exampleSuperTypes ~= { oldExampleSuperTypes =>
4-
import oldExampleSuperTypes._
5-
updated(indexOf("_root_.org.scalatest.FreeSpec"), "_root_.org.scalatest.AsyncFreeSpec")
3+
import scala.meta._
4+
5+
exampleSuperTypes := exampleSuperTypes.value.map {
6+
case ctor"_root_.org.scalatest.FreeSpec" =>
7+
ctor"_root_.org.scalatest.AsyncFreeSpec"
8+
case otherTrait =>
9+
otherTrait
610
}
711

8-
exampleSuperTypes += "_root_.com.thoughtworks.deeplearning.scalatest.ThoughtworksFutureToScalaFuture"
12+
exampleSuperTypes += ctor"_root_.com.thoughtworks.deeplearning.scalatest.ThoughtworksFutureToScalaFuture"
913

1014
libraryDependencies += "com.thoughtworks.each" %% "each" % "3.3.1" % Test
1115

12-
libraryDependencies ++= {
13-
import Ordering.Implicits._
14-
if (VersionNumber(scalaVersion.value).numbers >= Seq(2, 12)) {
15-
Nil
16-
} else {
17-
Seq("org.nd4j" %% "nd4s" % "0.8.0",
18-
"org.nd4j" % "nd4j-api" % "0.8.0",
19-
"org.nd4j" % "nd4j-native-platform" % "0.8.0" % Test)
20-
}
21-
}
16+
libraryDependencies += "com.thoughtworks.feature" %% "mixins-implicitssingleton" % "2.3.0-M8"
2217

2318
fork in Test := true

0 commit comments

Comments
 (0)