mirror of https://gitlab.com/scemama/QCaml.git
MPI improved and 3-electron F12 optimized
This commit is contained in:
parent
13fcc8e6fa
commit
6e6ef8df2d
|
@ -977,42 +977,37 @@ let make ~frozen_core ~simulation ~mo_basis ~aux_basis_filename () =
|
||||||
match s1, s2, s3 with
|
match s1, s2, s3 with
|
||||||
| Alfa, Alfa, Alfa
|
| Alfa, Alfa, Alfa
|
||||||
| Beta, Beta, Beta ->
|
| Beta, Beta, Beta ->
|
||||||
sum mos_cabs (fun a ->
|
sum mos_cabs (fun a -> h_two a k i j s1 s2 *. f_two a m n l s3 s3)
|
||||||
h_two i j a k s1 s2 *. f_two m a l n s3 s3
|
+. sum mos_cabs (fun a -> h_two a n i j s1 s2 *. f_two a m l k s2 s3)
|
||||||
+. h_two i j a n s1 s2 *. f_two m a k l s3 s2
|
-. sum mos_cabs (fun a -> h_two a l i j s1 s2 *. f_two a m n k s3 s3)
|
||||||
+. h_two i m a l s1 s3 *. f_two j a k n s2 s3
|
+. sum mos_cabs (fun a -> h_two a l i m s1 s3 *. f_two a j n k s3 s2)
|
||||||
+. h_two j m a k s2 s3 *. f_two i a l n s1 s3
|
-. sum mos_cabs (fun a -> h_two a n i m s1 s3 *. f_two a j l k s2 s2)
|
||||||
+. h_two j m a n s2 s3 *. f_two i a k l s1 s2
|
-. sum mos_cabs (fun a -> h_two a k i m s1 s3 *. f_two a j n l s3 s2)
|
||||||
-. h_two i j a l s1 s2 *. f_two m a k n s3 s3
|
+. sum mos_cabs (fun a -> h_two a n j m s2 s3 *. f_two a i l k s2 s1)
|
||||||
-. h_two i m a k s1 s3 *. f_two j a l n s2 s3
|
+. sum mos_cabs (fun a -> h_two a k j m s2 s3 *. f_two a i n l s3 s1)
|
||||||
-. h_two i m a n s1 s3 *. f_two j a k l s2 s2
|
-. sum mos_cabs (fun a -> h_two a l j m s2 s3 *. f_two a i n k s3 s1)
|
||||||
-. h_two j m a l s2 s3 *. f_two i a k n s1 s3 )
|
|
||||||
| Alfa, Alfa, Beta
|
| Alfa, Alfa, Beta
|
||||||
| Beta, Beta, Alfa ->
|
| Beta, Beta, Alfa ->
|
||||||
sum mos_cabs (fun a ->
|
sum mos_cabs (fun a -> h_two a l i j s1 s2 *. f_two a m k n s1 s3)
|
||||||
h_two i j a l s1 s2 *. f_two a m k n s1 s3
|
-. sum mos_cabs (fun a -> h_two a k i j s1 s2 *. f_two a m l n s1 s3)
|
||||||
+. h_two i m k a s1 s3 *. f_two j a l n s2 s3
|
+. sum mos_cabs (fun a -> h_two a l m j s3 s2 *. f_two a i n k s3 s1)
|
||||||
+. h_two j m a n s2 s3 *. f_two i a k l s1 s2
|
-. sum mos_cabs (fun a -> h_two a k m j s3 s2 *. f_two a i n l s3 s1)
|
||||||
+. h_two j m l a s2 s3 *. f_two i a k n s1 s3
|
+. sum mos_cabs (fun a -> h_two a k m i s3 s1 *. f_two a j n l s3 s2)
|
||||||
-. h_two i j a k s1 s2 *. f_two a m l n s1 s3
|
-. sum mos_cabs (fun a -> h_two a l m i s3 s1 *. f_two a j n k s3 s2)
|
||||||
-. h_two i m a n s1 s3 *. f_two j a k l s2 s2
|
+. sum mos_cabs (fun a -> h_two a n j m s2 s3 *. f_two a i l k s2 s1)
|
||||||
-. h_two i m l a s1 s3 *. f_two j a k n s2 s3
|
-. sum mos_cabs (fun a -> h_two a n i m s1 s3 *. f_two a j l k s2 s2)
|
||||||
-. h_two j m k a s2 s3 *. f_two i a l n s1 s3
|
|
||||||
)
|
|
||||||
| Alfa, Beta, Beta
|
| Alfa, Beta, Beta
|
||||||
| Beta, Alfa, Alfa ->
|
| Beta, Alfa, Alfa ->
|
||||||
sum mos_cabs (fun a ->
|
sum mos_cabs (fun a -> h_two a l i j s1 s2 *. f_two a m k n s1 s3)
|
||||||
h_two i j a l s1 s2 *. f_two a m k n s1 s3
|
-. sum mos_cabs (fun a -> h_two a n i j s1 s2 *. f_two a m k l s1 s2)
|
||||||
+. h_two i m a n s1 s3 *. f_two a j k l s1 s2
|
+. sum mos_cabs (fun a -> h_two a n i m s1 s3 *. f_two a j k l s1 s2)
|
||||||
+. h_two i m k a s1 s3 *. f_two j a l n s2 s3
|
+. sum mos_cabs (fun a -> h_two a n j m s2 s3 *. f_two a i l k s2 s1)
|
||||||
+. h_two j m a n s2 s3 *. f_two i a k l s1 s2
|
-. sum mos_cabs (fun a -> h_two a l i m s1 s3 *. f_two a j k n s1 s3)
|
||||||
-. h_two i j a n s1 s2 *. f_two a m k l s1 s2
|
-. sum mos_cabs (fun a -> h_two a l j m s2 s3 *. f_two a i n k s3 s1)
|
||||||
-. h_two i j k a s1 s2 *. f_two m a l n s2 s3
|
+. sum mos_cabs (fun a -> h_two a k m i s3 s1 *. f_two a j n l s3 s2)
|
||||||
-. h_two i m a l s1 s3 *. f_two a j k n s1 s3
|
-. sum mos_cabs (fun a -> h_two a k j i s2 s1 *. f_two a m n l s3 s2)
|
||||||
-. h_two j m a l s2 s3 *. f_two i a k n s1 s3
|
|
||||||
)
|
|
||||||
| Beta, Alfa, Beta
|
| Beta, Alfa, Beta
|
||||||
| Alfa, Beta, Alfa -> assert false (*TODO *)
|
| Alfa, Beta, Alfa -> assert false
|
||||||
in
|
in
|
||||||
match phase with
|
match phase with
|
||||||
| Phase.Pos -> result
|
| Phase.Pos -> result
|
||||||
|
|
|
@ -127,14 +127,15 @@ module InterNode = struct
|
||||||
|
|
||||||
|
|
||||||
let rank =
|
let rank =
|
||||||
if comm <> Mpi.comm_none then
|
if Mpi.comm_is_null comm then 0 else
|
||||||
Mpi.comm_rank c
|
Mpi.comm_rank comm
|
||||||
else 0
|
|
||||||
|
|
||||||
let master = rank = 0
|
let master = rank = 0
|
||||||
|
|
||||||
let broadcast_generic broadcast x =
|
let broadcast_generic broadcast x =
|
||||||
if Mpi.comm_rank <> Mpi.comm_none then
|
if Mpi.comm_is_null comm then
|
||||||
|
Lazy.force x
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
let x =
|
let x =
|
||||||
if master then Some (Lazy.force x)
|
if master then Some (Lazy.force x)
|
||||||
|
@ -143,18 +144,13 @@ module InterNode = struct
|
||||||
match broadcast x 0 comm with
|
match broadcast x 0 comm with
|
||||||
| Some x -> x
|
| Some x -> x
|
||||||
| None -> assert false
|
| None -> assert false
|
||||||
else
|
end
|
||||||
Lazy.force x
|
|
||||||
|
|
||||||
let broadcast x = broadcast_generic Mpi.broadcast x
|
let broadcast x = broadcast_generic Mpi.broadcast x
|
||||||
(* TODO : temporary single-node fix
|
|
||||||
let broadcast x = Lazy.force x
|
|
||||||
*)
|
|
||||||
|
|
||||||
let barrier () =
|
let barrier () =
|
||||||
if comm <> Mpi.comm_none then
|
if Mpi.comm_is_null comm then () else
|
||||||
Mpi.barrier comm
|
Mpi.barrier comm
|
||||||
else ()
|
|
||||||
|
|
||||||
let _ = barrier ()
|
let _ = barrier ()
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ let create ?(temp_dir="/dev/shm") data_type size_array =
|
||||||
let filename =
|
let filename =
|
||||||
Parallel.Node.broadcast (lazy (Filename.temp_file ~temp_dir "4idx." ".tmp"))
|
Parallel.Node.broadcast (lazy (Filename.temp_file ~temp_dir "4idx." ".tmp"))
|
||||||
in
|
in
|
||||||
Printf.printf "File:%s\n%!" filename;
|
|
||||||
|
|
||||||
if Parallel.Node.master then
|
if Parallel.Node.master then
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -54,7 +54,7 @@ let () =
|
||||||
|
|
||||||
let guess =
|
let guess =
|
||||||
match Command_line.get "guess" with
|
match Command_line.get "guess" with
|
||||||
| None -> `Huckel
|
| None -> `Hcore
|
||||||
| Some filename ->
|
| Some filename ->
|
||||||
let s_guess = Simulation.of_filenames
|
let s_guess = Simulation.of_filenames
|
||||||
~charge ~multiplicity ~nuclei:nuclei_file filename in
|
~charge ~multiplicity ~nuclei:nuclei_file filename in
|
||||||
|
|
Loading…
Reference in New Issue