1.phpä¸è½½å®ç½ï¼
2..cp是源码什么意思?
3.PHP、swoole安装与配置
4.处cp的下载软件免费
5.OpenBSD3.6编译内核的方法
6.linuxä¸cpå½ä»¤å¦ä½ç¨ Cè¯è¨å®ç°
phpä¸è½½å®ç½ï¼
phpwebæä¹ä¸è½½
1ãå¨æµè§å¨ä¸æç´¢PHPï¼è¿å ¥phpå®ç½ã
2ãç¹å»Downloadsé项ï¼è¿å ¥ä¸è½½é¡µé¢ã
3ãéæ©ä¸ä¸ªéåçPHPçæ¬ï¼ç¶åç¹å»é¡µé¢ä¸çWindowsdownloadsã
4ãç¹å»zipæé®ï¼åç¹å»ä¸è½½æé®å³å¯ã
å¦ä½å¨æ¬å°æºä¸çphp?åå¤å·¥ä½é¦å è¦ä¸è½½å¦ä¸è½¯ä»¶ï¼æ¨èå°å®ç½ä¸è½½ï¼å¦æä½ æ¯åæä¸æ ·åªæ¯æµè¯ï¼é£ä¹å°skycn.comä¸è½½å§ï¼è¿æ ·æ¯è¾å¿«ã
Apache
ææµè¡çHTTPæå¡å¨è½¯ä»¶ä¹ä¸ãå¿«éãå¯é ãå¯éè¿ç®åçAPIæ©å±ï¼Perl/Python解éå¨å¯è¢«ç¼è¯å°æå¡å¨ä¸ï¼å®å ¨å è´¹ï¼å®å ¨æºä»£ç å¼æ¾ã
æä¸è½½çæ¯forWindowsçæ¬ï¼ç®åææ°çæ¬æ¯ï¼2.0.
PHP
PHPæ¯ä¸ç§HTMLå åµå¼çè¯è¨ãèPHPç¬ç¹çè¯æ³æ··åäºCãJavaãPerl以åPHPå¼çæ°è¯æ³ãå®å¯ä»¥æ¯CGIæè Perlæ´å¿«éçæ§è¡å¨æç½é¡µã
æä¸è½½çæ¯forWindowsçæ¬ï¼ç®åææ°çæ¬æ¯ï¼5.0.4
MySQL
æ¯ä¸ä¸ªå¤çº¿ç¨çï¼ç»æåæ¥è¯¢è¯è¨(SQL)æ°æ®åºæå¡å¨ãSQLå¨ä¸çä¸æ¯ææµè¡çæ°æ®åºè¯è¨ãMySQLçæ§è¡æ§è½é常é«ï¼è¿è¡é度é常快ï¼å¹¶é常容æ使ç¨ã
æä¸è½½çæ¯forWindowsçæ¬ï¼ç®åææ°çæ¬æ¯ï¼5.0.4Beta
phpMyAdmin
phpMyAdminæ¯ä¸ä¸ªç¨PHPç¼åçï¼å¯ä»¥éè¿äºèç½æ§å¶åæä½MySQLãéè¿phpMyAdminå¯ä»¥å®å ¨å¯¹æ°æ®åºè¿è¡æä½ã
æä¸è½½çæ¯forWindowsçæ¬ï¼ç®åææ°çæ¬æ¯ï¼2.6.2-pl1
å®è£ apacheåPHP
ä¸é¢æ¯æçå®è£ è®°å½ï¼
éæ©ç«¯å£ï¼å°apacheå®è£ å¨e:\apacheä¸ã
é ç½®apacheéçtl.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#define BUF_SIZE
#define PATH_LEN
void my_err(char *err_string, int line )
{
fprintf(stderr,"line:%d ",line);
perror(err_string);
exit(1);
}
void copy_data(const int frd,const int fwd)
{
int read_len = 0, write_len = 0;
unsigned char buf[BUF_SIZE], *p_buf;
while ( (read_len = read(frd,buf,BUF_SIZE)) ) {
if (-1 == read_len) {
my_err("Read error", __LINE__);
}
else if (read_len > 0) { //æ读åé¨ååå ¥ç®æ æ件
p_buf = buf;
while ( (write_len = write(fwd,p_buf,read_len)) ) {
if(write_len == read_len) {
break;
}
else if (write_len > 0) { //åªåå ¥é¨å
p_buf += write_len;
read_len -= write_len;
}
else if(-1 == write_len) {
my_err("Write error", __LINE__);
}
}
if (-1 == write_len) break;
}
}
}
int main(int argc, char **argv)
{
int frd, fwd; //读åæ件æ述符
int len = 0;
char *pSrc, *pDes; //åå«æåæºæ件路å¾åç®æ æ件路å¾
struct stat src_st,des_st;
if (argc < 3) {
printf("ç¨æ³ ./MyCp <æºæ件路å¾> <ç®æ æ件路å¾>\n");
my_err("arguments error ", __LINE__);
}
frd = open(argv[1],O_RDONLY);
if (frd == -1) {
my_err("Can not opne file", __LINE__);
}
if (fstat(frd,&src_st) == -1) {
my_err("stat error",__LINE__);
}
/*æ£æ¥æºæ件路å¾æ¯å¦æ¯ç®å½*/
if (S_ISDIR(src_st.st_mode)) {
my_err("ç¥è¿ç®å½",__LINE__);
}
pDes = argv[2];
stat(argv[2],&des_st);
if (S_ISDIR(des_st.st_mode)) { //ç®æ è·¯å¾æ¯ç®å½ï¼å使ç¨æºæ件çæ件å
len = strlen(argv[1]);
pSrc = argv[1] + (len-1); //æåæåä¸ä¸ªå符
/*å æ¾åºæºæ件çæ件å*/
while (pSrc >= argv[1] && *pSrc != '/') {
pSrc--;
}
pSrc++;//æåæºæ件å
len = strlen(argv[2]);
// . 表示å¤å¶å°å½åå·¥ä½ç®å½
if (1 == len && '.' == *(argv[2])) {
len = 0; //没æç³è¯·ç©ºé´ï¼åé¢å°±ä¸ç¨éæ¾
pDes = pSrc;
}
else { //å¤å¶å°æç®å½ä¸ï¼ä½¿ç¨æºæ件å
pDes = (char *)malloc(sizeof(char)*PATH_LEN);
if (NULL == pDes) {
my_err("malloc error ", __LINE__);
}
strcpy(pDes,argv[2]);
if ( *(pDes+(len-1)) != '/' ) { //ç®å½ç¼ºå°æåç'/'ï¼åè¡¥ä¸â/â
strcat(pDes,"/");
}
strcat(pDes+len,pSrc);
}
}
/* æå¼ç®æ æä»¶ï¼ ä½¿æéä¸æºæ件ç¸å*/
fwd = open(pDes,O_WRONLY | O_CREAT | O_TRUNC,src_st.st_mode);
if (fwd == -1) {
my_err("Can not creat file", __LINE__);
}
copy_data(frd,fwd);
//puts("end of copy");
if (len > 0 && pDes != NULL)
free(pDes);
close(frd);
close(fwd);
return 0;
}
[转]Megatron-LM源码系列(八): Context Parallel并行
原文链接: Megatron-LM源码系列(八): Context Parallel并行
Context Parallel并行(CP)与sequence并行(SP)相比,核心差异在于SP只针对Layernorm和Dropout输出的源码activation在sequence维度进行切分,而CP则进一步扩展,下载广告激励源码怎么用对所有input输入和所有输出activation在sequence维度上进行切分,源码形成更高效的下载并行处理策略。除了Attention模块外,源码其他如Layernorm、下载Dropout等模块在CP并行中无需任何修改,源码因为它们在处理过程中没有涉及多token间的下载交互。
Attention模块之所以特殊,源码技术源码大盘分析是下载因为在计算过程中,每个token的源码查询(query)需要与同一sequence中其他token的键(key)和值(value)进行交互计算,存在内在依赖性。下载因此,源码在进行CP并行时,什么叫源码交付计算开始前需要通过allgather通信手段获取所有token的KV向量,反向计算时则通过reduce_scatter分发gradient梯度。
为了降低显存使用,前向计算阶段每个GPU仅保存部分KV块,反向阶段则通过allgather通信获取全部KV数据。超强牛股源码这些通信操作在特定的rank位置(相同TP组内)进行,底层通过send和recv等操作实现allgather和reduce_scatter。
以TP2-CP2的transformer网络为例,CP并行的通信操作在Attention之前执行,其他则为TP通信。使用github源码论文AG表示allgather,RS表示reduce_scatter,AG/RS表示前向allgather反向reduce_scatter,RS/AG表示前向reduce_scatter反向allgather。
TP2对应为[GPU0, GPU1], [GPU2, GPU3],CP2指的就是TP组相同位置的rank号,即[GPU0, GPU2], [GPU1, GPU3]。CP并行类似于Ring Attention,但提供了OSS与FlashAttention版本,并去除了冗余的low-triangle causal masking计算。
LLM常因序列长度过长而导致显存耗尽(OOM)。传统解决方法包括重计算或扩大TP(tensor parallel)大小,但各自存在计算代价增加或线性fc计算时间减少与通信难以掩盖的问题。CP则能更高效地解决这一问题,每个GPU处理一部分序列,同时减少CP倍的通信和计算量,同时保持TP不变,使得activation量也减少CP倍。性能优化结果展示于图表中,用户可通过指定--context-parallel-size在Megatron中实现CP。
具体源码实现以Megatron-Core 0.5.0版本为例进行说明。
参考资料:[链接]