您的位置:首页 > 前沿资讯

常用软件运行库(应用程序无法正常启动,图文详解应用程序无法正常启动的解决方法)

导读常用软件运行库文章列表:1、应用程序无法正常启动,图文详解应用程序无法正常启动的解决方法2、GUN软件有哪些?你都了解了吗?3、摩尔线程推出国产全功能GPU苏堤:耗时仅18个月就可

常用软件运行库文章列表:

常用软件运行库(应用程序无法正常启动,图文详解应用程序无法正常启动的解决方法)

应用程序无法正常启动,图文详解应用程序无法正常启动的解决方法

最近有小伙伴反映说不知为何新安装的几个游戏,程序都打不开,全都提示着应用程序无法正常启动0xc000007b,究竟是什么原因造成的呢?下面小编就来给你们普及一下这方面的知识。

应用程序无法正常启动0xc000007b?其实吧出现这个问题的原因很简单,就是因为系统没有,导致游戏兼容上的问题,造成显示0xc000007b内存出错。下面,小编给大家分享电脑应用程序无法正常启动0xc000007b。

应用程序无法正常启动0xc000007b原因:

1、电脑没有安装DirectX9或者DirectX 9.0 组件损坏;

2、电脑没有安装Microsoft Visual C

3、电脑上没有安装.net

解决办法

安装DirectX 9.0c

形成原因是电脑没有安装DirectX9或者DirectX 9.0 组件损坏, 我们只需要安装即可。

有很多人可能安装了DirectX 9.0c还是会提示!这个可能是因为你的电脑未安装32位版本的DirectX文件!这些有些对电脑不懂得就会不知道怎么办! 我们可以使用DirectX修复工具! 一键即可修复。

示例1

安装Microsoft Visual C 2005、2008、2010运行库

形成原因是电脑没有安装Microsoft Visual C 的用户,下载安装Microsoft Visual C 2005、2008、2010运行库,需要注意的是32位系统只安装32位的即可,64位系统,32位和64位的都要安装。

应用程序无法正常启动示例2

安装.net运行库

形成原因是电脑上没有安装.net的用户,下载安装 Mircosoft.net framework 4.0。

无法正常启动示例3

通常这三步,可以解决大部分的应用程序无法正常启动0xc000007b的问题

GUN软件有哪些?你都了解了吗?

GNU简介

GNU计划,又译为“革奴计划”,它的目标是创建一套完全自由的操作系统GNU,并且其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。

作为操作系统,GNU的发展仍未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。GNU的内核,称为Hurd,是自由软件基金会发展的重点,但是其发展尚未成熟。在实际使用上,多半使用linux内核作为系统核心。

Linux操作系统包含了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux。

GNU组件及软件非常丰富,如:

1、gcc

GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C ,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。

2、glibc

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

glibc与libc的关系:

glibc 和 libc 都是 Linux 下的 C 函数库。libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。

ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括:

glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。

Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。

libc 实际上是一个泛指。凡是符合实现了 C 标准规定的内容,都是一种 libc 。glibc 是 GNU 组织对 libc 的一种实现。它是 unix/linux 的根基之一。嵌入式行业里还常用 uClibc ,是一个迷你版的 libc 。

3、coreutils

coreutils 是GNU下的一个软件包,这个软件包中包含了很多程序,如ls、mv等程序。常用的如:

4、GDB

GDB(GNU symbolic debugger)是 GNU Project 调试器。

GDB 可以做四种主要的事情(以及支持这些事情的其他事情)来帮助你捕获行为中的错误:

启动你的程序,并指定可能影响其行为的所有内容。

使程序在指定条件下停止。

检查程序停止时发生的情况。

更改程序中的内容,以便你可以尝试纠正一个错误的影响,然后继续学习另一个错误。

这些程序可能与GDB(本机)在同一台计算机上执行,在另一台计算机(远程)上或在模拟器上执行。

5、binutils

GNU binutils是一组二进制工具集。包含的工具有:

6、其它

GNU系统包括很多软件包,还包括非GNU的自由软件。具体的介绍可以上gnu官网(http://www.gnu.org/software/)上查看:

以上是对GNU及其内容做了一个简单的介绍,下面对GUN相关的内容做一些实例分享:

GCC编译、链接

1、基本编译流程

使用gcc工具集将C语言源代码生成可执行程序需要经过4个步骤:预处理、编译、汇编、链接。如:

首先,调用预处理器cpp进行预处理,对源代码.c文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析,生成.i文件。

接着调用编译器gcc进行编译,输入上一步的.i文件,输出.s汇编文件。

然后调用汇编器as将.s为后缀的汇编语言文件处理生成以.o为后缀的目标文件。

当所有的目标文件都生成之后,调用链接器ld来进行链接生成可执行文件或库文件。这一节我们先看生成可执行文件,下一节再看如何生成库文件。

其中上图中表明的-E、-S、-c为gcc编译参数。gcc的基本用法如下:

gcc [options] [filenames]

下面以一个实例来演示将C语言源代码生成可执行程序的过程。

示例代码hello.c:

#include <stdio.h>int main(void){ printf("Hello gccn"); return 0;}

(1)预处理过程

使用预处理器cpp把源文件hello.c经过预处理生成hello.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。

预处理的命令为:

gcc -E hello.c -o hello.i

上述命令中-E是让编译器在预处理之后就退出,不进行后续编译过程;-o是指定输出文件名。

预处理之后得到的仍然是文本文件。hello.i文件部分内容截图如下:

(2)编译过程

使用编译器将预处理文件hello.i编译成汇编文件hello.s。

编译的命令为:

gcc -S hello.i -o hello.s

上述命令中-S让编译器在编译之后停止,不进行后续过程;-o是指定输出文件名。汇编文件hello.s是文本文件,部分内容截图如下:

(3)汇编过程

使用汇编器将汇编文件hello.s转换成目标文件hello.o。

汇编过程的命令为:

gcc -c hello.s -o hello.o

上述命令中-c、-o让汇编器把汇编文件hello.s转换成目标文件hello.o。目标文件hello.o是二进制文件。这时候我们可以使用如下命令查看hello.o的格式:

file hello.o

显示的内容:

hello.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

可以看到,hello.o是个ELF(Executable and Linking Format,可执行链接格式)格式文件。另外,hello.o是个二进制文件,使用vscode打开可能会出现乱码,可以安装一个Binary插件。部分内容截图如下:

(4)链接过程

链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。

命令为:

gcc hello.o -o hello

综上:

2、动态、静态链接

上一节的第(4)步的链接过程分为两种。一种是静态链接,另外一种是动态链接。它们的区别如:

(1)静态链接

优点:代码装载速度快,执行速度略比动态链接库快。

缺点:使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费。

(2)动态链接

优点:生成的可执行文件较静态链接生成的可执行文件小。

缺点:速度比静态链接慢;使用动态链接库的应用程序不是自完备的,需要依赖相关库。

初学,理解不了?没关系,分享一个易懂的比喻:

把链接过程看做我们平时学习时做笔记的过程。我们平时学习时准备一本笔记本专门记录我们的学习笔记,比如在某本书的某一页上看到一个很好很有用的知识,这时候我们有两种方法记录在我们的笔记本上,一种是直接把那一页的内容全部抄写一遍到笔记本上(静态链接);另一种是我们在笔记本上做个简单的记录(动态链接),比如写上:xxx知识点在《xxx》的xxx页。

从这两种方法中我们可以很清楚地知道两种方式的特点,第一种方式的优点就是我们在复习的时候就很方便,不用翻阅其它书籍了,但是缺点也很明显,就是占用笔记本的空间很多,这种方法很快就把我们的笔记本给写满了。第二种方式的优点就是很省空间,缺点就是每当我们复习的时候,手头上必须备着相关的参考书籍,比如我们去教室复习的时候,就得背着一大摞书去复习,这样我们复习的效率可能就没有那么高了。

这对应到我们的动态链接与静态链接上是不是就很好理解了。

下面看看具体实例:

文件1(main.c):

#include "hello.h"int main(void){print_hello();return 0;}

文件2(hello.c):

#include "hello.h"void print_hello(void){printf("hello worldn");}

文件3(hello.h):

#ifndef __HELLO_H#define __HELLO_H#include <stdio.h>void print_hello(void);#endif

① 演示动态链接

首先,将源文件生成目标文件(*.o),命令:

gcc -c main.c hello.c

在Linux中,动态库的扩展名一般为.so。我们把上面生成的hello.o文件生成相应的动态库,命令:

gcc -shared hello.o -o libhello.so

使用链接动态库的方式生成可执行程序,命令:

gcc main.o -L. -lhello -o hello_d_lib_test

这里的-L.的含义是在搜索库文件时包含当前目录,-lhello的含义是链接名称为libhello.so的动态库。

此时,运行hello_d_lib_test程序,可能会出现如下错误:

./hello_d_lib_test: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory

这是因为找不到共享库文件libhello.so,加载失败。因为一般情况下Linux会在/usr/lib路径中搜索需要用到的库,而libhello.so库并不在这个路径下。

解决方法有如下几种:

把这个文件拷贝至/usr/lib路径下。

.配置文件/etc/ld.so.conf中指定的动态库搜索路径。

临时生效,可以用 LD_LIBRARY_PATH 环境变量指定。

我们这里作为测试,使用临时生效的方式,使用环境变量LD_LIBRARY_PATH指定当前路径为动态库搜索路径,命令:

export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH

这时候再次运行程序就可以正常运行了。

② 演示静态链接

静态库用ar工具来制作。ar是一个归档工具,用于建立、修改、提取归档文件(archive)。一个归档文件可以包含多个目标文件,也被称为静态库。在Linux下,静态库的扩展名一般为.a。

把目标文件hello.o做成静态库,命令:

ar -rv libhello.a hello.o

其中rv参数为组合参数,其中r参数表示当建立的模块名已经存在时,则覆盖同名模块,v参数用来显示附加信息,比如被处理的文件的名字。

使用链接静态库的方法生成可执行程序,命令:

gcc main.o -L. -lhello -o hello_s_lib_test

删除静态库之后,可执行程序也是能正常运行的。事实上,使用链接静态库的方式生成的可执行程序与直接使用目标文件生成的可执行程序没有区别。只是经过了静态库的链接,变为了一个文件,方便于调用、移植和保存。

归档工具ar可以很方便地查看和删除归档文件中的成员。

查看静态库libhello.a中的内容,命令:

关于ar工具更多的命令参数可输入ar --help进行查看。

GCC工具集的使用

1、ar工具的使用

基本使用如上面静态链接中的用法。

2、addr2line工具的使用

addr2line可以将地址信息转化成函数名或行数。例如,如下代码运行会产生段错误:

test.c:

#include <stdio.h> int main(void){char *str = "hello";str[0] = 'a';return 0;}

首先,编译时加上-g参数,产生调试信息。

gcc test.c -g -o test

运行会产生段错误Segmentation fault (core dumped)。此时会产生相关错误系统存于系统日志中。我们可以使用如下命令查看我们当前程序的错误信息:

dmesg | grep test

此时会输出类似如下信息:

[ 1081.831805] test[2763]: segfault at 55f1d81186a4 ip 000055f1d811860d sp 00007ffc6fc1d080 error 7 in test_addr2line[55f1d8118000 1000]

此时借助addr2line工具可以查到产生错误的行号:

addr2line -e test 55f1d81186a4

3、nm工具的使用

nm工具用于显示文件中的符号,可以用于各种ELF格式文件。ELF格式文件包括如下三种类型:

nm工具的使用方式:

nm [option] [file]

其中,可以使用nn --help命令来查看支持的参数。其中,nm显示的符号类型如:

其中符号类型有大小写之分,小写字母表示这个符号是局部符号,大写字母表示这个符号是全局符号。

下面一起来使用nm工具查看目标目标文件的标号。

实例代码test.c:

#include <stdio.h>static int a = 1;static int b;void print_hello(void){ printf("hellon");}int main(void){ print_hello();}

编译之后得到可执行程序test。执行如下命令查看test中的符号:

nm test

输出结果如:

0000000000201010 d a0000000000201018 b b# 省略部分内容......000000000000064d T main000000000000063a T print_hello# 省略部分内容......

从输出结果可以知道,a是一个全局符号,该符号位于已初始化数据(RW Data)部分。b也是一个全局符号,该符号位于未初始化数据(BSS)部分。main符号与print_hello符号位于代码部分。

4、strip工具的使用

strip工具用于删除文件中的符号。

strip工具的使用方式:

strip [option] [file]

其中,可以使用strip--help命令来查看支持的参数。

我们以nm工具的演示代码来做演示。我们编译得到的可执行程序为test。没有执行strip之前,使用nm命令查看到的符号如:

0000000000201010 d a0000000000201018 b b# 省略部分内容......000000000000064d T main000000000000063a T print_hello# 省略部分内容......

使用ls -lh test命令查看test程序的大小为:8.2k。

这时候执行如下命令删除test的符号部分,输出test_strip文件:

strip test -o test_strip

使用nm命令查看test_strip文件是否有符号,显示结果为:

nm: test_strip: no symbols

表示test_strip没有符号。使用ls -lh test_strip命令查看test_strip的大小为:6k。可见去掉符号表之后地程序变小了。在资源有限的系统中,可以使用这种方法为程序进行瘦身。

5、readelf工具的使用

readelf工具用于显示ELF格式文件的信息。例如:

readelf -h test

输出结果如:

ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: DYN (Shared object file) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x530 Start of program headers: 64 (bytes into file) Start of section headers: 6528 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 9 Size of section headers: 64 (bytes) Number of section headers: 29 Section header string table index: 28

通过输出信息可以知道文件的类型、文件的格式等信息。

6、objdump工具的使用

objdump工具用于显示目标文件的信息。

objdump工具的使用方式:

objdump [option] [file]

如:

objdump -h hello.o

输出结果如:

hello.o: file format elf64-x86-64Sections:Idx Name Size VMA LMA File off Algn 0 .text 00000013 0000000000000000 0000000000000000 00000040 2**0 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1 .data 00000000 0000000000000000 0000000000000000 00000053 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000000 0000000000000000 0000000000000000 00000053 2**0 ALLOC 3 .rodata 0000000c 0000000000000000 0000000000000000 00000053 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 4 .comment 0000002a 0000000000000000 0000000000000000 0000005f 2**0 CONTENTS, READONLY 5 .note.GNU-stack 00000000 0000000000000000 0000000000000000 00000089 2**0 CONTENTS, READONLY 6 .eh_frame 00000038 0000000000000000 0000000000000000 00000090 2**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA

显示内容包含目标文件各个节的信息。

7、strings工具的使用

strings工具用于查看文件中的字符串。

strings工具的使用方式:

strings [option] [file]

其中,可以使用strings--help命令来查看支持的参数。

实例代码test.c:

#include <stdio.h>int main(void){ printf("11111n"); printf("22222n"); printf("33333n"); printf("44444n"); printf("55555n");}

编译之后得到可执行程序test。执行如下命令查看test中的符号:

strings test

输出结果如:

# 省略部分内容......1111122222333334444455555# 省略部分内容......

8、objcopy工具的使用

objcopy工具用于对目标文件的内容进行转换。

objcopy工具的使用方式:

objcopy [option] [file]

如使用如下命令可以删除可执行程序test中的.data段输出到test_rm:

objcopy test -R .data test_rm

objcopy配合-R参数的使用可以达到类似strip工具的效果,给程序进行瘦身。

GDB的基本使用

GDB(GNU Debugger)是一个强大的命令行调试工具。在Linux下进行开发,gdb工具是必知必会的工具之一。首先,看一下gdb常用的命令:

下面以实例来进行基本使用的演示:

示例代码gdb_test.c:

#include <stdio.h>// 测试函数1void test0(void){int i = -1;if (i = 0)printf("i = %dn", i);else if (i = 1)printf("i = %dn", i);elseprintf("i = %dn", i);}// 测试函数2void test1(void){int a[10] = {0,1,2,3,4,5,6,7,8,9};int *p = &a[1];int *p1 = (int*)(&a 1);printf("p[6] = %dn", p[6]); printf("*(p1 - 1) = %dn", *(p1 - 1));}// 主函数int main(int argc, char *argv[]){ test0(); test1(); return 0;}

这个示例代码中有两个测试函数,其实也是两道经典易错的面试笔试题。大家可以先思考一下结果是什么。下面我们使用gdb来一步一步调试及分析。

我们必须编译出带有调试信息(如行号等信息)的可执行文件才能使用gdb进行调试。在以上基础上加个-g参数即可生成调试信息。

除此之外,我们编译时应不使用优化选项,若使用优化,则编译器会对程序进行一些优化,有可能会更改语句的顺序及优化一些变量,从而可能会导致程序执行流程与源码流程不匹配的情况。可以使用-Wall参数打开所有警告,我们的编译命令变为:

gcc -g -Wall gdb_test.c -o gdb_test

使用上面的编译命令编译得到带调试信息的可执行程序gdb_test,有两种方法启动调试。

一种方法是先输入gdb命令进入gdb环境,再输入file 可执行程序装入调试文件,即:

另一种方法是直接输入gdb 可执行程序对该程序进行调试,即:

1、调试测试函数1

上面的测试函数1大家思考得出结果了吗?我们单步调试看看结果是怎么样的:

① 在test1函数入口打个断点:

② 运行到断点处:

③ 单步往下执行:

显然,单步运行到了这一句我们就得出了测试函数1的结果,即输出 i = 1。大家分析得对了吗?这要是不注意还真的容易出错,这里的if判断条件里用的是=号,而不是==号,这个小陷阱可能会迷惑一些初学C语言的朋友。

if语句的通用形式为:

if (expression)statement

可以明确的是:如果对expression为真(非0),则执行statement。本题中,如if (i = 0)其实就等价于

i = 0;if (i)

显然这里的if语句的expression为假,不会执行statement。

类似的if (i = 1)等价于

i = 1;if (i)

显然这里的if语句的expression为真,执行statement。

平时在发现自己写的代码执行的流程异常时,不妨debug调试一下,一步一步地走,看程序是否按照自己设计的流程走,看是不是我们的执行逻辑设计错了。

2、调试测试函数2

测试函数2也是一道极其经典的面试题目。不能一眼看出结果?没关系,我们一起调试分析一下。接着上面的流程,我们输出quit命令推出gdb环境,再重新进入调试test2。

① 在test2函数入口打个断点:

② 运行到断点处:

此时,我们不妨看一下a[1]元素的地址及a数组里面的内容是什么:

可见,在数组初始化之前,整个数组空间里的值是一些随机值。这里反映一个问题,局部变量在初始化之前的值是无规律的,所以不妨在定义局部变量的时候初始化一个确定的值,防止出错。

③ 单步往下执行:

此时,我们来看一下,指针变量p的值、a数组里的值:

因为此时第20行这条语句还未执行,所以p指向的地址还不是a[1]元素的地址。

再单步往下执行,然后我们看一下,指针变量p的值,及以指针变量p的值为首地址、往后偏移10个内存单元为结束地址,这一段空间内的值是什么:

至此,我们通过调试清晰地得到了p[6]的值。

继续单步往下执行,我们看一下,&a[0]的值、&a的值、(&a 1)的值、p1的值:

从gdb输出的信息我们知道&a的类型是(int (*) [10] ),即是一个指向含有10个元素的整形数组的指针,所以(&a 1)的意义是往后偏移10 * sizeof(int)。进一步,再利用一下其它输出的信息:

&a的值为0x7fffffffdda0&a 1的值为0x7fffffffddc8

两个值相减得到40,正好是整个数组所占的字节数。

而p1是一个整形指针,所以p1-1指向的就是往前偏移sizeof(int)个字节的地址,即a[9]的地址(0x7fffffffddc4),所以*(p1 - 1)的值也就是a[9]的值。最后我们再看一下&a往后的40个地址里的值都是些什么:

以上就是本次的实例演示,只是用到了一小部分gdb的命令,还有更多命令大家可以自己练习使用,基本的会了,不懂的地方遇到的时候再查也来得及。

可能写得有些乱,但也希望能对大家有帮助。总之,对于一些不确定的知识点或者程序的执行与预期不相符时,不妨调试一下,一步一步看数据有没有异常。

另外,这里使用vscode gdb命令行来对gdb命令做了基本演示,我们大致知道这么一回事就可以。实际中纯命令行调试的话,着实让人头疼,我们可以vscode gdb配置一个可视化的调试环境,提高我们的调试效率。

以上就是本次的分享,如果文章对你有帮助,麻烦帮忙三连支持,谢谢!

大家对于文章有什么建议的话也可以留言交流!

巨人的肩膀:

https://baike.baidu.com/item/glibc/10058561?fr=aladdin

https://blog.csdn.net/yasi_xi/article/details/9899599

https://blog.csdn.net/zhengnianli/article

摩尔线程推出国产全功能GPU苏堤:耗时仅18个月就可量产上市

产品的国产化的趋势愈演愈烈:近年来,从华为的国产开源操作系统“鸿蒙”到国产自主研发的首款内生安全交换芯片“玄武”等CPU、存储芯片等零部件,中国厂商的崛起与努力被更多人看在了眼里,也在国际上得到了认可。

近日由国产企业自主研发设计的GPU在首都北京市正式登场,这款新生儿GPU苏堤从“出生”到量产上市仅仅用了18个月,其背后的公司到底拥有怎样的背景呢?摩尔线程公司由创始人张建中于2020年10月选址在北京正式成立,成立一个月后就宣布成功拿下了A轮20亿元的融资,这20亿元的投资是由前海母基金、五源资本、建银国际、湖北高质量发展产业基金、上海国盛资本、中银国际旗下渤海中盛基金联合领投、招商证券等九家知名金融机构联合融资。创始人张建中曾任英伟达中国区总经理、全球副总裁,在英伟达任职时长达15年,于2020年9月,选择离开英伟达,并于次月创办了摩尔线程这家公司。

谈芯片离不开架构,架构对于芯片的作用是奠基石一般的存在:苏堤作为国产第一代全功能GPU芯片,所采用的的架构是MT Unified System Architecture,中文名叫做统一系统架构,英文名多用首字母缩写MUSA。苏堤作为全功能的芯片,一方面是因为MUSA架构中包含统一的驱动程序框架、软件运行库、指令集架构、编程模型、芯片架构,这也就是说如果用MUSA来做开发的话,还可以在云端等大多数的计算平台运行;另一方面则取决于这款芯片内置的AI计算加速、智能多媒体、现代图形渲染、科学计算与物理仿真四大引擎。张建中在发布会中表示,随着GPU苏堤的问世,摩尔线程公司将以最快的速度实现其量产交付,也会继续进行多功能GPU的研发设计。

有相关人士提问张建中:为什么要离开英伟达做这些?张建中则表示因为元计算时代已然开启。张建中从零到有作出了成绩,但是后续产品的研发设计也要一直在线才能保证国产的质量。在未来,还是很值得期待摩尔线程公司能为元计算时代带来多少进步与惊喜。

4096 核,32GB 显存!摩尔线程发布全新元计算架构 MUSA 和 GPU 产品

2022 年 3 月 30 日,摩尔线程在北京中关村国家自主创新示范区会议中心举办了主题为“元动力 创无限”的春季发布会。摩尔线程创始人兼 CEO 张建中解读了“元计算”这一产业趋势,并发布全新架构及系列重磅新品,包括:MUSA(Moore Threads Unified System Architecture)统一系统架构;基于 MUSA 架构打造的第一代多功能 GPU 芯片“苏堤”;面向 PC 和工作站的桌面级显卡 MTT S60 和专为数据中心打造的图形渲染和计算卡 MTT S2000;GPU 物理引擎 AlphaCore ;DIGITALME 数字人解决方案;及助力数字经济发展的多个元计算应用解决方案。

发布会现场,摩尔线程还演示了基于其 MUSA 架构多功能 GPU 的丰富应用,覆盖数字办公、影音娱乐、工业和建筑设计、地理信息系统、云桌面、云游戏等多个场景,充分展示了摩尔线程产品的广泛应用性,以及为数字经济加速提供的强劲动力。来自政府、高校、开发者、生态合作伙伴和行业客户以及媒体的众多嘉宾,共同见证了摩尔线程这一重要时刻。

摩尔线程是谁?

摩程线程成立于 2020 年 10 月,创始人是前英伟达公司全球副总裁、中国区总经理张建中。摩尔线程是一家以 GPU 芯片设计为主的集成电路高科技公司,专注于研发设计全功能 GPU 芯片及相关产品,公司致力于创新面向元计算应用的新一代 GPU,构建融合视觉计算、3D 图形计算、科学计算及人工智能计算的综合计算平台,建立基于云原生 GPU 计算的生态系统,助力驱动数字经济发展。

在此次发布会上,摩尔线程首次提出了“元计算”这一概念。元计算是支撑包括元宇宙在内的下一代互联网应用的通用算力平台,以图形计算和 AI 计算为基石,是物理世界数字化和数字世界物理化的底层算力支撑,将为数字经济开辟更广阔的发展空间。

摩尔线程创始人兼 CEO 张建中表示:“元计算时代已然开启,多功能 GPU 是元计算的算力基础设施,也是我们创新的原点。摩尔线程致力于面向元计算应用的新一代 GPU 创新,构建融合视觉计算、3D 图形计算、科学计算及人工智能计算的通用计算平台,建立基于云原生 GPU 计算的生态系统,助力数字经济发展。此次系列新品的发布,是公司发展的重大里程碑,更是我们研发实力、生态凝聚力和创新执行力的集中体现。”

发布 MUSA 统一系统架构及第一代芯片“苏堤”

在介绍完“元计算”概念后,张建中发布的一系列新产品将发布会推向了高潮。据张建中介绍,MUSA 是摩尔线程产品系列采用的统一系统架构,包括统一的编程模型、软件运行库、驱动程序框架、指令集架构和芯片架构。

与此同时,基于 MUSA 统一系统架构打造的第一代摩尔线程多功能 GPU 芯片——苏堤正式亮相。芯片内置现代图形渲染引擎、智能多媒体引擎、AI 计算加速引擎、物理仿真及科学计算四大引擎,旨在以先进的现代 GPU 架构、广泛的平台通用性和全栈计算能力,满足数字经济云边端多元算力需求。

下一代多平台 GPU 物理引擎 AlphaCore

AlphaCore 是由摩尔线程独立设计研发的下一代多平台 GPU 物理仿真系统,能够对物理世界中复杂的固体、柔性体、流体等效果进行超高精度的物理仿真处理,通过运算模拟,让布料、毛发和数字角色软体肌肉组织的物理交互效果达到电影级别般真实。

AlphaCore 物理引擎凭借强大的材料力学模块,可以实现丰富的材料交互动态效果,例如:弹塑性材料、各项异性材料、羽绒服、皮革、丝绸、绵纶等。基于 AlphaCore 开发的系列工具包括:布料毛发制作工具——VeraFiber;气体流体仿真工具——Catalyst;以及生物仿生计算工具——Bionics。对比 Houdini Vellum 的软体毛发布料和 PyroFX 的烟火流体, AlphaCore 均有 5~10 倍的性能提升。

同时,AlphaCore 也提供了多平台兼容版本,以最大程度兼容现有生态中的 Vulkan、CUDA、DirectX 等 Runtime API 环境,及 Houdini,Unreal,Unity 和 D5 游戏引擎和设计软件,广泛覆盖影视后期制作、动画、游戏、建筑表现等领域的实际应用场景。

发布面向 PC 和工作站的桌面级显卡 MTT S60

发布会上,基于 MUSA 统一系统架构的摩尔线程全新第一代桌面级显卡 MTT S60 首发,成为全场焦点。作为摩尔线程首款突破性多功能智能显卡,MTT S60 显卡主要面向 PC 和工作站,凭借其优秀的主流图形能力、广泛的 AI 算法支持、突破性的视频处理能力、以及独特的绿色能效技术,能够为图形渲染、数字办公、影音娱乐、智能制造 CAD/CAE、地理信息 GIS、建筑设计 BIM、视频编辑、人工智能应用以及主流游戏等娱乐需求提供强劲算力支持。

MTT S60 显卡基于 MUSA 统一系统架构 GPU 苏堤核心晶片制成,采用 12nm 制程,包含 2048 个 MUSA 核心,单精度浮点运算最高可达 6TFLOPS,像素填充率为 192G Pixel/s,搭载 8GB 显存,支持 4K/8K 高清显示。MTT S60 显卡不仅支持主流的 H.264 和 H.265 编码格式,还领先业内同类产品提供对 AV1 视频格式的硬件编码支持;而在硬件解码方面,则支持 AV1、H.264、H.265 等诸多格式的硬件解码。不仅如此,MTT S60 显卡还支持 DirectX、Vulkan、OpenGL 和 OpenGL ES 等众多图形 API 接口,可满足各类高图形负载应用对 2D 和 3D 图形渲染的需求。

MTT S60 的推出使得摩尔线程成为率先支持 Windows10 操作系统的 GPU 公司。MTT S60 显卡优异的图形性能亦可满足电子竞技用户的电子竞技游戏需求。不仅可以在 Windows10 操作系统、1080P 分辨率、最高画质环境下为《英雄联盟》电子竞技玩家提供流畅游戏体验,也可以在国产 Linux 操作系统环境下,完成《反恐精英:全球攻势》、《刀塔 2》等多款热门游戏的流畅运行。

目前,摩尔线程 MTT S60 支持英特尔、AMD、龙芯、飞腾、兆芯等主流 CPU 以及 Windows、麒麟、统信、Ubuntu 等操作系统,并且已经着手与众多 PC 合作伙伴开展合作,包括联想、浪潮、清华同方、长城超云等(排名不分先后)。与此同时,多家合作伙伴基于 MTT S60 显卡打造的行业应用在现场进行了演示,包括:金山办公、小鱼易连、太极图形、中望 CAD、广联达、D5、苍穹数码、超图软件、易智瑞、中地数码、OSG 社区和 Gala Sports 等。

生态协作始终是推动产业和体验升级的关键所在。因此,摩尔线程发起并携手众多行业合作伙伴共建中国“完美体验系统联盟(PES 联盟)”, 旨在通过产品规划、研发、最终生产阶段的协同合作,聚焦统一标准、整合资源、分享技术等,为生态伙伴创造更多价值,为终端用户打造完美体验。

专为数据中心打造的 MTT S2000

摩尔线程基于 MUSA 统一系统架构苏堤核心晶片打造的数据中心级多功能 GPU 产品 MTT S2000,同样引人注目。摩尔线程 MTT S2000 内置渲染、音视频编解码、人工智能加速和并行计算等硬件模块,能够提供图形图像渲染、视频云处理、AI 和科学计算在内的全栈功能。凭借其独特的渲染、虚拟化等能力和广泛的生态支持,MTT S2000 可以在云桌面、安卓云游戏、视频云、云渲染和 AI 推理计算加速等应用场景全面助力绿色数字经济发展。

MTT S2000 采用 12nm 制程,使用 4096 个 MUSA 核心,最大配置 32GB 显存,单精度算力最高可达到 12TFlops,支持 H.264、H.265、AV1 多路高清视频编解码,以及广泛的 AI 模型算法加速,支持 PyTorch、Tensorflow、PaddlePaddle 等主流深度学习框架。为提升 MUSA 架构产品在实际生产环境中的表现,摩尔线程还为 MTT S2000 系列产品推出了针对硬件架构进行专门优化的统一编程模型、运行库、驱动等软件工具,可方便开发人员完成应用的移植和适配,充分调用 MTT S2000 的硬件资源和算力。MTT S2000 支持 OpenGL、OpenGL ES、DirectX、Vulkan 等图形 API;通过 FFMPEG 和 VA-API/DXVA 等兼容支持音视频处理生态;并通过 OpenCL 及 Vulkan 满足 AI 和科学计算的程序兼容。

目前,摩尔线程 MTT S2000 已支持 x86 和 ARM 架构 CPU,服务器合作伙伴包括浪潮、新华三、联想、清华同方、长城超云、思腾合力等 OEM(排名不分先后)。现场还宣布了摩尔线程将与蔚领时代、声网和一流科技等在云游戏、音视频编解码和异构分布式计算方面的合作伙伴共同投入研发,携手建设生态,打造最优化的行业解决方案。此外,摩尔线程还与浪潮展开了元脑生态的战略合作,共同推进产业 AI 化的发展。

随着摩尔线程对创新的不懈追求,其产品和解决方案也将不断扩展和升级,将为更多行业提供更强大的核心动力,与更广泛的合作伙伴在数字经济大潮中合作共赢。

了解更多软件开发与相关领域知识,点击访问 InfoQ 官网:https://www.infoq.cn/,获取更多精彩内容!

核酸检测结果汇总统计助手功能上线 批量统计核酸报告有神器了

为积极服务企业复工复产、学校复学复课,天津市委网信办、市大数据管理中心最新研发上线核酸检测结果汇总统计助手功能。从今日起,企业、学校等相关管理人员可随时使用该功能,将汇总的多人次批量核酸检测报告截图自动生成为表格,方便您快速掌握员工、学生等核酸检测结果情况,省时省力且能保障数据安全。

核酸检测结果汇总统计助手功能为单机版程序,提取核酸检测结果截图中的姓名、脱敏身份证号码、采样时间、检测机构、检测结果等信息后,自动生成excel文件。读取到的图片信息无需上传至云端服务器,不存在信息采集和泄露个人隐私的风险,从而有效保障个人信息安全。

核酸检测结果汇总统计助手功能这么用

一、安装

第一步:下载程序。在浏览器中输入地址:https://dj.tjcac.gov.cn/tj ,点击天津市核酸检测结果汇总统计助手(Windows版本-含依赖包),下载程序。

程序下载页面

第二步:安装程序。双击“Tjtj-net.exe”程序,按照提示逐步安装。安装完成后,桌面会自动显示“核酸检测结果统计助手”快捷方式。

“核酸检测结果统计助手”图标

如双击图标不能运行,请安装对应的依赖程序:安装net4.8、安装微软C 运行库。

依赖程序(.net4.8 ,C 运行库)图标

二、收集员工、学生等相应核酸检测结果

1. 本程序仅支持识别通过“健康天津”APP和“津心办”APP查询的核酸检测结果截图。

2. 核酸检测结果截图务必包括:页面说明、个人信息、检测结果三部分。

3. 图片格式支持:jpg、jpeg、bmp三种格式;

4. 截图要严格按照图例截图,否则将无法识别。

核酸检测结果图例

三、一键生成汇总表格文件

第一步:打开程序。桌面---双击“核酸检测结果统计助手”快捷方式图标,进入功能页面。

“核酸检测结果统计助手”图标

功能页面

第二步:使用程序。点击“选择文件夹”按钮,选择已保存有需生成统计报表的文件夹,点击开始识别。

选择文件夹

开始识别

第三步:查找报表。在原保存核酸检测结果截图的文件夹下,自动生成“文件输出”文件夹---识别结果文件。

来源:腾讯慧政天津

免责声明:本文由用户上传,如有侵权请联系删除!