summaryrefslogtreecommitdiff
path: root/src/main/scala/com/nsrddyn/ALU
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/com/nsrddyn/ALU')
-rw-r--r--src/main/scala/com/nsrddyn/ALU/Hash.scala31
-rw-r--r--src/main/scala/com/nsrddyn/ALU/Prime.scala41
2 files changed, 72 insertions, 0 deletions
diff --git a/src/main/scala/com/nsrddyn/ALU/Hash.scala b/src/main/scala/com/nsrddyn/ALU/Hash.scala
new file mode 100644
index 0000000..9dc5a98
--- /dev/null
+++ b/src/main/scala/com/nsrddyn/ALU/Hash.scala
@@ -0,0 +1,31 @@
+package com.nsrddyn.alu
+
+import scala.util.hashing
+
+class Hash {
+
+import scala.util.hashing.MurmurHash3
+
+ def run(word: String, loopSize: Int): Unit = {
+
+ /* TODO: implement ALU friendly, so high speed hashing
+ * to continuously loop over voor stressing
+ * ALU
+ *
+ * While looking for hashing algorithmes to implement I stumbled on:
+ * https://scala-lang.org/api/3.x/scala/util/hashing/MurmurHash3$.html
+ *
+ * which is an implemntation of **smasher** http://github.com/aappleby/smhasher
+ * the exact type of hashing algorithm I was looking for
+ *
+ * In the scala description they state: "This algorithm is designed to generate
+ * well-distributed non-cryptographic hashes. It is designed to hash data in 32 bit chunks (ints). "
+ *
+ * (ints) -> ALU
+ *
+ */
+
+ for i <- 0 to loopSize do MurmurHash3.stringHash(word)
+
+ }
+}
diff --git a/src/main/scala/com/nsrddyn/ALU/Prime.scala b/src/main/scala/com/nsrddyn/ALU/Prime.scala
new file mode 100644
index 0000000..343dcee
--- /dev/null
+++ b/src/main/scala/com/nsrddyn/ALU/Prime.scala
@@ -0,0 +1,41 @@
+package com.nsrddyn.alu
+
+
+import com.nsrddyn.tools.Benchmark
+
+class Prime() extends Benchmark {
+
+ /*
+ * Calculate all primes up to limit
+ * This should stress the ALU in someway,
+ * doing this in a predictable manner,
+ * will hopefully keep the cpu pipeline busy
+ * and that way stress the branch predictor
+ *
+ * math.sqrt(n) => a prime number has 2 factors, one of the factors
+ * of the prime numbers has to be smaller then n
+ * after that we check if the number is whole number and thereby checking if its a prime
+ *
+ */
+
+
+ /*
+ * TODO: I did the countrary of what i wanted to accieve with the is prime function
+ * We want the function to be less optimized so that the CPU has more work == more stress
+ */
+
+
+ def isPrime(n: Int): Boolean = {
+ if n <= 1 then false
+ else !(2 to math.sqrt(n).toInt).exists(i => n % i == 0)
+ }
+
+ def run(n: Int, result: Boolean): Unit = {
+
+ for i <- 0 to n do if isPrime(i) == result then println("true") else println("false")
+
+ }
+
+
+}
+