/// <summary> /// Performs a check for /// - MPI /// - Required libraries /// - Optional libraries /// </summary> public static void CheckSetup() { Console.WriteLine( "Congratulations! Your basic BoSSS installation seems to be working"); int numberOfBits = IntPtr.Size * 8; Console.WriteLine(); Console.WriteLine( "You are running {0} bit BoSSS on a {1} operating system", numberOfBits, System.Environment.OSVersion.Platform); csMPI.Raw.Comm_Rank(csMPI.Raw._COMM.WORLD, out int rank); csMPI.Raw.Comm_Size(csMPI.Raw._COMM.WORLD, out int size); Console.Out.Flush(); csMPI.Raw.Barrier(csMPI.Raw._COMM.WORLD); Console.WriteLine(); Console.WriteLine("BoSSS has been started with {0} MPI processes", size); ilPSP.Environment.StdoutOnlyOnRank0 = false; csMPI.Raw.Barrier(csMPI.Raw._COMM.WORLD); Console.Out.Flush(); Console.WriteLine( "Hello from rank {0}!", rank); ilPSP.Environment.StdoutOnlyOnRank0 = true; Console.WriteLine(); Console.WriteLine("Status of REQUIRED external libraries:"); { // MPI should already be loaded CheckDynamicLibrary("MPI", () => (DynLibLoader)csMPI.Raw); CheckDynamicLibrary("BLAS", () => new UnsafeDBLAS()); CheckDynamicLibrary("LAPACK", () => new LAPACK()); } Console.WriteLine(); Console.WriteLine("Status of OPTIONAL external libraries:"); { string prepend = String.Format("- gnuplot:").PadRight(23); try { string path = Gnuplot.GetGnuplotPath(); string file = Path.GetFileName(path); path = Path.GetDirectoryName(path); ReportSuccess("gnuplot", file, path); } catch (Exception e) { ReportError("gnuplot", isOptional: true, detailedMessage: e.Message); } CheckDynamicLibrary("METIS", () => new Metis(), isOptional: true); CheckDynamicLibrary("ParMETIS", () => new ParMetis(), isOptional: true); CheckDynamicLibrary("CGNS", () => new CgnsDriver(false), isOptional: true); CheckDynamicLibrary("CGNS (HDF5)", () => new CgnsDriver(true), isOptional: true); CheckDynamicLibrary("Tecplot", () => new Tecplot(), isOptional: true); CheckDynamicLibrary("MUMPS", () => new MUMPS(), isOptional: true); CheckDynamicLibrary("PARDISO (Intek MKL)", () => new ilPSP.LinSolvers.PARDISO.Wrapper_MKL(), isOptional: true); CheckDynamicLibrary("PARDISO (v4)", () => new ilPSP.LinSolvers.PARDISO.Wrapper_v4(), isOptional: true); CheckDynamicLibrary("PARDISO (v5)", () => new ilPSP.LinSolvers.PARDISO.Wrapper_v5(), isOptional: true); CheckDynamicLibrary("OpenCL", () => new ilPSP.LinSolvers.monkey.CL.cl(), isOptional: true); CheckDynamicLibrary("CUDA", () => new ilPSP.LinSolvers.monkey.CUDA.cu(), isOptional: true); } if (log != null) { log.Close(); } }