Merge pull request #111 from pjongy/bugfix_110_concurrency

Fix concurrency issue in newTensor
This commit is contained in:
sugarme 2023-10-19 16:06:08 +11:00 committed by GitHub
commit 96ed6cb348
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

View File

@ -49,13 +49,13 @@ func newScalarName(nameOpt ...string) string {
func newScalar(cscalar lib.Cscalar, nameOpt ...string) *Scalar {
x := &Scalar{
cscalar: cscalar,
name: newName(nameOpt...),
}
atomic.AddInt64(&ScalarCount, 1)
nbytes := x.nbytes()
atomic.AddInt64(&AllocatedMem, nbytes)
lock.Lock()
x.name = newName(nameOpt...)
ExistingScalars[x.name] = struct{}{}
lock.Unlock()

View File

@ -60,7 +60,6 @@ func newTensor(ctensor lib.Ctensor, nameOpt ...string) *Tensor {
if len(nameOpt) == 0 {
nameOpt = []string{}
}
name := newName(nameOpt...)
x := new(Tensor)
x.ctensor = ctensor
@ -70,6 +69,7 @@ func newTensor(ctensor lib.Ctensor, nameOpt ...string) *Tensor {
nbytes := x.nbytes()
atomic.AddInt64(&AllocatedMem, nbytes)
lock.Lock()
name := newName(nameOpt...)
if _, ok := ExistingTensors[name]; ok {
name = fmt.Sprintf("%s_%09d", name, TensorCount)
}