https://github.com/magnusmorton/trace-analysis
Tip revision: 4645af99638edea16d00e811c922b0fb9d6b86d9 authored by Magnus Morton on 11 January 2016, 20:33:10 UTC
subplots and recording output
subplots and recording output
Tip revision: 4645af9
matmul.rkt
#lang racket
(define test1 '((1 2 3 4) (1 2 3 4) (1 2 3 4) (1 2 3 4)))
(define test2 '((5 6 7 8) (5 6 7 8) (5 6 7 8) (5 6 7 8)))
(define (m-mult m1 m2)
(for/list ([r m1])
(m-mult-inner r m2)))
(define (make-mat rows cols)
(for/list ([i cols])
(random-list rows)))
(define (random-list size)
(for/list ([i size])
(random 10)))
(define (m-mult-inner r m2)
(for/list ([c (apply map list m2)])
(apply + (map * r c))))
(define (slice l offset n)
(take (drop l offset) n))
(define (m-mult-chunked m1 m2 n)
(let ([chunk (/ (length m1) n)])
(apply append
(for/list ([worker n])
(m-mult (slice m1 (* worker chunk) chunk) m2)))))
(m-mult test1 test2)
(m-mult-chunked (make-mat 1000 100) (make-mat 100 1000) 2)
;; -> '((19 22) (43 50))