小编Nil*_*s_M的帖子

git checkout master不切换分支 - 存储库坏了吗?

tl; dr:git checkout master没有切换到master分支,根本没有给出错误或任何输出,我也不知道为什么.任何其他分支工作正常.

我有一个git存储库,由分支developmentmaster.我做了一个新的克隆存储库,检查分支development是默认的.

$ git clone <REPO-URL> --branch development
$ git branch -a
* development
origin/HEAD -> origin/development
origin/development
origin/master
$ git show-ref 
656c781c2affc26792f857baf8e232de07101535 refs/heads/development
656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/HEAD
656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/development
cfee1a1761642453edf5d001565f23b50243ff09 refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

ref master指向正确,提交确实存在并且是我的master分支的最新提交.

到目前为止,一切看起来都很正常,但是当我尝试切换到掌握时,这种情况正在发生:

$ git checkout master
$ git branch 
* development
Run Code Online (Sandbox Code Playgroud)

没有来自结账的消息,没有错误,没有任何消息,并且没有切换分支.

到目前为止我尝试过的事情:

  • master2从同一个commit => checkout 创建第二个分支工作正常.
  • 删除并重新创建分支主数据本地和原点=>再次无法检出
  • git checkout -b master --track origin/master=>有效,但我认为没有必要使用此命令,因为这是git checkout master应该自动执行的操作
  • 承诺并推动掌握工作,但不会改变结账问题
  • 我尝试了几个git版本(1.9,2.2)和机器(linux,windows),问题随处可见.

还有什么想法?我错过了什么?我的存储库坏了吗?我怎样才能解决这个问题?

git git-checkout

18
推荐指数
2
解决办法
8804
查看次数

运行具有多个节点的slurm脚本,使用1个任务启动作业步骤

我正在尝试使用批处理脚本启动大量作业步骤.不同的步骤可以是完全不同的程序,并且每个步骤只需要一个CPU.首先,我尝试使用--multi-prog参数来执行此操作srun.不幸的是,当以这种方式使用分配给我的作业的所有CPU时,性能会大幅降低.运行时间几乎增加到序列化值.通过订阅我可以改善这一点.我在网上找不到关于这个问题的任何内容,所以我认为它是我正在使用的集群的配置问题.

所以我试着走另一条路.我实现了以下脚本(通过启动sbatch my_script.slurm):

#!/bin/bash
#SBATCH -o $HOME/slurm/slurm_out/%j.%N.out
#SBATCH --error=$HOME/slurm/slurm_out/%j.%N.err_out
#SBATCH --get-user-env
#SBATCH -J test
#SBATCH -D $HOME/slurm
#SBATCH --export=NONE
#SBATCH --ntasks=48

NR_PROCS=$(($SLURM_NTASKS))
for PROC in $(seq 0 $(($NR_PROCS-1)));
do
    #My call looks like this:
    #srun --exclusive -n1 bash $PROJECT/call_shells/call_"$PROC".sh &
    srun --exclusive -n1 hostname &
    pids[${PROC}]=$!    #Save PID of this background process
done
for pid in ${pids[*]};
do
    wait ${pid} #Wait on all PIDs, this returns 0 if ANY process fails
done
Run Code Online (Sandbox Code Playgroud)

我知道,--exclusive …

cluster-computing slurm

9
推荐指数
1
解决办法
4994
查看次数

串行调用mpi二进制文件作为mpi应用程序的子进程

我有一个大型并行(使用MPI)模拟应用程序,它可以生成大量数据.为了评估这些数据,我使用了一个python脚本.

我现在需要做的是运行此应用程序很多次(> 1000)并从结果数据计算统计属性.

到目前为止,我的方法是,使用并行运行的python脚本(使用mpi4py,使用即48个节点)调用模拟代码subprocess.check_call. 我需要这个调用来串行运行我的mpi模拟应用程序. 在这种情况下,我不需要模拟并行运行.然后,python脚本可以并行分析数据,并在完成后将启动新的模拟运行,直到累积大量运行.

目标是

  • 不保存2000次运行的整个数据集
  • 将中间数据保存在内存中

Stub MWE:

档案multi_call_master.py:

from mpi4py import MPI
import subprocess

print "Master hello"

call_string = 'python multi_call_slave.py'

comm = MPI.COMM_WORLD

rank = comm.Get_rank()
size = comm.Get_size()

print "rank %d of size %d in master calling: %s" % (rank, size, call_string)

std_outfile = "./sm_test.out"
nr_samples = 1
for samples in range(0, nr_samples):
    with open(std_outfile, 'w') as out:
        subprocess.check_call(call_string, shell=True, stdout=out)
#       analyze_data()
#       communicate_results()
Run Code Online (Sandbox Code Playgroud)

file multi_call_slave.py(这将是C模拟代码):

from mpi4py …
Run Code Online (Sandbox Code Playgroud)

c python parallel-processing mpi

6
推荐指数
1
解决办法
2125
查看次数

可以realloc缩小左侧的数组(仅限C)吗?

我想移动我记忆中的一大块数据.不幸的是,这些数据被保存为数组,我无法改变它.我不能使用循环数组,因为我不想改变的一些fortran方法也使用相同的内存.最重要的是,在运动之间非常频繁地访问阵列.所以我可以这样做:

int *array = (int*) malloc(sizeof(int)*5);
int *array2=NULL;
//Now i want to move my data one step to the left
array=(int*) realloc(array,6);
array2=array+1;
memmove(array,array2,5*sizeof(int));
array=(int*) realloc(array,5);
Run Code Online (Sandbox Code Playgroud)

这应该工作正常,但它看起来很浪费;).如果我可以告诉我的编译器拿走缩小数组左侧的数据,我的数据会在内存中蔓延,但我不需要进行任何复制.像这样:

int *array = (int*) malloc(sizeof(int)*5);
//Now i want to move my data one step to the left
array=(int*) realloc(array,6);
array=(int*) realloc_using_right_part_of_the_array(array,5);
Run Code Online (Sandbox Code Playgroud)

所以基本上我想用指针完成,array+1剩下的4个字节被释放.我打得四处free()malloc(),但它没有工作......我知道,realloc的还可能会导致的memcpy调用,但不是每次!所以它可能会更快,不是吗?

c realloc shrink

4
推荐指数
1
解决办法
1444
查看次数