OK, I've racked my brain enough and need help. Using 0.17.2 on Linux, I have
this `proc` below.
proc segcount(row, Kn: int): int =
var cnt = 0
for k in 0..<Kn: cnt += seg[row + k].int
result = cnt
It works when I use it as below.
proc segsieve(Kn: int) = # for Kn resgroups in segment
...
...
var cnt = 0 # count for the segment primes '1'
bytes
for i in 0..<rescnt: # count Kn resgroups|bytes each
restrack
cnt += segcount(i*KB, Kn)
primecnt += cnt.uint # update primecnt for the segment
But when I try to parallelize this using spawn I get this error.
proc segsieve(Kn: int) = # for Kn resgroups in segment
...
...
var cnt = 0 # count for the segment primes '1'
bytes
for i in 0..<rescnt: # count Kn resgroups|bytes each
restrack
cnt += spawn segcount(i*KB, Kn) <-- error points to start of '+='
sync()
primecnt += cnt.uint # update primecnt for the segment
-------------------------------------------------------------
[jzakiya@localhost nim]$ nim c --cc:gcc --threads:on --d:release
ssozp5x1c1par.nim
Hint: used config file '/home/jzakiya/nim-0.17.2/config/nim.cfg' [Conf]
Hint: system [Processing]
Hint: ssozp5x1c1par [Processing]
Hint: math [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: algorithm [Processing]
Hint: typetraits [Processing]
Hint: threadpool [Processing]
Hint: cpuinfo [Processing]
Hint: os [Processing]
Hint: times [Processing]
Hint: posix [Processing]
Hint: ospaths [Processing]
Hint: linux [Processing]
Hint: cpuload [Processing]
ssozp5x1c1par.nim(154, 16) Error: type mismatch: got (uint64,
FlowVar[system.int])
but expected one of:
proc `+=`[T: SomeOrdinal | uint | uint64](x: var T; y: T)
proc `+=`[T: float | float32 | float64](x: var T; y: T)
[jzakiya@localhost nim]$