Skip to content

Instantly share code, notes, and snippets.

@akbir
akbir / install_python.sh
Created September 7, 2021 17:31
install_python_m1_pyenv
PYTHON_CONFIGURE_OPTS="--enable-framework" CFLAGS="-I$(brew --prefix xz)/include" LDFLAGS="-L$(brew --prefix xz)/lib" pyenv install 3.8.11
@akbir
akbir / render_multiple_thread_bug.go
Created April 26, 2020 22:02
Golang's Rand and Concurrency: render_multiple_thread_bug
render(){
// ...
// set up worker group
var wg sync.WaitGroup
for thread := 0; thread < NumThreads; thread++{
wg.Add(1)
go func(offset int){
for pixel := offset; pixel < width; pixel +=NumThreads {
@akbir
akbir / rand.go
Created April 26, 2020 22:01
Golang's Rand and Concurrency: rand.go
// line 293
var globalRand = New(&lockedSource{src: NewSource(1).(*rngSource)})
@akbir
akbir / sample_bug.go
Created April 26, 2020 21:59
Golang's Rand and Concurrency: sample_bug.go
import (
// ...
math/rand
)
sample(pixel int) {
rgb:= p.Vector{}
for s := 0; s < ns; s++{
u := (float64(i) + rand.Float64()) / float64(width)
ray := camera.RayAt(u)
rgb = rgb.Add(color(ray, world, 0, rand))
@akbir
akbir / sample.go
Created April 26, 2020 21:57
Golang's Rand and Concurrency: sample.go
sample(pixel int, rand *rand.Rand) {
rgb:= p.Vector{}
for s := 0; s < ns; s++{
u := (float64(i) + rand.Float64()) / float64(width)
ray := camera.RayAt(u)
rgb = rgb.Add(color(ray, world, 0, rand))
}
return rgb.DivideScalar(float64(ns))
}
@akbir
akbir / render_single_thread.go
Last active April 26, 2020 22:20
Golang's Rand and Concurrency: render_single_thread.go
render(){
// ...
// pixels for a single row
for pixel := 0; pixel < width ; pixel ++ {
sample(pixel)
}
}
@akbir
akbir / render_multiple_thread.go
Last active April 26, 2020 22:10
Golang's Rand and Concurrency: render_multiple_thread.go
render(){
// ...
// set up worker group
var wg sync.WaitGroup
for thread := 0; thread < NumThreads; thread++{
wg.Add(1)
go func(offset int){
// create RNG for thread