BY ziyang
脚本的运行权限的查看与设置
脚本运行之前需要查看脚本是否拥有运行的权限
- 在终端中输入命令
~ ls -l run.sh~
其中run.sh
替换为你要查看的目标脚本 - 查看脚本权限
我这里显示的是-rw-r--r-- 1 root root 81 Oct 28 11:14 format.sh
这将显示类似-rwxr-xr-x
的权限设置,其中r
代表读权限,w
代表写权限,x
代表执行权限。 - 修改脚本权限
输入命令~ (tecoal_gpu) root@c8bef3602592:/# chmod +x format.sh~ - 再次查看脚本权限
~ ls -l run.sh~ - 查看脚本权限
~ -rwxr-xr-x 1 root root 81 Oct 28 11:14 format.sh//正确~
附:
Q:如何改变一个脚本的权限使其可执行?
要改变一个脚本的权限使其可执行,你可以使用chmod
命令。以下是具体的步骤:
- 打开终端:
打开你的终端或命令行界面。 - 导航到脚本所在目录:
使用cd
命令导航到包含format.sh
脚本的目录。例如,如果脚本位于上一级目录,你可以使用:
cd ..
- 查看当前权限:
使用ls -l
命令查看format.sh
的当前权限:
ls -l format.sh
这将显示类似-rwxr-xr-x
的权限设置,其中r
代表读权限,w
代表写权限,x
代表执行权限。
- 更改权限:
使用chmod
命令添加执行权限。要使所有用户都能执行该脚本,可以使用:
chmod +x format.sh
这会在当前权限的基础上添加执行权限。
- 验证权限更改:
再次使用ls -l
命令检查权限是否已更改:
ls -l format.sh
你应该看到类似-rwxr-xr-x
的输出,表明现在所有用户都有执行权限。
- 运行脚本:
现在你可以尝试再次运行脚本:
./format.sh
或者如果你在子目录中,使用相对路径:
../format.sh
这些步骤将确保你的脚本具有执行权限,从而可以被正确执行。如果你在远程服务器或特定环境中工作,确保你有足够的权限来更改文件权限。
Q:这几行命令是什么意思?
(tecoal_gpu) root@c8bef3602592:/# ls -l format.sh
-rw-r--r-- 1 root root 81 Oct 28 11:14 format.sh
(tecoal_gpu) root@c8bef3602592:/# chmod +x format.sh
(tecoal_gpu) root@c8bef3602592:/# ls -l format.sh
-rwxr-xr-x 1 root root 81 Oct 28 11:14 format.sh
这几行命令展示了如何在Linux终端中检查文件权限,并更改文件的权限以使其可执行。下面是对每一行命令的解释:
(tecoal_gpu) root@c8bef3602592:/# ls -l format.sh
- 这是在Linux终端中执行的命令,用于列出当前目录下名为
format.sh
的文件的详细信息。ls -l
命令以长格式列出文件,显示文件的权限、所有者、大小、最后修改时间等信息。 - 输出显示
format.sh
文件的权限是-rw-r--r--
,这意味着:- 文件所有者(这里是
root
)可以读和写这个文件。 - 与文件所有者同组的用户可以读这个文件。
- 其他用户也可以读这个文件。
- 文件没有执行权限。
- 文件所有者(这里是
(tecoal_gpu) root@c8bef3602592:/# chmod +x format.sh
- 这是改变
format.sh
文件权限的命令,使其成为可执行文件。chmod
是改变文件模式(权限)的命令,+x
参数表示给文件添加执行权限。 - 这个命令对所有用户(所有者、所属组和其他用户)都添加了执行权限。
(tecoal_gpu) root@c8bef3602592:/# ls -l format.sh
- 这是再次执行
ls -l
命令来查看format.sh
文件的权限变化。 - 输出显示
format.sh
文件的权限现在是-rwxr-xr-x
,这意味着:- 文件所有者(这里是
root
)可以读、写和执行这个文件。 - 与文件所有者同组的用户可以读和执行这个文件。
- 其他用户也可以读和执行这个文件。
- 文件所有者(这里是
总结来说,这些命令展示了如何查看文件权限,如何给文件添加执行权限,以及如何验证权限更改是否成功。
google代码规范
注释的规范
注释符前必须要打两个空格,注释符后必须打一个空格
// 服了,好复杂的代码规范
整体代码结束规范
在代码结束后需要添加一个回车
#include<stdio.h>
int main()
{
printf("好复杂的代码规范");
return 0;
}
// 下面是结束回车,注意,结束空行中不能又空格,否则又会报错
一个模板声明
template <typename TYPE>
在 C++ 中,template <typename TYPE>
是一个模板声明,它允许函数或类在编译时接收不同的数据类型作为参数。模板使代码更具通用性,可以处理多种数据类型,而无需为每种类型编写独立的函数或类。
解释
template <typename TYPE>
的含义如下:
template
是 C++ 中定义模板的关键字。<typename TYPE>
指定模板参数为TYPE
,其中TYPE
是一个通用类型名。我们可以用TYPE
来替代具体的数据类型,比如int
、float
、_Float16
等。
使用场景
模板通常用于创建能够处理多种数据类型的函数或类。在卷积实现代码中,通过模板参数 TYPE
,可以编写一个泛型卷积前向传播函数 tecoKernelConvFwdFT16SingleThreadImpl
,然后根据实际情况调用该函数时指定不同的数据类型。例如:
template <typename TYPE>
__device__ void tecoKernelConvFwdFT16SingleThreadImpl(ConvFwdArgs arg) {
// 使用 TYPE 作为通用数据类型
TYPE *input; // 可以是 float、_Float16、int 等不同类型
// 其他实现代码
}
这样,tecoKernelConvFwdFT16SingleThreadImpl<_Float16>
会以 _Float16
类型实例化模板,使得代码能够灵活适应不同的浮点类型。
比赛经验
循环展开要在比赛最后几天去试,而且循环展开还要注意外层还是内层
simd_load 有数据对齐的问题!!!