@@ -204,7 +204,7 @@ evalExpr env (ArrayExpr exprs) = do
204
204
return . Intermediate . IArray $ Array. listArray (1 , toInteger (length exprs)) refs'
205
205
206
206
evalExpr env (VectorExpr exprs) = do
207
- whnfs <- parallelMapM (evalExpr env) exprs
207
+ whnfs <- mapM (evalExpr env) exprs
208
208
case whnfs of
209
209
((Intermediate (ITensor (Tensor _ _ _))): _) -> do
210
210
ret <- mapM toTensor whnfs >>= tConcat' >>= fromTensor
@@ -216,7 +216,7 @@ evalExpr env (TensorExpr nsExpr xsExpr supExpr subExpr) = do
216
216
nsWhnf <- evalExpr env nsExpr
217
217
ns <- ((fromCollection nsWhnf >>= fromMList >>= mapM evalRef >>= mapM fromWHNF) :: EgisonM [Integer ])
218
218
xsWhnf <- evalExpr env xsExpr
219
- xs <- fromCollection xsWhnf >>= fromMList >>= parallelMapM evalRef
219
+ xs <- fromCollection xsWhnf >>= fromMList >>= mapM evalRef
220
220
supWhnf <- evalExpr env supExpr
221
221
sup <- fromCollection supWhnf >>= fromMList >>= mapM evalRefDeep -- >>= mapM extractScalar'
222
222
subWhnf <- evalExpr env subExpr
@@ -559,7 +559,7 @@ evalExpr env (GenerateTensorExpr fnExpr sizeExpr) = do
559
559
size'' <- collectionToList size'
560
560
ns <- (mapM fromEgison size'') :: EgisonM [Integer ]
561
561
fn <- evalExpr env fnExpr
562
- xs <- parallelMapM (\ ms -> applyFunc env fn (Value (makeTuple ms))) (map (\ ms -> map toEgison ms) (enumTensorIndices ns))
562
+ xs <- mapM (\ ms -> applyFunc env fn (Value (makeTuple ms))) (map (\ ms -> map toEgison ms) (enumTensorIndices ns))
563
563
case (ns, xs) of
564
564
([1 ], x: [] ) -> return $ x
565
565
_ -> fromTensor (Tensor ns (V. fromList xs) [] )
@@ -632,6 +632,19 @@ evalExpr env (TensorMap2Expr fnExpr t1Expr t2Expr) = do
632
632
yRef <- newEvaluatedObjectRef y
633
633
applyFunc env fn (Intermediate (ITuple [xRef, yRef]))
634
634
635
+ evalExpr env (ParExpr expr1 expr2) = undefined
636
+ evalExpr env (PseqExpr expr1 expr2) = undefined
637
+
638
+ evalExpr env (PmapExpr fnExpr cExpr) = do
639
+ fn <- evalExpr env fnExpr
640
+ xs <- evalExpr env cExpr >>= collectionToList
641
+ ys <- parallelMapM (applyFunc' env fn) xs
642
+ return $ Value $ Collection (Sq. fromList ys)
643
+ where
644
+ applyFunc' :: Env -> WHNFData -> EgisonValue -> EgisonM EgisonValue
645
+ applyFunc' env fn x = applyFunc env fn (Value x) >>= evalWHNF
646
+
647
+
635
648
evalExpr _ SomethingExpr = return $ Value Something
636
649
evalExpr _ UndefinedExpr = return $ Value Undefined
637
650
evalExpr _ expr = throwError $ NotImplemented (" evalExpr for " ++ show expr)
@@ -682,7 +695,7 @@ evalWHNF (Intermediate (IStrHash refs)) = do
682
695
evalWHNF (Intermediate (ITuple [ref])) = evalRefDeep ref
683
696
evalWHNF (Intermediate (ITuple refs)) = Tuple <$> mapM evalRefDeep refs
684
697
evalWHNF (Intermediate (ITensor (Tensor ns whnfs js))) = do
685
- vals <- parallelMapM evalWHNF (V. toList whnfs)
698
+ vals <- mapM evalWHNF (V. toList whnfs)
686
699
return $ TensorData $ Tensor ns (V. fromList vals) js
687
700
-- vals <- mapM evalWHNF whnfs
688
701
-- return $ TensorData $ Tensor ns vals js
0 commit comments