Skip to content
Draft
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
url = https://github.com/rise-lang/executor.git
[submodule "lib/yacx"]
path = lib/yacx
url = https://github.com/ZerataX/yacx.git
url = https://github.com/rise-lang/yacx.git
[submodule "lib/elevate"]
path = lib/elevate
url = https://github.com/elevate-lang/elevate.git
Expand Down
116 changes: 44 additions & 72 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,82 +1,65 @@
ThisBuild / scalaVersion := "2.13.3"
ThisBuild / organization := "org.rise-lang"

lazy val commonSettings = Seq(
scalacOptions ++= Seq(
"-Wunused:nowarn",
"-Xfatal-warnings",
"-Xlint:-unused",
"-Ymacro-annotations",
"-unchecked",
"-deprecation",
"-feature",
"-language:reflectiveCalls",
),
fork := true
)

lazy val riseAndShine = (project in file("."))
.aggregate(executor, CUexecutor)
.dependsOn(meta, arithExpr, executor, CUexecutor, elevate)
.aggregate(meta, executor, CUexecutor)
.dependsOn(arithExpr, executor, CUexecutor, elevate)
.settings(
name := "riseAndShine",
organization := "org.rise-lang",
version := "1.0",
scalaVersion := "3.0.1",

javaOptions ++= Seq("-Djava.library.path=lib/yacx/build:lib/executor/lib/Executor/build",
"-DexecuteCudaTests=false", "-Xss26m"),

commonSettings,
scalacOptions ++= Seq(
// "-Xfatal-warnings",
// "-rewrite",
"-source:3.0-migration",
// "-indent",
// "-new-syntax",
"-deprecation",
"-feature",
"-unchecked",
"-language:reflectiveCalls",
),

fork := true,

libraryDependencies ++= Seq(
// scala
"org.scala-lang" % "scala-reflect" % scalaVersion.value,
"org.scala-lang" % "scala-compiler" % scalaVersion.value,
"org.scala-lang" % "scala-library" % scalaVersion.value,
"org.scala-lang.modules" %% "scala-xml" % "1.3.0",
"org.scala-lang.modules" %% "scala-parallel-collections" % "0.2.0",
// testing
"junit" % "junit" % "4.11",
"org.scalatest" %% "scalatest" % "3.1.0" % "test",
"org.apache.logging.log4j" % "log4j-core" % "2.14.1",
"org.apache.logging.log4j" %% "log4j-api-scala" % "12.0",
// json
"com.typesafe.play" %% "play-json" % "2.9.1",
// subprocess communication
"com.lihaoyi" %% "os-lib" % "0.7.3"
"org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.3",
// testing
"junit" % "junit" % "4.11",
"org.scalatest" %% "scalatest" % "3.2.9" % "test",
"org.apache.logging.log4j" % "log4j-core" % "2.14.1",
"org.wvlet.airframe" %% "airframe-log" % "21.5.4",
// os
("com.lihaoyi" %% "os-lib" % "0.7.8").cross(CrossVersion.for3Use2_13),
// json
("com.typesafe.play" %% "play-json" % "2.9.2").cross(CrossVersion.for3Use2_13),
// xml
"org.scala-lang.modules" %% "scala-xml" % "2.0.1"
),

compile := ((compile in Compile) dependsOn (generateRISEPrimitives, clap)).value,
test := ((test in Test) dependsOn (generateRISEPrimitives, clap)).value
compile := ((Compile / compile) dependsOn generateRISEPrimitives).value,
test := ((Test / test) dependsOn generateRISEPrimitives).value
)

lazy val generateRISEPrimitives = taskKey[Unit]("Generate RISE Primitives")

generateRISEPrimitives := {
runner.value.run("meta.generator.RisePrimitives",
(dependencyClasspath in Compile).value.files,
Seq((scalaSource in Compile).value.getAbsolutePath),
streams.value.log).failed foreach (sys error _.getMessage)
}
generateRISEPrimitives := (Def.taskDyn {
(meta / Compile / runMain).toTask(
" meta.generator.RisePrimitives " + (Compile / scalaSource).value.getAbsolutePath
)
}).value

lazy val generateDPIAPrimitives = taskKey[Unit]("Generate DPIA Primitives")

generateDPIAPrimitives := {
runner.value.run("meta.generator.DPIAPrimitives",
(dependencyClasspath in Compile).value.files,
Seq((scalaSource in Compile).value.getAbsolutePath),
streams.value.log).failed foreach (sys error _.getMessage)
}

lazy val meta = (project in file("meta"))
.settings(
name := "meta",
version := "1.0",
commonSettings,
libraryDependencies += "com.lihaoyi" %% "fastparse" % "2.2.2",
libraryDependencies += "com.lihaoyi" %% "scalaparse" % "2.2.2",
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.7.3",
libraryDependencies += "org.scalameta" %% "scalameta" % "4.4.10",
generateDPIAPrimitives := (Def.taskDyn {
(meta / Compile / runMain).toTask(
" meta.generator.DPIAPrimitives " + (Compile / scalaSource).value.getAbsolutePath
)
}).value

lazy val meta = (project in file("meta"))

lazy val arithExpr = project in file("lib/arithexpr")

Expand All @@ -86,22 +69,11 @@ lazy val CUexecutor = project in file("lib/yacx")

lazy val elevate = project in file("lib/elevate")

lazy val docs = (project in file("riseAndShine-docs"))
lazy val docs = (project in file("riseAndShine-docs"))
.settings(
moduleName := "riseAndShine-docs",
mdocOut := file("docs-website/docs"),
scalaVersion := "3.0.0",
)
.enablePlugins(MdocPlugin)
.dependsOn(riseAndShine)

lazy val clap = taskKey[Unit]("Builds Clap library")

clap := {
import scala.language.postfixOps
import scala.sys.process._
//noinspection PostfixMethodCall
"echo y" #| (baseDirectory.value + "/lib/clap/buildClap.sh") !
}



2 changes: 1 addition & 1 deletion lib/elevate
Submodule elevate updated 44 files
+1 −0 .gitignore
+14 −38 build.sbt
+0 −288 macros/src/main/scala/elevate/macros/CombinatorMacro.scala
+0 −248 macros/src/main/scala/elevate/macros/RuleMacro.scala
+0 −15 macros/src/main/scala/elevate/macros/StrategyMacro.scala
+1 −0 project/build.properties
+0 −1 project/plugins.sbt
+51 −72 src/main/scala/FSmooth/DSL.scala
+23 −31 src/main/scala/FSmooth/Differentiation.scala
+44 −66 src/main/scala/FSmooth/Expr.scala
+11 −5 src/main/scala/FSmooth/MSmooth.scala
+5 −9 src/main/scala/FSmooth/PairFunctionConstants.scala
+21 −39 src/main/scala/FSmooth/ScalarFunctionConstants.scala
+33 −33 src/main/scala/FSmooth/Type.scala
+39 −63 src/main/scala/FSmooth/TypeInference.scala
+2 −4 src/main/scala/FSmooth/ValueConstants.scala
+6 −11 src/main/scala/FSmooth/VectorFunctionConstants.scala
+11 −13 src/main/scala/FSmooth/lifting.scala
+10 −13 src/main/scala/FSmooth/replace.scala
+11 −18 src/main/scala/FSmooth/traversal.scala
+28 −31 src/main/scala/elevate/core/RewriteResult.scala
+11 −0 src/main/scala/elevate/core/Strategy.scala
+86 −0 src/main/scala/elevate/core/macros/Macros.scala
+0 −18 src/main/scala/elevate/core/package.scala
+3 −2 src/main/scala/elevate/core/strategies/Traversable.scala
+21 −31 src/main/scala/elevate/core/strategies/basic.scala
+13 −14 src/main/scala/elevate/core/strategies/debug.scala
+22 −26 src/main/scala/elevate/core/strategies/predicate.scala
+27 −42 src/main/scala/elevate/core/strategies/traversal.scala
+1 −2 src/main/scala/elevate/fsmooth/package.scala
+171 −169 src/main/scala/elevate/fsmooth/rules.scala
+21 −24 src/main/scala/elevate/fsmooth/traversal.scala
+2 −7 src/main/scala/elevate/heuristic_search/Heuristic.scala
+2 −7 src/main/scala/elevate/heuristic_search/HeuristicPanel.scala
+16 −22 src/main/scala/elevate/heuristic_search/HeuristicPanelImplementation.scala
+18 −29 src/main/scala/elevate/heuristic_search/Metaheuristic.scala
+1 −2 src/main/scala/elevate/heuristic_search/Runner.scala
+12 −19 src/main/scala/elevate/heuristic_search/heuristics/IterativeImprovement.scala
+17 −23 src/main/scala/elevate/heuristic_search/heuristics/Random.scala
+5 −7 src/main/scala/elevate/heuristic_search/util/IOHelper.scala
+49 −50 src/main/scala/elevate/heuristic_search/util/Path.scala
+4 −2 src/test/scala/FSmooth/typeInference.scala
+9 −7 src/test/scala/elevate/fsmooth/rewriteExamples.scala
+1 −2 src/test/scala/elevate/test_util/package.scala
2 changes: 1 addition & 1 deletion lib/yacx
Submodule yacx updated 1 files
+11 −13 build.sbt
21 changes: 21 additions & 0 deletions meta/build.sbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
lazy val meta = (project in file("."))
.settings(
name := "meta",
version := "1.0",
scalaVersion := "2.13.6",
scalacOptions ++= Seq(
"-Wunused:nowarn",
"-Xfatal-warnings",
"-Xlint:-unused",
"-Ymacro-annotations",
"-unchecked",
"-deprecation",
"-feature",
"-language:reflectiveCalls",
),
fork := true,
libraryDependencies += "com.lihaoyi" %% "fastparse" % "2.2.2",
libraryDependencies += "com.lihaoyi" %% "scalaparse" % "2.2.2",
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.7.8",
libraryDependencies += "org.scalameta" %% "scalameta" % "4.4.10",
)
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=1.4.7
sbt.version=1.5.5
6 changes: 3 additions & 3 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.4.0-RC1")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.3.0")
addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.17")
addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.4.8")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2")
addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.21")
18 changes: 9 additions & 9 deletions src/main/scala/apps/cameraPipelineRewrite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ object cameraPipelineRewrite {
}

def takeDropTowardsInput: Strategy[Rise] = {
normalize.apply(
normalize(
gentleBetaReduction() <+ etaReduction() <+
takeAll <+ dropNothing <+
mapFusion <+ mapIdentity <+
Expand Down Expand Up @@ -161,7 +161,7 @@ object cameraPipelineRewrite {
case _ => Failure(idxAfterF)
}

def normalizeSingleInput: Strategy[Rise] = normalize.apply(
def normalizeSingleInput: Strategy[Rise] = normalize(
dropBeforeTake <+ dropBeforeMap <+ takeBeforeMap <+
slideBeforeMap <+ mapFusion // <+ TODO
// (not(isAppliedMap) `;` idxAfterF `;` debugS("idx"))
Expand Down Expand Up @@ -293,21 +293,21 @@ object cameraPipelineRewrite {
argument(argument(normalizeInput) `;` repeat(mapFusion))
}

def stronglyReducedForm: Strategy[Rise] = normalize.apply(
def stronglyReducedForm: Strategy[Rise] = normalize(
betaReduction <+ etaReduction() <+
removeTransposePair <+ mapFusion <+
idxReduction <+ fstReduction <+ sndReduction
)

def gentlyReducedForm: Strategy[Rise] = normalize.apply(
def gentlyReducedForm: Strategy[Rise] = normalize(
gentleBetaReduction() <+ etaReduction() <+
removeTransposePair <+ mapFusion <+
idxReduction <+ fstReduction <+ sndReduction
)

def demosaicCircularBuffers: Strategy[Rise] = {
rewriteSteps(scala.collection.Seq(
normalize.apply(gentleBetaReduction()),
normalize(gentleBetaReduction()),

takeDropTowardsInput,

Expand Down Expand Up @@ -373,7 +373,7 @@ object cameraPipelineRewrite {

def precomputeSharpenStrengthX32: Strategy[Rise] = {
// |> toMem() |> letf(fun(strength_x32 =>
normalize.apply(gentleBetaReduction()) `;`
normalize(gentleBetaReduction()) `;`
afterTopLevel(
function(argument( // sharpen
???
Expand All @@ -399,22 +399,22 @@ object cameraPipelineRewrite {
}

def precomputeColorCorrectionMatrix: Strategy[Rise] = {
normalize.apply(gentleBetaReduction()) `;`
normalize(gentleBetaReduction()) `;`
afterTopLevel(
argument(argument({
case expr @ App(Lambda(x, color_correct), matrix) =>
Success(letf(lambda(toBeTyped(x), color_correct))(
p.mapSeq(p.mapSeq(fun(x => x)))(matrix)) !: expr.t)
case _ => Failure(precomputeColorCorrectionMatrix)
})) `;`
normalize.apply(gentleBetaReduction() <+ letHoist)
normalize(gentleBetaReduction() <+ letHoist)
)
}

def precomputeCurve: Strategy[Rise] = {
// TODO: apply_curve curve:
// |> mapSeq(fun(x => x)) |> letf(fun(curve =>
normalize.apply(gentleBetaReduction()) `;`
normalize(gentleBetaReduction()) `;`
afterTopLevel(
argument(function(argument(
topDown(
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/apps/convolution.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import rise.openCL.DSL._
import rise.openCL.primitives.oclReduceSeqUnroll
import util.{Time, TimeSpan}
import shine.OpenCL.KernelExecutor._
import reflect.Selectable.reflectiveSelectable

object convolution {
private val id = fun(x => x)
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/apps/gemv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import rise.core.primitives.{let => _, _}
import rise.core.types._
import rise.core.types.DataType._
import HighLevelConstructs.reorderWithStride
import reflect.Selectable.reflectiveSelectable

object gemv {
// we can use implicit type parameters and type annotations to specify the function type of mult
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/apps/harrisCornerDetection.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import rise.openCL.DSL._
import rise.openCL.primitives.oclRotateValues
import util.gen
import shine.OpenCL.KernelExecutor._
import reflect.Selectable.reflectiveSelectable

import scala.reflect.ClassTag

Expand Down
Loading