Facebook 开源数学语言 Tensor Comprehensions
Facebook AI 研究院近日开源了 Tensor Comprehensions ,这是一个 C++ 库及数学语言,功能齐全,能有效填补研究人员于数学运算领域的沟通鸿沟,并基于各种硬件后端上大规模运行工程模型。
Tensor Comprehensions 采用了 Just-In-Time 的编译自动生成机器学习社区所需的高性能代码,并被设计为高度可移植的。通过 Tensor Comprehensions,研究人员能够以数学符号的方式进行编写,系统能够根据需求进行编译调整,并输出专业的代码。
示例:
#include <ATen/ATen.h> #include "tc/aten/aten_compiler.h" #include "tc/core/mapping_options.h" // 1. Define and setup the TC compilation unit with CUDA memory management backed by ATen. std::string tc = R"TC( def TensorDot(float(N, C1, C2, H, W) I0, float(N, C2, C3, H, W) I1) -> (O) { O(n, c1, c3, h, w) +=! I0(n, c1, c2, h, w) * I1(n, c2, c3, h, w) })TC"; // 2. Allocate tensors with random data at::Tensor I0 = at::CUDA(at::kFloat).rand({32, 512, 8, 28, 28}); at::Tensor I1 = at::CUDA(at::kFloat).rand({32, 8, 2, 28, 28}); std::vector<at::Tensor> outputs; // 3. Run autotuning with evolutionary search starting from a naive option auto options = tc::MappingOptions::makeNaiveMappingOptions(); auto bestOption = autotune(cacheFilename, tc, "TensorDot", {I0, I1}, options, {options}); // 4. Compile and run the TC with the best option. tc::ATenCompilationUnit atCompl; atCompl.define(tc); auto handle = atCompl.compile("TensorDot", {I0, I1}, bestOption); atCompl.run("TensorDot", {I0, I1}, outputs, handle); // 5. Perform precision checks against an ATen reference implementation check({I0, I1}, outputs, [&I0, &I1](){ return ...; });大致结果如下:
- 数1亿粒米?!小学四年级数学作业看呆网友,老师这样解释…
- 小学生遭遇“奇葩”数学作业 要“数1亿粒米”?
- 开学了,妈妈告诉我要好好学数学,要不然就没韭菜割了。
- 江西明查暗访100个县市 少数学校一意孤行违规补课被查
- 做游戏演话剧 华东师大中学生夏令营讲“非常数学”
- 数学题:为什么绝大多数投资者都会输给市场
- 数学是体育老师教的?整顿A股市场乱象,两大评估机构刚被罚500万
- 语文98数学58,熊孩子“悬崖式”偏科根源可能是多动症
- 美股飙升 标普500三连涨!Facebook重挫24% (行情)
- 盘前参考:高点或已现 Facebook重挫为概念股敲警钟