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 有数据对齐的问题!!!

			



