小编Fel*_*ein的帖子

如何使用一个 slurm 批处理脚本并行运行作业?

我正在尝试与一个 Slurm 批处理脚本并行运行多个 python 脚本。看一下下面的例子:

#!/bin/bash
#
#SBATCH --job-name=test
#SBATCH --output=/dev/null
#SBATCH --error=/dev/null
#SBATCH --ntasks=2
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=1G
#SBATCH --partition=All
#SBATCH --time=5:00

srun sleep 60
srun sleep 60
wait
Run Code Online (Sandbox Code Playgroud)

如何调整脚本以便执行仅需 60 秒(而不是 120 秒)?将脚本拆分为两个脚本不是一个选项。

parallel-processing slurm

5
推荐指数
1
解决办法
5062
查看次数

slurm 中的关键字 --exclusive 是什么意思?

这是[如何使用一个 slurm 批处理脚本并行运行作业?] 的后续问题。目标是创建一个 SBatch 脚本,它可以启动多个进程并并行运行它们。damienfrancois给出的答案 非常详细,看起来像这样。

#!/bin/bash
#
#SBATCH --job-name=test
#SBATCH --output=/dev/null
#SBATCH --error=/dev/null
#SBATCH --partition=All

srun -n 1 -c 1 --exclusive sleep 60 &
srun -n 1 -c 1 --exclusive sleep 60 &
....
wait
Run Code Online (Sandbox Code Playgroud)

但是,我无法理解Exclusive关键字。如果我使用该关键字,则会选择集群的一个节点,并在那里启动所有进程。但是,我希望 Slurm 将 [“sleeps”/steps] 分布在整个集群上。

那么关键字Exclusive是如何工作的呢?根据Slurm 文档,不应发生对一个节点的限制,因为该关键字是在一步分配中使用的。

[我是 Slurm 新手]

parallel-processing slurm

5
推荐指数
0
解决办法
6534
查看次数

Haskell 的任何 Monad 中如何处理类型错误?

我目前在理解 Haskell 中的任一种单子时遇到问题。两者都是 Monad 数据类型的实例。因此,我可以像这样在 Do 块中使用任一...

type MyAccount = Integer

transaction :: Integer -> MyAccount -> Either String MyAccount
transaction value account | value + account < 0 = Left "Error: insufficient funds!" 
                          | otherwise = return $ account + value

Test1 :: Either String MyAccount
Test1 = do 
          account_state <- return 1000                       
          r1 <- transaction (-200) account_state             
          r2 <- transaction (-1000) r1                    
          return r2                                       
Run Code Online (Sandbox Code Playgroud)

这是代码的工作片段:account_state、r1 和 r2是整数类型。因此函数事务正常工作。然而..

Test2 :: Either String MyAccount
Test2 = …
Run Code Online (Sandbox Code Playgroud)

monads haskell either

3
推荐指数
1
解决办法
257
查看次数

如何从信号中获取频率?

我正在寻找一种从信号中获取频率的方法。下面是一个例子:

signal = [numpy.sin(numpy.pi * x / 2) for x in range(1000)]
Run Code Online (Sandbox Code Playgroud)

此数组将代表录制声音的样本(x = 毫秒)

sin(pi*x/2) => 250 赫兹

我们如何从信号(点列表)到从这个数组中获取频率?

注意: 我阅读了许多 Stackoverflow 线程并观看了许多 youtube 视频。我还没有找到答案。请用简单的词。(我很感激每一个回答)

python signals fft frequency

2
推荐指数
1
解决办法
2961
查看次数

Haskell 中的 pure 和 mempty 有什么区别?

在学校,我的任务是编写一个函数,将数字附加到列表的左侧,如果它们是偶数的话。类型签名如下:

appendIfEven :: (Applicative f, Monoid (f a), Integral a) => a -> f a -> f a
Run Code Online (Sandbox Code Playgroud)

我的回答是下面的一段代码

appendIfEven :: (Applicative f, Monoid (f a), Integral a) => a -> f a -> f a
appendIfEven x ms = if x `mod` 2 == 0 then mempty x `mappend` ms else ms
Run Code Online (Sandbox Code Playgroud)

Haskell 可以编译我的代码,但它不能正常工作。经过一些实验,我将mempty切换为pure

appendIfEven :: (Applicative f, Monoid (f a), Integral a) => a -> f a -> f a
appendIfEven x ms = …
Run Code Online (Sandbox Code Playgroud)

haskell applicative monoids

2
推荐指数
1
解决办法
112
查看次数

如何向 Haskell 中现有的 Type 类添加新函数?

我目前正在尝试了解 Haskell 类型类。在创建下面的简单示例并看到它有效之后......

data MyMaybe a = MyNothing | MyJust a
    deriving(Show)

class IncreaseByOne a where
    addOne :: a -> a

instance (Num a) => IncreaseByOne (MyMaybe a) where
    addOne  MyNothing = (MyNothing)
    addOne (MyJust x) = (MyJust (x+1))
Run Code Online (Sandbox Code Playgroud)

问我自己:是否可以将函数addOne添加到现有的 Type-Class Num。所以所有数字都可以使用addOne函数。就像是:

instance IncreaseByOne Num where
    addOne x = x+1 
    
Run Code Online (Sandbox Code Playgroud)

haskell typeclass

0
推荐指数
1
解决办法
126
查看次数