go NaN

分享
NaN

之前阅读源码,发现golang的可比性和map里面都有NaN的特判
以前写js可知,NaN与任何浮点型比较都是false,包括它自己

// main.go
package main

import (
	"fmt"
	"math"
)

type TestFloat struct {
	Float64 float64 `json:"float64"`
}

func main() {
	mp := make(map[float64]int)
	mp[math.NaN()] = 12
	mp[math.NaN()] = 14

	for i, v := range mp {
		fmt.Printf("%f %d\n", i, v)
	}
}

// ./main
NaN 12
NaN 14
获取

经过测试,类似strconv、encoding/json正常解析一个非正常float64字符串到float64,都是直接报错的,并没有出现NaN,目前我只发现底下这一种可能会遇到的业务场景

var i flaot64 = 0.0
fmt.Printf("%s\n", i)

阅读更多

CPU、ANE、GPU 连接同一块统一内存的简约概念插画

用一个矩阵乘法看懂 ANE、GPU 与统一内存

最近看 Kapitsa 的 ANE 实现时,我想先弄明白一个很小的问题:如果只计算两个矩阵相乘,数据究竟怎样进入 Apple Neural Engine,答案又从哪里回来? 于是把例子收进一个 main.mm 文件:输入是两个 2×2 矩阵,计算图内嵌在文件里,乘法交给 ANE,最后打印结果。本文先把硬件和内存关系画清楚,再顺着这个例子读代码。 1. ANE 是什么,它和 GPU 有什么区别? ANE(Apple Neural Engine)是苹果的神经网络加速器,可以归入 NPU。它与 GPU 是并列的计算单元,不是 GPU 内部的一种核心。 它们都能做大量乘加运算,但面向的软件接口和硬件取舍不同: 计算单元 在这里怎样理解 常见工作

By chainhelen