diff --git a/Makefile b/Makefile index b44fbb9e..eddcb602 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** @@ -74,4 +74,5 @@ clean: make -C src_cpp -f Makefile TARGET=MT clean make -C src_c/P2P -f Makefile TARGET=P2P clean make -C src_cpp -f Makefile TARGET=MPI1 clean GPU_ENABLE=1 - rm -f IMB-MPI1 IMB-NBC IMB-RMA IMB-EXT IMB-IO IMB-MT IMB-P2P IMB-MPI1-GPU + rm -f IMB-MPI1 IMB-NBC IMB-RMA IMB-EXT IMB-IO IMB-MT IMB-P2P + if [ -e IMB-MPI1-GPU ]; then rm -f IMB-MPI1-GPU; fi diff --git a/Makefile_win b/Makefile_win index e2f5cecf..cec974d3 100644 --- a/Makefile_win +++ b/Makefile_win @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** @@ -78,4 +78,4 @@ clean: nmake -f Makefile_win clean TARGET=IO nmake -f Makefile_win clean TARGET=EXT cd .. - del /f /q IMB-MPI1.exe IMB-NBC.exe IMB-RMA.exe IMB-EXT.exe IMB-IO.exe IMB-MT.exe + del /f /q IMB-MPI1.exe IMB-NBC.exe IMB-RMA.exe IMB-EXT.exe IMB-IO.exe IMB-MT.exe \ No newline at end of file diff --git a/README.md b/README.md index 33370a04..39d5180c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Intel(R) MPI Benchmarks [![3-Clause BSD License](https://img.shields.io/badge/license-3%20Clause%20BSD%20License-green.svg)](license/license.txt) -![v2021.7](https://img.shields.io/badge/v.2021.7-Update-orange.svg) +![v2021.8](https://img.shields.io/badge/v.2021.8-Update-orange.svg) -------------------------------------------------- -------- @@ -63,6 +63,12 @@ files and folders appear on your system: ---------- What's New ---------- +New in Intel(R) MPI Benchmarks 2021.8 +---------------------------------------- +- Migration to icx,icpx compiler +- IMB-MPI1: FP16/BF16 data_type support +- Bug fixes + New in Intel(R) MPI Benchmarks 2021.7 ---------------------------------------- - IMB-MPI1-GPU benchmark. diff --git a/ReadMe_IMB.txt b/ReadMe_IMB.txt index d5619378..f53cc4d2 100644 --- a/ReadMe_IMB.txt +++ b/ReadMe_IMB.txt @@ -1,5 +1,5 @@ -------------------------------------- -Intel(R) MPI Benchmarks 2021.7 +Intel(R) MPI Benchmarks 2021.8 README -------------------------------------- @@ -62,6 +62,12 @@ files and folders appear on your system: ---------- What's New ---------- +New in Intel(R) MPI Benchmarks 2021.8 +---------------------------------------- +- Migration to icx,icpx compiler +- IMB-MPI1: FP16/BF16 data_type support +- Bug fixes + New in Intel(R) MPI Benchmarks 2021.7 ---------------------------------------- - IMB-MPI1-GPU benchmarks support cuda. @@ -246,7 +252,8 @@ command-line parameters. ----------------------------------------- Building Instructions for Linux* OS ----------------------------------------- -1) Set the CC variable to point to the appropriate compiler wrapper, mpiicc or mpicc. +1) Set the CC and CXX variables to point to the appropriate compiler wrapper, + mpiicx or mpicc for C, mpiicpx or mpicxx for C++. 2) Run one or more Makefile commands below: make clean - remove legacy binary object files and executable files diff --git a/WINDOWS/IMB-EXT_VS_2017/IMB-EXT.rc b/WINDOWS/IMB-EXT_VS_2017/IMB-EXT.rc index 5e4bdd02..4cc4a9a5 100644 --- a/WINDOWS/IMB-EXT_VS_2017/IMB-EXT.rc +++ b/WINDOWS/IMB-EXT_VS_2017/IMB-EXT.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-EXT" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-EXT.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/WINDOWS/IMB-IO_VS_2017/IMB-IO.rc b/WINDOWS/IMB-IO_VS_2017/IMB-IO.rc index 9976c086..14b0f7d7 100644 --- a/WINDOWS/IMB-IO_VS_2017/IMB-IO.rc +++ b/WINDOWS/IMB-IO_VS_2017/IMB-IO.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-IO" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-IO.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/WINDOWS/IMB-MPI1_VS_2017/IMB-MPI1.rc b/WINDOWS/IMB-MPI1_VS_2017/IMB-MPI1.rc index eac82033..c7503ec1 100644 --- a/WINDOWS/IMB-MPI1_VS_2017/IMB-MPI1.rc +++ b/WINDOWS/IMB-MPI1_VS_2017/IMB-MPI1.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-MPI1" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-MPI1.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/WINDOWS/IMB-MT_VS_2017/IMB-MT.rc b/WINDOWS/IMB-MT_VS_2017/IMB-MT.rc index c25ff8ca..ef3c55f4 100644 --- a/WINDOWS/IMB-MT_VS_2017/IMB-MT.rc +++ b/WINDOWS/IMB-MT_VS_2017/IMB-MT.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-MT" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-MT.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/WINDOWS/IMB-NBC_VS_2017/IMB-NBC.rc b/WINDOWS/IMB-NBC_VS_2017/IMB-NBC.rc index b1c18814..8186324a 100644 --- a/WINDOWS/IMB-NBC_VS_2017/IMB-NBC.rc +++ b/WINDOWS/IMB-NBC_VS_2017/IMB-NBC.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-NBC" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-NBC.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/WINDOWS/IMB-P2P_VS_2017/IMB-P2P.rc b/WINDOWS/IMB-P2P_VS_2017/IMB-P2P.rc index 49f49431..463c1f53 100755 --- a/WINDOWS/IMB-P2P_VS_2017/IMB-P2P.rc +++ b/WINDOWS/IMB-P2P_VS_2017/IMB-P2P.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-P2P" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-P2P.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/WINDOWS/IMB-RMA_VS_2017/IMB-RMA.rc b/WINDOWS/IMB-RMA_VS_2017/IMB-RMA.rc index 6358bc2a..988a1cfe 100644 --- a/WINDOWS/IMB-RMA_VS_2017/IMB-RMA.rc +++ b/WINDOWS/IMB-RMA_VS_2017/IMB-RMA.rc @@ -71,12 +71,12 @@ BEGIN BEGIN VALUE "CompanyName", "Intel Corporation" VALUE "FileDescription", "Intel(R) MPI Benchmarks" - VALUE "FileVersion", "2021.7" + VALUE "FileVersion", "2021.8" VALUE "InternalName", "IMB-RMA" VALUE "LegalCopyright", "Copyright Intel Corporation." VALUE "OriginalFilename", "IMB-RMA.exe" VALUE "ProductName", "Intel(R) MPI Benchmarks" - VALUE "ProductVersion", "2021.7" + VALUE "ProductVersion", "2021.8" END END BLOCK "VarFileInfo" diff --git a/license/license.txt b/license/license.txt index 8ed23292..1b158095 100644 --- a/license/license.txt +++ b/license/license.txt @@ -10,7 +10,7 @@ The 3-Clause BSD License - Copyright (C) 2023 Intel, Inc. All rights reserved. + Copyright (C) 2024 Intel, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/license/third-party-programs.txt b/license/third-party-programs.txt index e57cd94c..7dd37c06 100644 --- a/license/third-party-programs.txt +++ b/license/third-party-programs.txt @@ -5,518 +5,55 @@ Intel end user license agreement for the Intel software you are licensing. Third party programs and their corresponding required notices and/or license terms are listed below. -------------------------------------------------------------------------------- - -1. MPICH - - Copyright Notice - 1998--2020, Argonne National Laboratory - - Mpich license - - Permission is hereby granted to use, reproduce, prepare derivative works, and - to redistribute to others. This software was authored by: - - Mathematics and Computer Science Division - Argonne National Laboratory, Argonne IL 60439 - - (and) - - Department of Computer Science - University of Illinois at Urbana-Champaign - - - GOVERNMENT LICENSE - - Portions of this material resulted from work developed under a U.S. - Government Contract and are subject to the following license: the Government - is granted for itself and others acting on its behalf a paid-up, nonexclusive, - irrevocable worldwide license in this computer software to reproduce, prepare - derivative works, and perform publicly and display publicly. - - DISCLAIMER - - This computer code material was prepared, in part, as an account of work - sponsored by an agency of the United States Government. Neither the United - States, nor the University of Chicago, nor any of their employees, makes any - warranty express or implied, or assumes any legal liability or responsibility - for the accuracy, completeness, or usefulness of any information, apparatus, - product, or process disclosed, or represents that its use would not infringe - privately owned rights. - -------------------------------------------------------------------------------- - -2. Open MPI - - Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana - University Research and Technology - Corporation. All rights reserved. - Copyright (c) 2004-2017 The University of Tennessee and The University - of Tennessee Research Foundation. All rights - reserved. - Copyright (c) 2004-2010 High Performance Computing Center Stuttgart, - University of Stuttgart. All rights reserved. - Copyright (c) 2004-2008 The Regents of the University of California. - All rights reserved. - Copyright (c) 2006-2018 Los Alamos National Security, LLC. All rights - reserved. - Copyright (c) 2006-2020 Cisco Systems, Inc. All rights reserved. - Copyright (c) 2006-2010 Voltaire, Inc. All rights reserved. - Copyright (c) 2006-2017 Sandia National Laboratories. All rights reserved. - Copyright (c) 2006-2010 Sun Microsystems, Inc. All rights reserved. - Use is subject to license terms. - Copyright (c) 2006-2017 The University of Houston. All rights reserved. - Copyright (c) 2006-2009 Myricom, Inc. All rights reserved. - Copyright (c) 2007-2017 UT-Battelle, LLC. All rights reserved. - Copyright (c) 2007-2020 IBM Corporation. All rights reserved. - Copyright (c) 1998-2005 Forschungszentrum Juelich, Juelich Supercomputing - Centre, Federal Republic of Germany - Copyright (c) 2005-2008 ZIH, TU Dresden, Federal Republic of Germany - Copyright (c) 2007 Evergrid, Inc. All rights reserved. - Copyright (c) 2008 Chelsio, Inc. All rights reserved. - Copyright (c) 2008-2009 Institut National de Recherche en - Informatique. All rights reserved. - Copyright (c) 2007 Lawrence Livermore National Security, LLC. - All rights reserved. - Copyright (c) 2007-2017 Mellanox Technologies. All rights reserved. - Copyright (c) 2006-2010 QLogic Corporation. All rights reserved. - Copyright (c) 2008-2017 Oak Ridge National Labs. All rights reserved. - Copyright (c) 2006-2012 Oracle and/or its affiliates. All rights reserved. - Copyright (c) 2009-2015 Bull SAS. All rights reserved. - Copyright (c) 2010 ARM ltd. All rights reserved. - Copyright (c) 2016 ARM, Inc. All rights reserved. - Copyright (c) 2010-2011 Alex Brick . All rights reserved. - Copyright (c) 2012 The University of Wisconsin-La Crosse. All rights - reserved. - Copyright (c) 2013-2020 Intel, Inc. All rights reserved. - Copyright (c) 2011-2017 NVIDIA Corporation. All rights reserved. - Copyright (c) 2016 Broadcom Limited. All rights reserved. - Copyright (c) 2011-2017 Fujitsu Limited. All rights reserved. - Copyright (c) 2014-2015 Hewlett-Packard Development Company, LP. All - rights reserved. - Copyright (c) 2013-2017 Research Organization for Information Science (RIST). - All rights reserved. - Copyright (c) 2017-2020 Amazon.com, Inc. or its affiliates. All Rights - reserved. - Copyright (c) 2018 DataDirect Networks. All rights reserved. - Copyright (c) 2018-2020 Triad National Security, LLC. All rights reserved. - Copyright (c) 2020 Google, LLC. All rights reserved. - Copyright (c) 2002 University of Chicago - Copyright (c) 2001 Argonne National Laboratory - - $COPYRIGHT$ - - Additional copyrights may follow - - $HEADER$ - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer listed - in this license in the documentation and/or other materials - provided with the distribution. - - - Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - The copyright holders provide no reassurances that the source code - provided does not infringe any patent, copyright, or any other - intellectual property rights of third parties. The copyright holders - disclaim any liability to any recipient for claims brought against - recipient by any third party for infringement of that parties - intellectual property rights. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -----------------[Copyright from inclusion of MPICH code]---------------- - - The following is a notice of limited availability of the code, and disclaimer - which must be included in the prologue of the code and in all source listings - of the code. - - Copyright Notice - + 2002 University of Chicago - - Permission is hereby granted to use, reproduce, prepare derivative works, and - to redistribute to others. This software was authored by: - - Mathematics and Computer Science Division - Argonne National Laboratory, Argonne IL 60439 - - (and) - - Department of Computer Science - University of Illinois at Urbana-Champaign - - - GOVERNMENT LICENSE - - Portions of this material resulted from work developed under a U.S. - Government Contract and are subject to the following license: the Government - is granted for itself and others acting on its behalf a paid-up, nonexclusive, - irrevocable worldwide license in this computer software to reproduce, prepare - derivative works, and perform publicly and display publicly. - - DISCLAIMER - - This computer code material was prepared, in part, as an account of work - sponsored by an agency of the United States Government. Neither the United - States, nor the University of Chicago, nor any of their employees, makes any - warranty express or implied, or assumes any legal liability or responsibility - for the accuracy, completeness, or usefulness of any information, apparatus, - product, or process disclosed, or represents that its use would not infringe - privately owned rights. - -------------------------------------------------------------------------------- - -3. hwloc - - Copyright © 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. - Copyright © 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. - Copyright © 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. - Copyright © 2004-2005 The Regents of the University of California. All rights reserved. - Copyright © 2009 CNRS - Copyright © 2009-2016 Inria. All rights reserved. - Copyright © 2009-2015 Université Bordeaux - Copyright © 2009-2015 Cisco Systems, Inc. All rights reserved. - Copyright © 2009-2012 Oracle and/or its affiliates. All rights reserved. - Copyright © 2010 IBM - Copyright © 2010 Jirka Hladky - Copyright © 2012 Aleksej Saushev, The NetBSD Foundation - Copyright © 2012 Blue Brain Project, EPFL. All rights reserved. - Copyright © 2013-2014 University of Wisconsin-La Crosse. All rights reserved. - Copyright © 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. - Copyright © 2015-2016 Intel, Inc. All rights reserved. - See COPYING in top-level directory. - - The 3-Clause BSD License - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - - The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- - -4. Libfabric and OpenFabrics Interfaces (OFI) - - Copyright (c) 2015 Intel Corporation. All rights reserved. - Copyright (c) 2015 Cisco Systems, Inc. All rights reserved. - - The -2-Clause BSD license - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- - -5. Intel® Distribution for Python - - Intel Simplified Software License (Version February 2020) - - Use and Redistribution. You may use and redistribute the software (the - "Software"), without modification, provided the following conditions are met: - - * Redistributions must reproduce the above copyright notice and the following - terms of use in the Software and in the documentation and/or other materials - provided with the distribution. - * Neither the name of Intel nor the names of its suppliers may be used to - endorse or promote products derived from this Software without specific prior - written permission. - * No reverse engineering, decompilation, or disassembly of this Software is - permitted. - - Limited patent license. Intel grants you a world-wide, royalty-free, - non-exclusive license under patents it now or hereafter owns or controls to - make, have made, use, import, offer to sell and sell ("Utilize") this Software, - but solely to the extent that any such patent is necessary to Utilize the - Software alone. The patent license shall not apply to any combinations which - include this software. No hardware per se is licensed hereunder. - - Third party programs. The Software may contain Third Party Programs. "Third - Party Programs" are third party software, open source software or other Intel - software listed in the "third-party-programs.txt" or other similarly named text - file that is included with the Software. Third Party Programs, even if included - with the distribution of the Software, may be governed by separate license - terms, including without limitation, third party license terms, open source - software notices and terms, and/or other Intel software license terms. These - separate license terms may govern your use of the Third Party Programs. - - DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE - DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS - WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE - THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND - ATTORNEYS' FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT - INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE MATERIALS. - - LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO INDEMNIFY AND HOLD - INTEL HARMLESS AGAINST ANY CLAIMS AND EXPENSES RESULTING FROM YOUR USE OR - UNAUTHORIZED USE OF THE SOFTWARE. - - No support. Intel may make changes to the Software, at any time without notice, - and is not obligated to support, update or provide training for the Software. - - Termination. Intel may terminate your right to use the Software in the event of - your breach of this Agreement and you fail to cure the breach within a - reasonable period of time. - - Feedback. Should you provide Intel with comments, modifications, corrections, - enhancements or other input ("Feedback") related to the Software Intel will be - free to use, disclose, reproduce, license or otherwise distribute or exploit the - Feedback in its sole discretion without any obligations or restrictions of any - kind, including without limitation, intellectual property rights or licensing - obligations. - - Compliance with laws. You agree to comply with all relevant laws and regulations - governing your use, transfer, import or export (or prohibition thereof) of the - Software. - - Governing law. All disputes will be governed by the laws of the United States of - America and the State of Delaware without reference to conflict of law - principles and subject to the exclusive jurisdiction of the state or federal - courts sitting in the State of Delaware, and each party agrees that it submits - to the personal jurisdiction and venue of those courts and waives any - objections. The United Nations Convention on Contracts for the International - Sale of Goods (1980) is specifically excluded and will not apply to the - Software. - - *Other names and brands may be claimed as the property of others. - - -------------------------------------------------------------------------------- - -6. uthash - - Copyright (c) 2005-2014, Troy D. Hanson http://troydhanson.github.com/uthash/ - All rights reserved. - - Troy Hanson BSD license - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- - -7. json-c - - Copyright (c) 2009-2012 Eric Haszlakiewicz - Copyright (c) 2004, 2005 Metaparadigm Pte Ltd - - MIT license - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - -------------------------------------------------------------------------------- - -8. zlib - - Permissive software license - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - -------------------------------------------------------------------------------- - -9. Intel(R) MPI Benchmarks - Copyright (c) Intel Corporation. - - OpenUCX/UCX - Copyright (c) 2014-2015 UT-Battelle, LLC. All rights reserved. - Copyright (C) 2014-2020 Mellanox Technologies Ltd. All rights reserved. - Copyright (C) 2014-2015 The University of Houston System. All rights reserved. - Copyright (C) 2015 The University of Tennessee and The University - of Tennessee Research Foundation. All rights reserved. - Copyright (C) 2016-2020 ARM Ltd. All rights reserved. - Copyright (c) 2016 Los Alamos National Security, LLC. All rights reserved. - Copyright (C) 2016-2020 Advanced Micro Devices, Inc. All rights reserved. - Copyright (C) 2019 UChicago Argonne, LLC. All rights reserved. - Copyright (c) 2018-2020 NVIDIA CORPORATION. All rights reserved. - Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved. - Copyright (C) 2016-2020 Stony Brook University. All rights reserved. - - Mellanox Hardware MultiCast library - Copyright (C) 2014-2020 Mellanox Technologies Ltd. All rights reserved. - Copyright (c) 2018-2020 NVIDIA CORPORATION. All rights reserved. - - BSD 3-Clause "New" or "Revised" License - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - - - Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- - -10. PMIx - Copyright (c) 2019, PMIx - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- - - The following third party programs have their own third party programs. These - additional third party program files are as follows: - 1. Intel(R) MPI Benchmarks https://raw.githubusercontent.com/intel/mpi-benchmarks/master/license/third-party-programs.txt - 2. Intel(R) Distribution for Python: third-party-programs-python.txt file - -------------------------------------------------------------------------------- - -Other names and brands may be claimed as the property of others. \ No newline at end of file +===================================================================================== + +1. Brown CRC32 + +/* Most of following CRC-32 stuff is from zmodem source code */ + +/* I claim no copyright over the contents of this file. -- Rahul Dhesi */ + +/* +Checksum: 951252172 (check or update this with "brik") +*/ +#define INITCRC 0xFFFFFFFFL +/* + * Copyright (C) 1986 Gary S. Brown. You may use this program, or + * code or tables extracted from it, as desired without restriction. + */ + +/* First, the polynomial itself and its table of feedback terms. The */ +/* polynomial is */ +/* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */ +/* Note that we take it "backwards" and put the highest-order term in */ +/* the lowest-order bit. The X^32 term is "implied"; the LSB is the */ +/* X^31 term, etc. The X^0 term (usually shown as "+1") results in */ +/* the MSB being 1. */ + +/* Note that the usual hardware shift register implementation, which */ +/* is what we're using (we're merely optimizing it by doing eight-bit */ +/* chunks at a time) shifts bits into the lowest-order term. In our */ +/* implementation, that means shifting towards the right. Why do we */ +/* do it this way? Because the calculated CRC must be transmitted in */ +/* order from highest-order term to lowest-order term. UARTs transmit */ +/* characters in order from LSB to MSB. By storing the CRC this way, */ +/* we hand it to the UART in the order low-byte to high-byte; the UART */ +/* sends each low-bit to hight-bit; and the result is transmission bit */ +/* by bit from highest- to lowest-order term without requiring any bit */ +/* shuffling on our part. Reception works similarly. */ + +/* The feedback terms table consists of 256, 32-bit entries. Notes: */ +/* */ +/* The table can be generated at runtime if desired; code to do so */ +/* is shown later. It might not be obvious, but the feedback */ +/* terms simply represent the results of eight shift/xor opera- */ +/* tions for all combinations of data and CRC register values. */ +/* */ +/* The values must be right-shifted by eight bits by the "updcrc" */ +/* logic; the shift must be unsigned (bring in zeroes). On some */ +/* hardware you could probably optimize the shift in assembler by */ +/* using byte-swap instructions. */ + +===================================================================================== + +* Other names and brands may be claimed as the property of others. diff --git a/src_c/IMB_allgather.c b/src_c/IMB_allgather.c index 8bc2859f..af1e254d 100644 --- a/src_c/IMB_allgather.c +++ b/src_c/IMB_allgather.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_allgatherv.c b/src_c/IMB_allgatherv.c index 3a9223ce..8c1b271d 100644 --- a/src_c/IMB_allgatherv.c +++ b/src_c/IMB_allgatherv.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_allreduce.c b/src_c/IMB_allreduce.c index c8e597f4..ddc79855 100644 --- a/src_c/IMB_allreduce.c +++ b/src_c/IMB_allreduce.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_alltoall.c b/src_c/IMB_alltoall.c index acc00dfb..ac3681c1 100644 --- a/src_c/IMB_alltoall.c +++ b/src_c/IMB_alltoall.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_alltoallv.c b/src_c/IMB_alltoallv.c index dcc7db36..c83fd1e4 100644 --- a/src_c/IMB_alltoallv.c +++ b/src_c/IMB_alltoallv.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_appl_errors.h b/src_c/IMB_appl_errors.h index fd7d38b9..18e7c31d 100644 --- a/src_c/IMB_appl_errors.h +++ b/src_c/IMB_appl_errors.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_bandwidth.c b/src_c/IMB_bandwidth.c index d0f3bc6c..0a6249ab 100644 --- a/src_c/IMB_bandwidth.c +++ b/src_c/IMB_bandwidth.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_barrier.c b/src_c/IMB_barrier.c index 1c91fe7a..20911999 100644 --- a/src_c/IMB_barrier.c +++ b/src_c/IMB_barrier.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_bcast.c b/src_c/IMB_bcast.c index 0efe42a5..ff85bd12 100644 --- a/src_c/IMB_bcast.c +++ b/src_c/IMB_bcast.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_benchlist.c b/src_c/IMB_benchlist.c index ba8e41f7..cd50b654 100644 --- a/src_c/IMB_benchlist.c +++ b/src_c/IMB_benchlist.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_benchmark.h b/src_c/IMB_benchmark.h index 1028df24..50c7d57d 100644 --- a/src_c/IMB_benchmark.h +++ b/src_c/IMB_benchmark.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -49,6 +49,9 @@ For more documentation than found here, see #include "IMB_mem_info.h" +#define IMB_INPUT_NAME_LEN 32 +#define IMB_INPUT_ARG_LEN 72 + /* Classification of benchmarks */ typedef enum { diff --git a/src_c/IMB_bnames_ext.h b/src_c/IMB_bnames_ext.h index ec2457e7..03d4773a 100644 --- a/src_c/IMB_bnames_ext.h +++ b/src_c/IMB_bnames_ext.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_bnames_io.h b/src_c/IMB_bnames_io.h index d3aa4438..3fb95e68 100644 --- a/src_c/IMB_bnames_io.h +++ b/src_c/IMB_bnames_io.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_bnames_mpi1.h b/src_c/IMB_bnames_mpi1.h index 59024ef5..be2beedc 100644 --- a/src_c/IMB_bnames_mpi1.h +++ b/src_c/IMB_bnames_mpi1.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_bnames_nbc.h b/src_c/IMB_bnames_nbc.h index 2487c177..ab8703ba 100644 --- a/src_c/IMB_bnames_nbc.h +++ b/src_c/IMB_bnames_nbc.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_bnames_rma.h b/src_c/IMB_bnames_rma.h index 29bee64b..9eda13d0 100644 --- a/src_c/IMB_bnames_rma.h +++ b/src_c/IMB_bnames_rma.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_cache.h b/src_c/IMB_cache.h index 4892a18b..2001cb2d 100644 --- a/src_c/IMB_cache.h +++ b/src_c/IMB_cache.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_chk_diff.c b/src_c/IMB_chk_diff.c index 775c44c6..da0b8986 100644 --- a/src_c/IMB_chk_diff.c +++ b/src_c/IMB_chk_diff.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -515,7 +515,7 @@ Output variables: j2 = j_sample; } - MPI_ERRHAND(MPI_File_seek(restore, (MPI_Offset)(j1*Totalsize), MPI_SEEK_SET)); + MPI_ERRHAND(MPI_File_seek(restore, (MPI_Offset)j1*(MPI_Offset)Totalsize, MPI_SEEK_SET)); for (j = j1; j <= j2 && faultpos == CHK_NO_FAULT /*faultpos<0*/; j++) { IMB_Assert(Totalsize <= INT_MAX); @@ -1310,13 +1310,13 @@ static long crc_32_tab[] = { /* CRC polynomial 0xedb88320 */ -long IMB_compute_crc (register char* buf, register size_t size) { +long IMB_compute_crc (char* buf, size_t size) { /* In/out variables: --buf (type register char*) --size (type register int) +-buf (type char*) +-size (type int) Return value (type long) diff --git a/src_c/IMB_comm_info.h b/src_c/IMB_comm_info.h index 1278d577..0eb8fabe 100644 --- a/src_c/IMB_comm_info.h +++ b/src_c/IMB_comm_info.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_comments.h b/src_c/IMB_comments.h index d3e005fc..246621b8 100644 --- a/src_c/IMB_comments.h +++ b/src_c/IMB_comments.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_cpu_exploit.c b/src_c/IMB_cpu_exploit.c index 48e5ee64..e8388e10 100644 --- a/src_c/IMB_cpu_exploit.c +++ b/src_c/IMB_cpu_exploit.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_cuda.c b/src_c/IMB_cuda.c index 2ed97e8f..6041f61a 100644 --- a/src_c/IMB_cuda.c +++ b/src_c/IMB_cuda.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -43,6 +43,9 @@ For more documentation than found here, see #ifdef GPU_ENABLE #include "IMB_cuda.h" +static unsigned num_devices = 0; +cudaStream_t cuda_stream; + int cuda_initialize(char *dll_name) { cuda_init_functable_dll(dll_name); @@ -86,7 +89,7 @@ void *cuda_alloc(size_t size, char *where, MEM_ALLOC_TYPE mem_alloc_type) } default: { - printf("Error: Unknown buf type\n"); + printf("ERROR: Unknown buf type\n"); exit(1); } } @@ -122,7 +125,6 @@ void cuda_ass_buf(void *buf, int rank, size_t pos1, size_t pos2, int value) if (pos2 <= pos1) return; - static const int asize = (int)sizeof(assign_type); char *tmp_buf = malloc(pos2 + 1 - pos1); cuda_memcpy(tmp_buf, buf + pos1, pos2 - pos1); IMB_ass_buf(tmp_buf, rank, pos1, pos2, value); @@ -153,7 +155,7 @@ void cuda_free(void **B, MEM_ALLOC_TYPE mem_alloc_type) } default: { - printf("Error: Unknown buf type\n"); + printf("ERROR: Unknown buf type\n"); exit(1); } } diff --git a/src_c/IMB_cuda.h b/src_c/IMB_cuda.h index 084f1f95..b645cc5a 100644 --- a/src_c/IMB_cuda.h +++ b/src_c/IMB_cuda.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -49,8 +49,7 @@ For more documentation than found here, see #include "IMB_declare.h" #include "IMB_benchmark.h" #include "IMB_cuda_api.h" - -static unsigned num_devices = 0; +#include "IMB_prototypes.h" #define CUDA_CHKERR_EXPL_FINALLY(f, fin, a) { cudaError_t _cuda_chkerr_err; \ if ((_cuda_chkerr_err=(f), (fin), _cuda_chkerr_err) != cudaSuccess) { \ @@ -75,7 +74,7 @@ static unsigned num_devices = 0; } #define C_CHKERR(f) C_CHKERR_EXPL(f, goto f_err) -cudaStream_t cuda_stream; +extern cudaStream_t cuda_stream; int cuda_initialize(char *dll_name); void *cuda_alloc(size_t size, char *where, MEM_ALLOC_TYPE mem_alloc_type); diff --git a/src_c/IMB_cuda_api.c b/src_c/IMB_cuda_api.c index 3da4c4f9..693039c0 100644 --- a/src_c/IMB_cuda_api.c +++ b/src_c/IMB_cuda_api.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -72,7 +72,7 @@ void cuda_init_functable_dll(const char *dll_name) if (dl_error) { - printf("%s\n", dl_error); + fprintf(stderr, "%s\n", dl_error); exit(1); } @@ -86,13 +86,13 @@ void cuda_init_functable_dll(const char *dll_name) if (dl_error) { - printf("%s\n", dl_error); + fprintf(stderr, "%s\n", dl_error); exit(1); } if (sym_ptr[i] == NULL) { - printf("Symbol %s is not available!\n", fn_names[i]); + fprintf(stderr, "Symbol %s is not available!\n", fn_names[i]); exit(1); } } diff --git a/src_c/IMB_cuda_api.h b/src_c/IMB_cuda_api.h index 1a96ad38..50aef46f 100644 --- a/src_c/IMB_cuda_api.h +++ b/src_c/IMB_cuda_api.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -46,6 +46,8 @@ For more documentation than found here, see #include "cuda_runtime_api.h" #include "driver_types.h" #include +#include +#include /* *INDENT-OFF* */ /* The current function names are from CUDA 12.0 */ diff --git a/src_c/IMB_declare.c b/src_c/IMB_declare.c index 46d23f01..caf89b51 100644 --- a/src_c/IMB_declare.c +++ b/src_c/IMB_declare.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_declare.h b/src_c/IMB_declare.h index a0f84e58..f83a167b 100644 --- a/src_c/IMB_declare.h +++ b/src_c/IMB_declare.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_err_check.h b/src_c/IMB_err_check.h index 56226160..8dfe0827 100644 --- a/src_c/IMB_err_check.h +++ b/src_c/IMB_err_check.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_err_handler.c b/src_c/IMB_err_handler.c index dedbec8a..97bbec8c 100644 --- a/src_c/IMB_err_handler.c +++ b/src_c/IMB_err_handler.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_exchange.c b/src_c/IMB_exchange.c index 8fcccadc..ca2ead47 100644 --- a/src_c/IMB_exchange.c +++ b/src_c/IMB_exchange.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_g_info.c b/src_c/IMB_g_info.c index 671a1208..620393ff 100644 --- a/src_c/IMB_g_info.c +++ b/src_c/IMB_g_info.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -55,7 +55,7 @@ For more documentation than found here, see #ifdef IMB2018 char* VERSION="2018"; #else -char* VERSION="2021.7"; +char* VERSION="2021.8"; #endif #include diff --git a/src_c/IMB_gather.c b/src_c/IMB_gather.c index 795fb2f4..9c2424b0 100644 --- a/src_c/IMB_gather.c +++ b/src_c/IMB_gather.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_gatherv.c b/src_c/IMB_gatherv.c index f71f49c8..92a489ce 100644 --- a/src_c/IMB_gatherv.c +++ b/src_c/IMB_gatherv.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_gpu_common.c b/src_c/IMB_gpu_common.c index ded2f5f8..39e7b5a5 100644 --- a/src_c/IMB_gpu_common.c +++ b/src_c/IMB_gpu_common.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -43,6 +43,8 @@ For more documentation than found here, see #ifdef GPU_ENABLE #include "IMB_gpu_common.h" +gpu_backend IMB_gpu_backend; + void gpu_initialize() { char dll_name_cuda[] = "libcudart.so"; diff --git a/src_c/IMB_gpu_common.h b/src_c/IMB_gpu_common.h index b15f21c4..08693e34 100644 --- a/src_c/IMB_gpu_common.h +++ b/src_c/IMB_gpu_common.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -67,7 +67,7 @@ typedef struct gpu_backend { int (*IMB_gpu_memcpy) (void*, const void*, size_t); } gpu_backend; -gpu_backend IMB_gpu_backend; +extern gpu_backend IMB_gpu_backend; void gpu_initialize(); diff --git a/src_c/IMB_init.c b/src_c/IMB_init.c index 222927ec..5f2037a7 100644 --- a/src_c/IMB_init.c +++ b/src_c/IMB_init.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -459,7 +459,7 @@ int IMB_basic_input(struct comm_info* c_info, struct Bench** P_BList, } else if (!strcmp((*argv)[iarg], "-iter_policy")) { int ierr; - char iter_policy[32]; + char iter_policy[IMB_INPUT_NAME_LEN]; if (iarg + 1 >= *argc) { fprintf(stderr, "Missing argument after \"iter_policy\"\n"); ok = -1; @@ -549,9 +549,9 @@ int IMB_basic_input(struct comm_info* c_info, struct Bench** P_BList, iarg_msg = iarg + 1; if (t) { - char inp_line[72]; + char inp_line[IMB_INPUT_ARG_LEN]; - while (fgets(inp_line, 72, t)) { + while (fgets(inp_line, IMB_INPUT_ARG_LEN, t)) { if (inp_line[0] != '#' && strlen(inp_line) > 1) n_lens++; } @@ -574,17 +574,17 @@ int IMB_basic_input(struct comm_info* c_info, struct Bench** P_BList, if (t) { - char inp_line[72], nam[32]; - while (fgets(inp_line, 72, t)) { + char inp_line[IMB_INPUT_ARG_LEN], name[IMB_INPUT_NAME_LEN]; + while (fgets(inp_line, IMB_INPUT_ARG_LEN, t)) { if (inp_line[0] != '#' && strlen(inp_line) - 1) { - sscanf(inp_line, "%32s", nam); + sscanf(inp_line, "%31s[^\n]", name); if (n_cases >= 1000) { fprintf(unit, "Too many benchmark cases\n"); fflush(stderr); ok = -1; break; } - IMB_add_to_list_tail(nam, &Blist_head, &Blist_tail, &n_cases); + IMB_add_to_list_tail(name, &Blist_head, &Blist_tail, &n_cases); } } fclose(t); @@ -631,8 +631,8 @@ int IMB_basic_input(struct comm_info* c_info, struct Bench** P_BList, if ((min_log >= 0) && (max_log > 0) && (min_log < MAX_INT_LOG) && - (max_logmin_log)) { + (max_log < MAX_INT_LOG) && + (max_log > min_log)) { c_info->min_msg_log = min_log; c_info->max_msg_log = max_log; } else { @@ -819,14 +819,14 @@ int IMB_basic_input(struct comm_info* c_info, struct Bench** P_BList, c_info->n_lens = n_lens; if (t && n_lens > 0) { - char inp_line[72], S[72]; + char inp_line[IMB_INPUT_ARG_LEN], S[IMB_INPUT_ARG_LEN]; int sz, isz; IMB_i_alloc(int, c_info->msglen, n_lens, "Basic_Input"); isz = -1; - while (fgets(inp_line, 72, t)) { + while (fgets(inp_line, IMB_INPUT_ARG_LEN, t)) { S[0] = '\0'; if (inp_line[0] != '#' && strlen(inp_line) - 1) { int ierr; diff --git a/src_c/IMB_init_file.c b/src_c/IMB_init_file.c index d6de597d..05e19741 100644 --- a/src_c/IMB_init_file.c +++ b/src_c/IMB_init_file.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_init_transfer.c b/src_c/IMB_init_transfer.c index de7582bc..f62160ad 100644 --- a/src_c/IMB_init_transfer.c +++ b/src_c/IMB_init_transfer.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_mem_info.h b/src_c/IMB_mem_info.h index f8d92ad5..14a31c39 100644 --- a/src_c/IMB_mem_info.h +++ b/src_c/IMB_mem_info.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -55,6 +55,6 @@ Header file newly introduced in IMB 3.1 #define CACHE_LINE_SIZE 64 /* default last level cache line size (Bytes) */ #define MEM_UNIT 1073741824 /* Units for memory usage sizes */ -#define MAX_MEM_USAGE 1 /* default max. memory (in units MEM_UNIT Bytes) used for message buffers */ +#define MAX_MEM_USAGE 2 /* default max. memory (in units MEM_UNIT Bytes) used for message buffers */ #endif diff --git a/src_c/IMB_mem_manager.c b/src_c/IMB_mem_manager.c index bd3a170e..fb8b535b 100644 --- a/src_c/IMB_mem_manager.c +++ b/src_c/IMB_mem_manager.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -724,7 +724,7 @@ In/out variables: int acc_rep_test, t_sample; int selected_n_sample = ITERATIONS->n_sample; - memset(time, 0, MAX_TIME_ID); + memset(time, 0, MAX_TIME_ID * sizeof(*time)); if (iter == 0 || BMODE->type == Sync) { ITERATIONS->n_sample_prev = ITERATIONS->msgspersample; if (c_info->n_lens > 0) { diff --git a/src_c/IMB_ones_accu.c b/src_c/IMB_ones_accu.c index 3f3c3626..a811ac8a 100644 --- a/src_c/IMB_ones_accu.c +++ b/src_c/IMB_ones_accu.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_ones_bidir.c b/src_c/IMB_ones_bidir.c index 90878212..21d4a933 100644 --- a/src_c/IMB_ones_bidir.c +++ b/src_c/IMB_ones_bidir.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_ones_unidir.c b/src_c/IMB_ones_unidir.c index 4bbf8ce6..9924d3a6 100644 --- a/src_c/IMB_ones_unidir.c +++ b/src_c/IMB_ones_unidir.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_open_close.c b/src_c/IMB_open_close.c index 14a2f2e8..855335cf 100644 --- a/src_c/IMB_open_close.c +++ b/src_c/IMB_open_close.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_output.c b/src_c/IMB_output.c index 93f95b47..bad342b1 100644 --- a/src_c/IMB_output.c +++ b/src_c/IMB_output.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -342,7 +342,11 @@ Input variables: break; case SAMPLE_FAILED_INT_OVERFLOW: - sprintf(aux_string + offset, " int-overflow.; The production rank*size caused int overflow for given sample"); +#ifdef MPI1 + sprintf(aux_string + offset, " int-overflow; The production rank*size caused int overflow for given sample; use flag \"-data_type double\""); +#else + sprintf(aux_string + offset, " int-overflow; The production rank*size caused int overflow for given sample"); +#endif break; case SAMPLE_FAILED_TIME_OUT: aux_string[offset] = '\0'; diff --git a/src_c/IMB_parse_name_ext.c b/src_c/IMB_parse_name_ext.c index 8585ef30..a8c9bea9 100644 --- a/src_c/IMB_parse_name_ext.c +++ b/src_c/IMB_parse_name_ext.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_parse_name_io.c b/src_c/IMB_parse_name_io.c index 1cd21e07..0a869659 100644 --- a/src_c/IMB_parse_name_io.c +++ b/src_c/IMB_parse_name_io.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_parse_name_mpi1.c b/src_c/IMB_parse_name_mpi1.c index 110c1a19..6b34fbe9 100644 --- a/src_c/IMB_parse_name_mpi1.c +++ b/src_c/IMB_parse_name_mpi1.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_parse_name_nbc.c b/src_c/IMB_parse_name_nbc.c index bc9acfa0..1fd1417a 100644 --- a/src_c/IMB_parse_name_nbc.c +++ b/src_c/IMB_parse_name_nbc.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_parse_name_rma.c b/src_c/IMB_parse_name_rma.c index 542f05ce..36cb655a 100644 --- a/src_c/IMB_parse_name_rma.c +++ b/src_c/IMB_parse_name_rma.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_pingping.c b/src_c/IMB_pingping.c index 255d4bcb..e2255554 100644 --- a/src_c/IMB_pingping.c +++ b/src_c/IMB_pingping.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_pingpong.c b/src_c/IMB_pingpong.c index 54de9aba..ad68aa98 100644 --- a/src_c/IMB_pingpong.c +++ b/src_c/IMB_pingpong.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_prototypes.h b/src_c/IMB_prototypes.h index 5b35b250..a43ef9ae 100644 --- a/src_c/IMB_prototypes.h +++ b/src_c/IMB_prototypes.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -633,6 +633,6 @@ void IMB_chk_contained(void* part, size_t p_size, void* whole, size_t w_size, size_t* pos, size_t* fpos, double* D, char*msg); -long IMB_compute_crc(register char* buf, register size_t size); +long IMB_compute_crc(char* buf, size_t size); #endif // IMB_PROTOTYPES_H diff --git a/src_c/IMB_read.c b/src_c/IMB_read.c index 46b1ee43..fe4d4439 100644 --- a/src_c/IMB_read.c +++ b/src_c/IMB_read.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -346,7 +346,7 @@ Output variables: } /*if( pos == indv_block )*/ else if (pos == explic) { for (j = 0; j < j_sample; j++) { - Offset = c_info->split.Offset + (MPI_Offset)(j*Totalsize); + Offset = c_info->split.Offset + (MPI_Offset)j*(MPI_Offset)Totalsize; MPI_ERRHAND(GEN_File_read_at(c_info->fh, Offset, c_info->r_buffer, Locsize, c_info->etype, &stat)); @@ -442,8 +442,7 @@ void IMB_iread_ij(struct comm_info* c_info, int size, POSITIONING pos, } } else if (pos == explic) { for (j = 0; j < i_sample*j_sample; j++) { - - Offset = c_info->split.Offset + (MPI_Offset)(j*Totalsize); + Offset = c_info->split.Offset + (MPI_Offset)j*(MPI_Offset)Totalsize; MPI_ERRHAND(MPI_File_read_at_all_begin(c_info->fh, Offset, c_info->r_buffer, Locsize, c_info->etype)); @@ -515,7 +514,7 @@ void IMB_iread_ij(struct comm_info* c_info, int size, POSITIONING pos, } } else if (pos == explic) { for (j = 0; j < j_sample; j++) { - Offset = c_info->split.Offset + (MPI_Offset)(j*Totalsize); + Offset = c_info->split.Offset + (MPI_Offset)j*(MPI_Offset)Totalsize; MPI_ERRHAND(MPI_File_iread_at(c_info->fh, Offset, c_info->r_buffer, Locsize, c_info->etype, &REQUESTS[j])); diff --git a/src_c/IMB_reduce.c b/src_c/IMB_reduce.c index 5cbdf37c..9951b8d4 100644 --- a/src_c/IMB_reduce.c +++ b/src_c/IMB_reduce.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_reduce_local.c b/src_c/IMB_reduce_local.c index 1b43cd33..83ff71b8 100644 --- a/src_c/IMB_reduce_local.c +++ b/src_c/IMB_reduce_local.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_reduce_scatter.c b/src_c/IMB_reduce_scatter.c index 62eef1bf..b2b73ccc 100644 --- a/src_c/IMB_reduce_scatter.c +++ b/src_c/IMB_reduce_scatter.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_reduce_scatter_block.c b/src_c/IMB_reduce_scatter_block.c index 61078c37..51d5f87f 100644 --- a/src_c/IMB_reduce_scatter_block.c +++ b/src_c/IMB_reduce_scatter_block.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_rma_atomic.c b/src_c/IMB_rma_atomic.c index ca8a679f..df3100eb 100644 --- a/src_c/IMB_rma_atomic.c +++ b/src_c/IMB_rma_atomic.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_rma_get.c b/src_c/IMB_rma_get.c index 808f512e..5b126374 100644 --- a/src_c/IMB_rma_get.c +++ b/src_c/IMB_rma_get.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_rma_put.c b/src_c/IMB_rma_put.c index 2161abb6..58204796 100644 --- a/src_c/IMB_rma_put.c +++ b/src_c/IMB_rma_put.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_scatter.c b/src_c/IMB_scatter.c index cb2fefcd..790e564b 100644 --- a/src_c/IMB_scatter.c +++ b/src_c/IMB_scatter.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_scatterv.c b/src_c/IMB_scatterv.c index 13eeba4b..8d9946b2 100644 --- a/src_c/IMB_scatterv.c +++ b/src_c/IMB_scatterv.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_sendrecv.c b/src_c/IMB_sendrecv.c index 268c26cc..ce7e718e 100644 --- a/src_c/IMB_sendrecv.c +++ b/src_c/IMB_sendrecv.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_settings.h b/src_c/IMB_settings.h index 5b872138..d14356a9 100644 --- a/src_c/IMB_settings.h +++ b/src_c/IMB_settings.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_settings_io.h b/src_c/IMB_settings_io.h index d1f7a5ef..a960bcf6 100644 --- a/src_c/IMB_settings_io.h +++ b/src_c/IMB_settings_io.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_strgs.c b/src_c/IMB_strgs.c index 9951b81e..f855ac0d 100644 --- a/src_c/IMB_strgs.c +++ b/src_c/IMB_strgs.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_user_set_info.c b/src_c/IMB_user_set_info.c index 3dbc8f41..079d62ac 100644 --- a/src_c/IMB_user_set_info.c +++ b/src_c/IMB_user_set_info.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_utils.c b/src_c/IMB_utils.c index 98145a5a..31d09405 100644 --- a/src_c/IMB_utils.c +++ b/src_c/IMB_utils.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_warm_up.c b/src_c/IMB_warm_up.c index 6faf5deb..7a7bb784 100644 --- a/src_c/IMB_warm_up.c +++ b/src_c/IMB_warm_up.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_window.c b/src_c/IMB_window.c index 7ea0d9d5..5cf20ebc 100644 --- a/src_c/IMB_window.c +++ b/src_c/IMB_window.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_write.c b/src_c/IMB_write.c index 4eed6d77..fc2c5746 100644 --- a/src_c/IMB_write.c +++ b/src_c/IMB_write.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -306,7 +306,7 @@ void IMB_write_ij(struct comm_info* c_info, int size, POSITIONING pos, } } else if (pos == explic) { for (j = 0; j < j_sample; j++) { - Offset = c_info->split.Offset + (MPI_Offset)((i + j)*Totalsize); + Offset = c_info->split.Offset + (MPI_Offset)(i + j)*(MPI_Offset)Totalsize; MPI_ERRHAND(GEN_File_write_at(c_info->fh, Offset, c_info->s_buffer, Locsize, c_info->etype, &stat)); @@ -406,7 +406,7 @@ void IMB_iwrite_ij(struct comm_info* c_info, int size, POSITIONING pos, } } else if (pos == explic) { for (j = 0; j < i_sample*j_sample; j++) { - Offset = c_info->split.Offset + (MPI_Offset)(j*Totalsize); + Offset = c_info->split.Offset + (MPI_Offset)j*(MPI_Offset)Totalsize; MPI_ERRHAND(MPI_File_write_at_all_begin(c_info->fh, Offset, c_info->s_buffer, Locsize, c_info->etype)); @@ -471,7 +471,7 @@ void IMB_iwrite_ij(struct comm_info* c_info, int size, POSITIONING pos, } else if (pos == explic) { for (j = 0; j < j_sample; j++) { - Offset = c_info->split.Offset + (MPI_Offset)((i + j)*Totalsize); + Offset = c_info->split.Offset + (MPI_Offset)(i + j)*(MPI_Offset)Totalsize; MPI_ERRHAND(MPI_File_iwrite_at(c_info->fh, Offset, c_info->s_buffer, Locsize, c_info->etype, &REQUESTS[j])); diff --git a/src_c/IMB_ze.c b/src_c/IMB_ze.c index 9af7b8fb..24240219 100644 --- a/src_c/IMB_ze.c +++ b/src_c/IMB_ze.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -161,7 +161,6 @@ void ze_ass_buf(void *buf, int rank, size_t pos1, size_t pos2, int value) if (pos2 <= pos1) return; - static const int asize = (int)sizeof(assign_type); char *tmp_buf = malloc(pos2 + 1 - pos1); ze_memcpy(tmp_buf, buf + pos1, pos2 - pos1); IMB_ass_buf(tmp_buf, rank, pos1, pos2, value); diff --git a/src_c/IMB_ze.h b/src_c/IMB_ze.h index 07768244..18296143 100644 --- a/src_c/IMB_ze.h +++ b/src_c/IMB_ze.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -51,6 +51,7 @@ For more documentation than found here, see #include "IMB_declare.h" #include "IMB_benchmark.h" #include "IMB_ze_api.h" +#include "IMB_prototypes.h" #define IMB_L0_MEM_ALIGNMENT 64 #define ZE_NULL_HANDLE NULL /* just for verbosity */ diff --git a/src_c/IMB_ze_api.c b/src_c/IMB_ze_api.c index 7bc76e1d..deeada46 100644 --- a/src_c/IMB_ze_api.c +++ b/src_c/IMB_ze_api.c @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/IMB_ze_api.h b/src_c/IMB_ze_api.h index 052e8b93..17c3cdb1 100644 --- a/src_c/IMB_ze_api.h +++ b/src_c/IMB_ze_api.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_c/Makefile b/src_c/Makefile index 5a13d3d5..d8e6a90d 100644 --- a/src_c/Makefile +++ b/src_c/Makefile @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** @@ -31,7 +31,7 @@ # *************************************************************************** ifeq ($(origin CC),default) -CC=mpicc +CC=mpiicx endif BINARY=IMB-$(TARGET) diff --git a/src_c/Makefile_win b/src_c/Makefile_win index 37862815..53acad3e 100644 --- a/src_c/Makefile_win +++ b/src_c/Makefile_win @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_c/P2P/Makefile b/src_c/P2P/Makefile index 9ac62f45..108dd1a6 100644 --- a/src_c/P2P/Makefile +++ b/src_c/P2P/Makefile @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** @@ -33,11 +33,11 @@ TARGET=P2P BINARY:=IMB-P2P -override CFLAGS += -O3 -Wall -Wextra -pedantic -Wno-long-long +override CFLAGS += -O3 -Wall -Wextra -Werror override LDFLAGS += -lm ifeq ($(origin CC),default) -CC=mpiicc +CC=mpiicx endif all: $(BINARY) diff --git a/src_c/P2P/imb_p2p.c b/src_c/P2P/imb_p2p.c index 90c0fb1e..ab872e18 100644 --- a/src_c/P2P/imb_p2p.c +++ b/src_c/P2P/imb_p2p.c @@ -39,16 +39,17 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #define INFO_BUFFER_SIZE 32767 #endif +#define IMB_INPUT_ARG_LEN (72) -static const char * VERSION = "2021.7"; +static const char * VERSION = "2021.8"; FILE* unit = NULL; imb_p2p_configuration_t imb_p2p_config = { 0 }; static void print_main_header(int argc, char **argv); -static void print_main_footer(); +static void print_main_footer(void); static void loading(int argc, char **argv); static void initialization(int argc, char **argv); -static void finalization(); +static void finalization(void); int main(int argc, char **argv) { size_t i; @@ -127,7 +128,7 @@ void imb_p2p_barrier(MPI_Comm comm) { } } -void imb_p2p_pause() { +void imb_p2p_pause(void) { #ifndef WIN_IMB if (imb_p2p_config.pause_usec >= 0) { usleep(imb_p2p_config.pause_usec); @@ -135,7 +136,7 @@ void imb_p2p_pause() { #endif } -static void print_title() { +static void print_title(void) { fprintf(unit, "#------------------------------------------------------------\n"); fprintf(unit, "# Intel(R) MPI Benchmarks %s, IMB-P2P part\n", VERSION); fprintf(unit, "#------------------------------------------------------------\n"); @@ -252,7 +253,7 @@ static void print_main_header(int argc, char **argv) { fflush(unit); } -static void print_main_footer() { +static void print_main_footer(void) { fprintf(unit, "\n\n# All processes entering MPI_Finalize\n\n"); fflush(unit); if (unit != stdout) { @@ -261,7 +262,7 @@ static void print_main_footer() { } } -static void free_benchmarks() { +static void free_benchmarks(void) { if (imb_p2p_config.benchmarks.array) { imb_p2p_free_mem(imb_p2p_config.benchmarks.array); } @@ -288,7 +289,7 @@ static void add_benchmark(const char * name, imb_p2p_procedure_t procedure) { imb_p2p_config.benchmarks.length++; } -static void free_messages() { +static void free_messages(void) { if (imb_p2p_config.messages.array) { imb_p2p_free_mem(imb_p2p_config.messages.array); } @@ -540,7 +541,7 @@ static void initialization(int argc, char **argv) { } exit(1); } else { - char line[72]; + char line[IMB_INPUT_ARG_LEN]; char s[sizeof(line)]; free_messages(); while (fgets(line, sizeof(line), file)) { @@ -625,7 +626,7 @@ static void initialization(int argc, char **argv) { } } -static void finalization() { +static void finalization(void) { imb_p2p_barrier(MPI_COMM_WORLD); if (imb_p2p_config.rank == 0) { print_main_footer(); diff --git a/src_c/P2P/imb_p2p.h b/src_c/P2P/imb_p2p.h index 6c3be8b0..98d54653 100644 --- a/src_c/P2P/imb_p2p.h +++ b/src_c/P2P/imb_p2p.h @@ -66,21 +66,21 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. extern FILE* unit; void imb_p2p_barrier(MPI_Comm comm); -void imb_p2p_pause(); -void imb_p2p_pingpong(); -void imb_p2p_pingping(); -void imb_p2p_unirandom(); -void imb_p2p_birandom(); -void imb_p2p_corandom(); -void imb_p2p_stencil2d(); -void imb_p2p_stencil3d(); -void imb_p2p_sendrecv_replace(); +void imb_p2p_pause(void); +void imb_p2p_pingpong(void); +void imb_p2p_pingping(void); +void imb_p2p_unirandom(void); +void imb_p2p_birandom(void); +void imb_p2p_corandom(void); +void imb_p2p_stencil2d(void); +void imb_p2p_stencil3d(void); +void imb_p2p_sendrecv_replace(void); void imb_p2p_print_benchmark_header(const char * name); void imb_p2p_free_mem(void *ptr); void* imb_p2p_alloc_mem(size_t size); void* imb_p2p_realloc_mem(void *old_ptr, size_t old_size, size_t new_size); -typedef void(*imb_p2p_procedure_t)(); +typedef void(*imb_p2p_procedure_t)(void); typedef struct imb_p2p_benchmark { const char * name; diff --git a/src_c/P2P/imb_p2p_birandom.c b/src_c/P2P/imb_p2p_birandom.c index be309e81..f16e66ad 100644 --- a/src_c/P2P/imb_p2p_birandom.c +++ b/src_c/P2P/imb_p2p_birandom.c @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "imb_p2p.h" -void imb_p2p_birandom() { +void imb_p2p_birandom(void) { char *s_buffer; char *r_buffer; size_t msg_size_index; diff --git a/src_c/P2P/imb_p2p_corandom.c b/src_c/P2P/imb_p2p_corandom.c index fbf94e68..ce25c8a1 100644 --- a/src_c/P2P/imb_p2p_corandom.c +++ b/src_c/P2P/imb_p2p_corandom.c @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "imb_p2p.h" -void imb_p2p_corandom() { +void imb_p2p_corandom(void) { char *s_buffer; char *r_buffer; int *random_ring; diff --git a/src_c/P2P/imb_p2p_pingping.c b/src_c/P2P/imb_p2p_pingping.c index acd99c93..a8a9a989 100644 --- a/src_c/P2P/imb_p2p_pingping.c +++ b/src_c/P2P/imb_p2p_pingping.c @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "imb_p2p.h" -void imb_p2p_pingping() { +void imb_p2p_pingping(void) { char *s_buffer; char *r_buffer; size_t msg_size_index; diff --git a/src_c/P2P/imb_p2p_pingpong.c b/src_c/P2P/imb_p2p_pingpong.c index f6ae5fc7..f36926ed 100644 --- a/src_c/P2P/imb_p2p_pingpong.c +++ b/src_c/P2P/imb_p2p_pingpong.c @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "imb_p2p.h" -void imb_p2p_pingpong() { +void imb_p2p_pingpong(void) { char *s_buffer; char *r_buffer; size_t msg_size_index; diff --git a/src_c/P2P/imb_p2p_sendrecv_replace.c b/src_c/P2P/imb_p2p_sendrecv_replace.c index 05b34091..47bd8742 100644 --- a/src_c/P2P/imb_p2p_sendrecv_replace.c +++ b/src_c/P2P/imb_p2p_sendrecv_replace.c @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "imb_p2p.h" -void imb_p2p_sendrecv_replace() { +void imb_p2p_sendrecv_replace(void) { char *buffer; size_t msg_size_index; int nranks = imb_p2p_config.nranks; diff --git a/src_c/P2P/imb_p2p_stencil2d.c b/src_c/P2P/imb_p2p_stencil2d.c index 008cf38a..78576a5e 100644 --- a/src_c/P2P/imb_p2p_stencil2d.c +++ b/src_c/P2P/imb_p2p_stencil2d.c @@ -41,7 +41,7 @@ static int get_rank(int x, int y, int length_x, int length_y) return length_x * y + x; } -void imb_p2p_stencil2d() { +void imb_p2p_stencil2d(void) { char *send_buffers[NUMBER_OF_NEIGHBORS]; char *recv_buffers[NUMBER_OF_NEIGHBORS]; int neighbours[NUMBER_OF_NEIGHBORS]; diff --git a/src_c/P2P/imb_p2p_stencil3d.c b/src_c/P2P/imb_p2p_stencil3d.c index 0a1c43b8..b9b69daf 100644 --- a/src_c/P2P/imb_p2p_stencil3d.c +++ b/src_c/P2P/imb_p2p_stencil3d.c @@ -42,7 +42,7 @@ static int get_rank(int x, int y, int z, int length_x, int length_y, int length_ return length_x * length_y * z + length_x * y + x; } -void imb_p2p_stencil3d() { +void imb_p2p_stencil3d(void) { char *send_buffers[NUMBER_OF_NEIGHBORS]; char *recv_buffers[NUMBER_OF_NEIGHBORS]; int neighbours[NUMBER_OF_NEIGHBORS]; @@ -59,12 +59,14 @@ void imb_p2p_stencil3d() { length_z++; } while ((length_x * length_y * length_z) > nranks) { - int n, lx, ly; + int lx, ly, n = 0; length_z--; while ((length_z > 1) && (nranks % length_z)) { length_z--; } - n = nranks / length_z; + if (length_z != 0) { + n = nranks / length_z; + } lx = 2; ly = 2; while ((lx * ly) < n) { diff --git a/src_c/P2P/imb_p2p_unirandom.c b/src_c/P2P/imb_p2p_unirandom.c index 05eed32f..310933cd 100644 --- a/src_c/P2P/imb_p2p_unirandom.c +++ b/src_c/P2P/imb_p2p_unirandom.c @@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "imb_p2p.h" -void imb_p2p_unirandom() { +void imb_p2p_unirandom(void) { char *s_buffer; char *r_buffer; size_t msg_size_index; diff --git a/src_cpp/EXT/EXT_benchmark.cpp b/src_cpp/EXT/EXT_benchmark.cpp index 5e9c09f7..f4357333 100644 --- a/src_cpp/EXT/EXT_benchmark.cpp +++ b/src_cpp/EXT/EXT_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -53,6 +53,8 @@ extern "C" { using namespace std; #define BENCHMARK(BMRK_FN, BMRK_NAME) \ +template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames; \ +template<> BenchmarkSuite *BenchmarkSuite::instance; \ template<> smart_ptr OriginalBenchmark, BMRK_FN>::descr = NULL; \ DECLARE_INHERITED_TEMPLATE(GLUE_TYPENAME(OriginalBenchmark, BMRK_FN>), BMRK_NAME) \ template class OriginalBenchmark, BMRK_FN>; \ diff --git a/src_cpp/EXT/EXT_suite.cpp b/src_cpp/EXT/EXT_suite.cpp index 1c848c57..8b033be5 100644 --- a/src_cpp/EXT/EXT_suite.cpp +++ b/src_cpp/EXT/EXT_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -74,8 +74,8 @@ bool load_msg_sizes(const char *filename) return false; int n_lens = 0; - char inp_line[72]; - while(fgets(inp_line,72,t)) { + char inp_line[IMB_INPUT_ARG_LEN]; + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { if( inp_line[0] != '#' && strlen(inp_line)>1 ) n_lens++; } @@ -90,7 +90,7 @@ bool load_msg_sizes(const char *filename) c_info.n_lens = n_lens; - char S[72]; + char S[IMB_INPUT_ARG_LEN]; int sz, isz; c_info.msglen = (int *)malloc(n_lens * sizeof(int)); @@ -102,7 +102,7 @@ bool load_msg_sizes(const char *filename) isz=-1; - while(fgets(inp_line,72,t)) { + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { S[0]='\0'; if( inp_line[0] != '#' && strlen(inp_line)-1 ) { int ierr; diff --git a/src_cpp/EXT/Makefile.EXT.mk b/src_cpp/EXT/Makefile.EXT.mk index 9ed5a0bb..51b90edd 100644 --- a/src_cpp/EXT/Makefile.EXT.mk +++ b/src_cpp/EXT/Makefile.EXT.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/EXT/Makefile_win.EXT.mk b/src_cpp/EXT/Makefile_win.EXT.mk index f8c109a1..ca388aa8 100644 --- a/src_cpp/EXT/Makefile_win.EXT.mk +++ b/src_cpp/EXT/Makefile_win.EXT.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/HALO/Makefile.HALO.mk b/src_cpp/HALO/Makefile.HALO.mk index 0d72a503..3ef2971d 100644 --- a/src_cpp/HALO/Makefile.HALO.mk +++ b/src_cpp/HALO/Makefile.HALO.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/HALO/halo_benchmark.cpp b/src_cpp/HALO/halo_benchmark.cpp index f4594cff..46d77c05 100644 --- a/src_cpp/HALO/halo_benchmark.cpp +++ b/src_cpp/HALO/halo_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/HALO/halo_benchmark.h b/src_cpp/HALO/halo_benchmark.h index ed607a38..5c5838c9 100644 --- a/src_cpp/HALO/halo_benchmark.h +++ b/src_cpp/HALO/halo_benchmark.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/HALO/halo_suite.cpp b/src_cpp/HALO/halo_suite.cpp index 0622fb6b..1baaeef8 100644 --- a/src_cpp/HALO/halo_suite.cpp +++ b/src_cpp/HALO/halo_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/IO/IO_benchmark.cpp b/src_cpp/IO/IO_benchmark.cpp index 056f432c..05342470 100644 --- a/src_cpp/IO/IO_benchmark.cpp +++ b/src_cpp/IO/IO_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -53,6 +53,8 @@ extern "C" { using namespace std; #define BENCHMARK(BMRK_FN, BMRK_NAME) \ +template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames; \ +template<> BenchmarkSuite *BenchmarkSuite::instance; \ template<> smart_ptr OriginalBenchmark, BMRK_FN>::descr = NULL; \ DECLARE_INHERITED_TEMPLATE(GLUE_TYPENAME(OriginalBenchmark, BMRK_FN>), BMRK_NAME) \ template class OriginalBenchmark, BMRK_FN>; \ diff --git a/src_cpp/IO/IO_suite.cpp b/src_cpp/IO/IO_suite.cpp index 90d4bb0e..6af1faa7 100644 --- a/src_cpp/IO/IO_suite.cpp +++ b/src_cpp/IO/IO_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -76,8 +76,8 @@ bool load_msg_sizes(const char *filename) return false; int n_lens = 0; - char inp_line[72]; - while(fgets(inp_line,72,t)) { + char inp_line[IMB_INPUT_ARG_LEN]; + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { if( inp_line[0] != '#' && strlen(inp_line)>1 ) n_lens++; } @@ -92,7 +92,7 @@ bool load_msg_sizes(const char *filename) c_info.n_lens = n_lens; - char S[72]; + char S[IMB_INPUT_ARG_LEN]; int sz, isz; c_info.msglen = (int *)malloc(n_lens * sizeof(int)); @@ -104,7 +104,7 @@ bool load_msg_sizes(const char *filename) isz=-1; - while(fgets(inp_line,72,t)) { + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { S[0]='\0'; if( inp_line[0] != '#' && strlen(inp_line)-1 ) { int ierr; diff --git a/src_cpp/IO/Makefile.IO.mk b/src_cpp/IO/Makefile.IO.mk index 7fcd3421..274742d9 100644 --- a/src_cpp/IO/Makefile.IO.mk +++ b/src_cpp/IO/Makefile.IO.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/IO/Makefile_win.IO.mk b/src_cpp/IO/Makefile_win.IO.mk index 8dd25802..6688357c 100644 --- a/src_cpp/IO/Makefile_win.IO.mk +++ b/src_cpp/IO/Makefile_win.IO.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/MPI1/MPI1_benchmark.cpp b/src_cpp/MPI1/MPI1_benchmark.cpp index fbe4263d..220f00a1 100644 --- a/src_cpp/MPI1/MPI1_benchmark.cpp +++ b/src_cpp/MPI1/MPI1_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -53,6 +53,8 @@ extern "C" { using namespace std; #define BENCHMARK(BMRK_FN, BMRK_NAME) \ +template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames; \ +template<> BenchmarkSuite *BenchmarkSuite::instance; \ template<> smart_ptr OriginalBenchmark, BMRK_FN>::descr = NULL; \ DECLARE_INHERITED_TEMPLATE(GLUE_TYPENAME(OriginalBenchmark, BMRK_FN>), BMRK_NAME) \ template class OriginalBenchmark, BMRK_FN>; \ diff --git a/src_cpp/MPI1/MPI1_suite.cpp b/src_cpp/MPI1/MPI1_suite.cpp index be046dd5..c9788156 100644 --- a/src_cpp/MPI1/MPI1_suite.cpp +++ b/src_cpp/MPI1/MPI1_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -45,7 +45,6 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "utils.h" #include "any.h" #include "benchmark_suite.h" - extern "C" { #include "IMB_benchmark.h" #include "IMB_comm_info.h" @@ -74,8 +73,8 @@ bool load_msg_sizes(const char *filename) return false; int n_lens = 0; - char inp_line[72]; - while(fgets(inp_line,72,t)) { + char inp_line[IMB_INPUT_ARG_LEN]; + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { if( inp_line[0] != '#' && strlen(inp_line)>1 ) n_lens++; } @@ -90,7 +89,7 @@ bool load_msg_sizes(const char *filename) c_info.n_lens = n_lens; - char S[72]; + char S[IMB_INPUT_ARG_LEN]; int sz, isz; c_info.msglen = (int *)malloc(n_lens * sizeof(int)); @@ -102,7 +101,7 @@ bool load_msg_sizes(const char *filename) isz=-1; - while(fgets(inp_line,72,t)) { + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { S[0]='\0'; if( inp_line[0] != '#' && strlen(inp_line)-1 ) { int ierr; @@ -313,7 +312,7 @@ template <> bool BenchmarkSuite::declare_args(args_parser &parser, std: set_description( "The argument after -data_type is a one from possible strings,\n" "Specifying that type will be used:\n" - "byte, char, int, float, double\n" + "byte, char, int, float, double, float16, bfloat16\n" "\n" "Example:\n" "-data_type char\n" @@ -324,7 +323,7 @@ template <> bool BenchmarkSuite::declare_args(args_parser &parser, std: set_description( "The argument after -red_data_type is a one from possible strings,\n" "Specifying that type will be used:\n" - "char, int, float, double\n" + "char, int, float, double, float16, bfloat16\n" "\n" "Example:\n" "-red_data_type int\n" @@ -415,12 +414,24 @@ MPI_Op get_op(MPI_Datatype type) { MPI_Datatype mpi_int = MPI_INT; MPI_Datatype mpi_float = MPI_FLOAT; MPI_Datatype mpi_double = MPI_DOUBLE; +#ifdef MPIX_C_FLOAT16 + MPI_Datatype mpi_float16 = MPIX_C_FLOAT16; +#endif +#ifdef MPIX_C_BF16 + MPI_Datatype mpi_bfloat16 = MPIX_C_BF16; +#endif size_t type_size = sizeof(MPI_Datatype); if (!memcmp(&type, &mpi_char, type_size)) { MPI_Op_create(&(contig_sum), 1, &op); } else if (!memcmp(&type, &mpi_int, type_size)) { MPI_Op_create(&(contig_sum), 1, &op); } else if (!memcmp(&type, &mpi_float, type_size)) { MPI_Op_create(&(contig_sum), 1, &op); } else if (!memcmp(&type, &mpi_double, type_size)) { MPI_Op_create(&(contig_sum), 1, &op); } +#ifdef MPIX_C_FLOAT16 + else if (!memcmp(&type, &mpi_float16, type_size)) { op = MPI_OP_NULL; fprintf(stdout, "\nWarning: contig_type isn't supported\n"); } +#endif +#ifdef MPIX_C_BF16 + else if (!memcmp(&type, &mpi_bfloat16, type_size)) { op = MPI_OP_NULL; fprintf(stdout, "\nWarning: contig_type isn't supported \n"); } +#endif return op; } @@ -432,6 +443,12 @@ string type_to_name(MPI_Datatype type) { MPI_Datatype mpi_int = MPI_INT; MPI_Datatype mpi_float = MPI_FLOAT; MPI_Datatype mpi_double = MPI_DOUBLE; +#ifdef MPIX_C_FLOAT16 + MPI_Datatype mpi_float16 = MPIX_C_FLOAT16; +#endif +#ifdef MPIX_C_BF16 + MPI_Datatype mpi_bfloat16 = MPIX_C_BF16; +#endif size_t type_size = sizeof(MPI_Datatype); if (!memcmp(&type, &mpi_byte, type_size)) { name = "MPI_BYTE"; } @@ -439,6 +456,12 @@ string type_to_name(MPI_Datatype type) { else if (!memcmp(&type, &mpi_int, type_size)) { name = "MPI_INT"; } else if (!memcmp(&type, &mpi_float, type_size)) { name = "MPI_FLOAT"; } else if (!memcmp(&type, &mpi_double, type_size)) { name = "MPI_DOUBLE"; } +#ifdef MPIX_C_FLOAT16 + else if (!memcmp(&type, &mpi_float16, type_size)) { name = "MPIX_C_FLOAT16"; } +#endif +#ifdef MPIX_C_BF16 + else if (!memcmp(&type, &mpi_bfloat16, type_size)) { name = "MPIX_C_BF16"; } +#endif return name; } @@ -603,6 +626,16 @@ template <> bool BenchmarkSuite::prepare(const args_parser &parser, con } else if (given_data_type == "double") { c_info.s_data_type = MPI_DOUBLE; c_info.r_data_type = MPI_DOUBLE; +#ifdef MPIX_C_FLOAT16 + } else if (given_data_type == "float16") { + c_info.s_data_type = MPIX_C_FLOAT16; + c_info.r_data_type = MPIX_C_FLOAT16; +#endif +#ifdef MPIX_C_BF16 + } else if (given_data_type == "bfloat16") { + c_info.s_data_type = MPIX_C_BF16; + c_info.r_data_type = MPIX_C_BF16; +#endif } else { output << "Invalid data_type " << given_data_type << endl; output << " Set data_type byte" << endl; @@ -620,6 +653,14 @@ template <> bool BenchmarkSuite::prepare(const args_parser &parser, con c_info.red_data_type = MPI_FLOAT; } else if (given_red_data_type == "double") { c_info.red_data_type = MPI_DOUBLE; +#ifdef MPIX_C_FLOAT16 + } else if (given_red_data_type == "float16") { + c_info.red_data_type = MPIX_C_FLOAT16; +#endif +#ifdef MPIX_C_BF16 + } else if (given_red_data_type == "bfloat16") { + c_info.red_data_type = MPIX_C_BF16; +#endif } else { output << "Invalid red_data_type " << given_red_data_type << endl; output << " Set red_data_type float" << endl; diff --git a/src_cpp/MPI1/Makefile.MPI1.mk b/src_cpp/MPI1/Makefile.MPI1.mk index c9b905f2..cf0c7514 100644 --- a/src_cpp/MPI1/Makefile.MPI1.mk +++ b/src_cpp/MPI1/Makefile.MPI1.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** @@ -72,7 +72,8 @@ $(C_SRC_DIR)/IMB_utils.c \ $(C_SRC_DIR)/IMB_warm_up.c ifdef GPU_ENABLE override C_SRC += $(C_SRC_DIR)/IMB_gpu_common.c -override CPPFLAGS += -DGPU_ENABLE -ldl +override CPPFLAGS += -DGPU_ENABLE +override LDFLAGS += -ldl ifdef CUDA_INCLUDE_DIR override C_SRC += $(C_SRC_DIR)/IMB_cuda.c \ $(C_SRC_DIR)/IMB_cuda_api.c @@ -85,9 +86,11 @@ override CPPFLAGS += -I${ZE_INCLUDE_DIR} -DZE_INCLUDE_DIR endif ifndef CUDA_INCLUDE_DIR ifndef ZE_INCLUDE_DIR +ifneq (clean, $(filter clean,$(MAKECMDGOALS))) $(error CUDA_INCLUDE_DIR and ZE_INCLUDE_DIR are not set) endif endif +endif SUBDIR:=GPU else SUBDIR:=CPU diff --git a/src_cpp/MPI1/Makefile_win.MPI1.mk b/src_cpp/MPI1/Makefile_win.MPI1.mk index 3a1b2e81..e1478e6b 100644 --- a/src_cpp/MPI1/Makefile_win.MPI1.mk +++ b/src_cpp/MPI1/Makefile_win.MPI1.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/MT/MT_benchmark.cpp b/src_cpp/MT/MT_benchmark.cpp index 3288beab..e37f0b8e 100644 --- a/src_cpp/MT/MT_benchmark.cpp +++ b/src_cpp/MT/MT_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -87,6 +87,9 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace std; +template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames; +template<> BenchmarkSuite *BenchmarkSuite::instance; + inline bool set_stride(int rank, int size, int &stride, int &group) { if (stride == 0) diff --git a/src_cpp/MT/MT_benchmark.h b/src_cpp/MT/MT_benchmark.h index 911eb184..9650b221 100644 --- a/src_cpp/MT/MT_benchmark.h +++ b/src_cpp/MT/MT_benchmark.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -300,9 +300,9 @@ class BenchmarkMTBase : public Benchmark { } if (!result) t = 0; - if (odata_local.checks.failures) { - cout << "CHECK FAILURES: rank " << rank << ": " << odata_local.checks.failures << endl; - } + if (odata_local.checks.failures) { + cout << "CHECK FAILURES: rank " << rank << ": " << odata_local.checks.failures << endl; + } return; } virtual void init() { diff --git a/src_cpp/MT/MT_suite.cpp b/src_cpp/MT/MT_suite.cpp index ea968afe..95ab6395 100644 --- a/src_cpp/MT/MT_suite.cpp +++ b/src_cpp/MT/MT_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -178,7 +178,7 @@ template <> bool BenchmarkSuite::prepare(const args_parser &parser, MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0 && !noheader) { output << "#------------------------------------------------------------------" << std::endl; - output << "# Intel(R) MPI Benchmarks " << "2021.7" << ", MT part " << std::endl; + output << "# Intel(R) MPI Benchmarks " << "2021.8" << ", MT part " << std::endl; output << "#------------------------------------------------------------------" << std::endl; output << "#" << std::endl; } diff --git a/src_cpp/MT/MT_types.h b/src_cpp/MT/MT_types.h index 6de96d37..c9fadc7f 100644 --- a/src_cpp/MT/MT_types.h +++ b/src_cpp/MT/MT_types.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/MT/Makefile.MT.mk b/src_cpp/MT/Makefile.MT.mk index b2b46270..c3bb2b9c 100644 --- a/src_cpp/MT/Makefile.MT.mk +++ b/src_cpp/MT/Makefile.MT.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/MT/Makefile_win.MT.mk b/src_cpp/MT/Makefile_win.MT.mk index df0cf137..c87fd6df 100644 --- a/src_cpp/MT/Makefile_win.MT.mk +++ b/src_cpp/MT/Makefile_win.MT.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/Makefile b/src_cpp/Makefile index aceb9d6b..15fbe2ae 100644 --- a/src_cpp/Makefile +++ b/src_cpp/Makefile @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** @@ -54,37 +54,51 @@ BINARY:=imb endif ifeq ($(origin CC),default) -CC=mpiicc +CC=mpiicx endif ifeq ($(origin CXX),default) -CXX=mpiicpc +CXX=mpiicpx endif override CPPFLAGS += -I. -override CFLAGS += -g -O0 -Wall -Wno-long-long -override CXXFLAGS += -g -O0 -Wall -Wextra -pedantic -Wno-long-long -ifeq "$(CC)" "icx" -CFLAGS += -std=c++11 -endif +override CFLAGS += -g -O0 -Wall -Werror +override CXXFLAGS += -g -O0 -Wall -Wextra -Werror ifdef WITH_OPENMP +ifeq ("$(CXX)",$(filter "$(CXX)", "mpiicpx" "icpx")) +override CXXFLAGS += -qopenmp +endif +ifeq ("$(CC)",$(filter "$(CC)", "mpiicx" "icx")) +override CFLAGS += -qopenmp +endif +ifeq ("$(CXX)",$(filter "$(CXX)", "mpiicpc" "icpc")) +override CXXFLAGS += -qopenmp +endif +ifeq ("$(CC)",$(filter "$(CC)", "mpiicc" "icc")) +override CFLAGS += -qopenmp +endif +ifeq "$(CXX)" "g++" +override CXXFLAGS += -fopenmp +endif +ifeq "$(CC)" "gcc" override CFLAGS += -fopenmp +endif +ifeq "$(CXX)" "mpicxx" override CXXFLAGS += -fopenmp endif +ifeq "$(CC)" "mpicc" +override CFLAGS += -fopenmp +endif +endif +# ICC ICPC #ifeq ($(origin CC),default) -#CXX=mpicc +#CC=mpiicc #endif #ifeq ($(origin CXX),default) -#CC=mpicxx +#CXX=mpiicpc #endif #override CPPFLAGS += -I. #override CFLAGS = -g -Wall -Wextra -pedantic -Wno-long-long #CXXFLAGS = -g -Wall -Wextra -pedantic -Wno-long-long -#ifdef WITH_OPENMP -#override CFLAGS += -qopenmp -#override CXXFLAGS += -qopenmp -#endif - - all: $(BINARY) diff --git a/src_cpp/Makefile_win b/src_cpp/Makefile_win index e88b000f..9763096e 100644 --- a/src_cpp/Makefile_win +++ b/src_cpp/Makefile_win @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/NBC/Makefile.NBC.mk b/src_cpp/NBC/Makefile.NBC.mk index ab7aee88..a821bf92 100644 --- a/src_cpp/NBC/Makefile.NBC.mk +++ b/src_cpp/NBC/Makefile.NBC.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/NBC/Makefile_win.NBC.mk b/src_cpp/NBC/Makefile_win.NBC.mk index 544b2276..df270e88 100644 --- a/src_cpp/NBC/Makefile_win.NBC.mk +++ b/src_cpp/NBC/Makefile_win.NBC.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/NBC/NBC_benchmark.cpp b/src_cpp/NBC/NBC_benchmark.cpp index 7e23471c..1554484f 100644 --- a/src_cpp/NBC/NBC_benchmark.cpp +++ b/src_cpp/NBC/NBC_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -53,6 +53,8 @@ extern "C" { using namespace std; #define BENCHMARK(BMRK_FN, BMRK_NAME) \ +template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames; \ +template<> BenchmarkSuite *BenchmarkSuite::instance; \ template<> smart_ptr OriginalBenchmark, BMRK_FN>::descr = NULL; \ DECLARE_INHERITED_TEMPLATE(GLUE_TYPENAME(OriginalBenchmark, BMRK_FN>), BMRK_NAME) \ template class OriginalBenchmark, BMRK_FN>; \ diff --git a/src_cpp/NBC/NBC_suite.cpp b/src_cpp/NBC/NBC_suite.cpp index e09fd4c2..618274c0 100644 --- a/src_cpp/NBC/NBC_suite.cpp +++ b/src_cpp/NBC/NBC_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -74,8 +74,8 @@ bool load_msg_sizes(const char *filename) return false; int n_lens = 0; - char inp_line[72]; - while(fgets(inp_line,72,t)) { + char inp_line[IMB_INPUT_ARG_LEN]; + while(fgets(inp_line, IMB_INPUT_ARG_LEN, t)) { if( inp_line[0] != '#' && strlen(inp_line)>1 ) n_lens++; } @@ -90,7 +90,7 @@ bool load_msg_sizes(const char *filename) c_info.n_lens = n_lens; - char S[72]; + char S[IMB_INPUT_ARG_LEN]; int sz, isz; c_info.msglen = (int *)malloc(n_lens * sizeof(int)); @@ -102,7 +102,7 @@ bool load_msg_sizes(const char *filename) isz=-1; - while(fgets(inp_line,72,t)) { + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { S[0]='\0'; if( inp_line[0] != '#' && strlen(inp_line)-1 ) { int ierr; diff --git a/src_cpp/RMA/Makefile.RMA.mk b/src_cpp/RMA/Makefile.RMA.mk index 8fb7a283..8a4aeec0 100644 --- a/src_cpp/RMA/Makefile.RMA.mk +++ b/src_cpp/RMA/Makefile.RMA.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/RMA/Makefile_win.RMA.mk b/src_cpp/RMA/Makefile_win.RMA.mk index a23473b9..8c6fc057 100644 --- a/src_cpp/RMA/Makefile_win.RMA.mk +++ b/src_cpp/RMA/Makefile_win.RMA.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/RMA/RMA_benchmark.cpp b/src_cpp/RMA/RMA_benchmark.cpp index 2100fbf7..d565fcb9 100644 --- a/src_cpp/RMA/RMA_benchmark.cpp +++ b/src_cpp/RMA/RMA_benchmark.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -53,6 +53,8 @@ extern "C" { using namespace std; #define BENCHMARK(BMRK_FN, BMRK_NAME) \ +template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames; \ +template<> BenchmarkSuite *BenchmarkSuite::instance; \ template<> smart_ptr OriginalBenchmark, BMRK_FN>::descr = NULL; \ DECLARE_INHERITED_TEMPLATE(GLUE_TYPENAME(OriginalBenchmark, BMRK_FN>), BMRK_NAME) \ template class OriginalBenchmark, BMRK_FN>; \ @@ -288,6 +290,7 @@ BENCHMARK(IMB_rma_passive_put, Truly_passive_put) descr->flags.insert(N_MODES_1); descr->flags.insert(NON_AGGREGATE); descr->flags.insert(NONBLOCKING); + descr->flags.insert(NTIMES_2); descr->flags.insert(PUT); descr->comments.push_back("The benchmark measures execution time of MPI_Put for 2 cases:"); descr->comments.push_back("1) The target is waiting in MPI_Barrier call (t_pure value)"); diff --git a/src_cpp/RMA/RMA_suite.cpp b/src_cpp/RMA/RMA_suite.cpp index 7b71871b..6790d252 100644 --- a/src_cpp/RMA/RMA_suite.cpp +++ b/src_cpp/RMA/RMA_suite.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -74,8 +74,8 @@ bool load_msg_sizes(const char *filename) return false; int n_lens = 0; - char inp_line[72]; - while(fgets(inp_line,72,t)) { + char inp_line[IMB_INPUT_ARG_LEN]; + while(fgets(inp_line, IMB_INPUT_ARG_LEN, t)) { if( inp_line[0] != '#' && strlen(inp_line)>1 ) n_lens++; } @@ -90,7 +90,7 @@ bool load_msg_sizes(const char *filename) c_info.n_lens = n_lens; - char S[72]; + char S[IMB_INPUT_ARG_LEN]; int sz, isz; c_info.msglen = (int *)malloc(n_lens * sizeof(int)); @@ -99,7 +99,7 @@ bool load_msg_sizes(const char *filename) isz=-1; - while(fgets(inp_line,72,t)) { + while(fgets(inp_line,IMB_INPUT_ARG_LEN,t)) { S[0]='\0'; if( inp_line[0] != '#' && strlen(inp_line)-1 ) { int ierr; diff --git a/src_cpp/any.h b/src_cpp/any.h index 455ba26d..d76b69a6 100644 --- a/src_cpp/any.h +++ b/src_cpp/any.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/args_parser.cpp b/src_cpp/args_parser.cpp index b2349206..c8bf66ad 100644 --- a/src_cpp/args_parser.cpp +++ b/src_cpp/args_parser.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/args_parser.h b/src_cpp/args_parser.h index e40a7a22..dfc398c8 100644 --- a/src_cpp/args_parser.h +++ b/src_cpp/args_parser.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -79,6 +79,14 @@ class args_parser { class value { public: + value(const value &other) { + this->initialized = other.initialized; + this->i = other.i; + this->f = other.f; + this->str = other.str; + this->b = other.b; + this->type = other.type; + } value() : initialized(false) {} value(float v) : initialized(true), i(0), str("(none)"), b(false) { type = FLOAT; f = v; } value(int v) : initialized(true), f(0), str("(none)"), b(false) { type = INT; i = v; } @@ -193,7 +201,7 @@ class args_parser { #endif virtual void set_default_value(); virtual bool is_default_setting_required() { return val.size() == 0 && !required; } - virtual bool is_required_but_not_set() { return required && vec_min != 0 && !val.size() ==0; } + virtual bool is_required_but_not_set() { return required && vec_min != 0 && (!val.size()) == 0; } virtual std::vector get_value_as_vector() const { return val; } }; diff --git a/src_cpp/args_parser_utests.cpp b/src_cpp/args_parser_utests.cpp index 871dae78..f91db459 100644 --- a/src_cpp/args_parser_utests.cpp +++ b/src_cpp/args_parser_utests.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/benchmark.h b/src_cpp/benchmark.h index 257c05b7..2dfc80e5 100644 --- a/src_cpp/benchmark.h +++ b/src_cpp/benchmark.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -36,6 +36,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #define UNUSED(expr) do { (void)(expr); } while (0) +#define IMB_INPUT_NAME_LEN 32 +#define IMB_INPUT_ARG_LEN 72 class BenchmarkSuiteBase; class Benchmark { diff --git a/src_cpp/benchmark_suite.h b/src_cpp/benchmark_suite.h index 4738f3b2..b9be42d2 100644 --- a/src_cpp/benchmark_suite.h +++ b/src_cpp/benchmark_suite.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -43,7 +43,7 @@ class BenchmarkSuite : public BenchmarkSuiteBase { static pnames_t *pnames; static BenchmarkSuite *instance; std::vector names_list; - public: + public: static BenchmarkSuite &get_instance() { if (instance == NULL) { instance = new BenchmarkSuite(); @@ -136,4 +136,4 @@ class BenchmarkSuite : public BenchmarkSuiteBase { #define DECLARE_BENCHMARK_SUITE_STUFF(SUITE, NAME) \ template<> BenchmarkSuite::pnames_t *BenchmarkSuite::pnames = 0; \ template<> BenchmarkSuite *BenchmarkSuite::instance = 0; \ -template <> const std::string BenchmarkSuite::get_name() const { return #NAME; } +template<> const std::string BenchmarkSuite::get_name() const { return #NAME; } diff --git a/src_cpp/benchmark_suite_base.h b/src_cpp/benchmark_suite_base.h index 5b3d773a..6d82b2cc 100644 --- a/src_cpp/benchmark_suite_base.h +++ b/src_cpp/benchmark_suite_base.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -38,7 +38,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class args_parser; class Benchmark; -struct BenchmarkSuiteBase { +class BenchmarkSuiteBase { + public: enum BenchListFilter { ALL_BENCHMARKS, DEFAULT_BENCHMARKS }; virtual void init() {} virtual bool declare_args(args_parser &, diff --git a/src_cpp/benchmark_suites_collection.cpp b/src_cpp/benchmark_suites_collection.cpp index 805fc2f5..90c5547c 100644 --- a/src_cpp/benchmark_suites_collection.cpp +++ b/src_cpp/benchmark_suites_collection.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/benchmark_suites_collection.h b/src_cpp/benchmark_suites_collection.h index 31cf1c2e..454d6547 100644 --- a/src_cpp/benchmark_suites_collection.h +++ b/src_cpp/benchmark_suites_collection.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/example/Makefile.example.mk b/src_cpp/example/Makefile.example.mk index 2ff4e03d..b3075344 100644 --- a/src_cpp/example/Makefile.example.mk +++ b/src_cpp/example/Makefile.example.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/example/example_benchmark1.cpp b/src_cpp/example/example_benchmark1.cpp index 14a5bb4c..efd75c16 100644 --- a/src_cpp/example/example_benchmark1.cpp +++ b/src_cpp/example/example_benchmark1.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/example/example_benchmark2.cpp b/src_cpp/example/example_benchmark2.cpp index 66c81f24..d9958e70 100644 --- a/src_cpp/example/example_benchmark2.cpp +++ b/src_cpp/example/example_benchmark2.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/example/example_benchmark3.cpp b/src_cpp/example/example_benchmark3.cpp index 6212c109..02541d4b 100644 --- a/src_cpp/example/example_benchmark3.cpp +++ b/src_cpp/example/example_benchmark3.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/example/example_benchmark4.cpp b/src_cpp/example/example_benchmark4.cpp index f1a60e13..4830cc3c 100644 --- a/src_cpp/example/example_benchmark4.cpp +++ b/src_cpp/example/example_benchmark4.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/example/example_benchmark5.cpp b/src_cpp/example/example_benchmark5.cpp index d5ea57d1..94b6f6a3 100644 --- a/src_cpp/example/example_benchmark5.cpp +++ b/src_cpp/example/example_benchmark5.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/helpers/Makefile.helpers.mk b/src_cpp/helpers/Makefile.helpers.mk index bae737cc..a94b4b4e 100644 --- a/src_cpp/helpers/Makefile.helpers.mk +++ b/src_cpp/helpers/Makefile.helpers.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/helpers/Makefile_win.helpers.mk b/src_cpp/helpers/Makefile_win.helpers.mk index fedae594..29858048 100644 --- a/src_cpp/helpers/Makefile_win.helpers.mk +++ b/src_cpp/helpers/Makefile_win.helpers.mk @@ -1,6 +1,6 @@ # ***************************************************************************** # * * -# * Copyright (C) 2023 Intel Corporation * +# * Copyright (C) 2024 Intel Corporation * # * * # ***************************************************************************** diff --git a/src_cpp/helpers/helper_IMB_functions.h b/src_cpp/helpers/helper_IMB_functions.h index e90b04ca..85024238 100755 --- a/src_cpp/helpers/helper_IMB_functions.h +++ b/src_cpp/helpers/helper_IMB_functions.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -199,11 +199,11 @@ struct Bmark_descr { found = true; } } +#endif /*MPIIO*/ if (flags.count(NTIMES_2) > 0) { Bmark->Ntimes = 2; } -#endif /*MPIIO*/ if (flags.count(NON_AGGREGATE)) { Bmark->RUN_MODES[0].AGGREGATE = -1; } diff --git a/src_cpp/helpers/original_benchmark.h b/src_cpp/helpers/original_benchmark.h index 700b78c8..59c373fc 100644 --- a/src_cpp/helpers/original_benchmark.h +++ b/src_cpp/helpers/original_benchmark.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/imb.cpp b/src_cpp/imb.cpp index 3f4302e1..967447e3 100644 --- a/src_cpp/imb.cpp +++ b/src_cpp/imb.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -52,7 +52,7 @@ int main(int argc, char * *argv) bool no_mpi_init_flag = true; int return_value = 0; int rank = 0, size = 0; - const char *program_name = "Intel(R) MPI Benchmarks 2021.7"; + const char *program_name = "Intel(R) MPI Benchmarks 2021.8"; std::ostringstream output; // Some unit tests for args parser @@ -165,10 +165,10 @@ int main(int argc, char * *argv) if (t == NULL) { throw runtime_error("can't open a file given in -input option"); } - char input_line[72+1], name[32+1]; - while (fgets(input_line, 72, t)) { + char input_line[IMB_INPUT_ARG_LEN], name[IMB_INPUT_NAME_LEN]; + while (fgets(input_line, IMB_INPUT_ARG_LEN, t)) { if (input_line[0] != '#' && strlen(input_line) > 0) { - sscanf(input_line, "%32s", name); + sscanf(input_line, "%31s[^\n]", name); requested_benchmarks.push_back(name); } } diff --git a/src_cpp/scope.cpp b/src_cpp/scope.cpp index 0873740f..e2500e6c 100644 --- a/src_cpp/scope.cpp +++ b/src_cpp/scope.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/scope.h b/src_cpp/scope.h index d3938cbc..0936929f 100644 --- a/src_cpp/scope.h +++ b/src_cpp/scope.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -63,8 +63,9 @@ struct ScopeIterator { scope_item operator*(); }; -struct Scope { - friend class ScopeIterator; +class Scope { + public: + friend struct ScopeIterator; typedef ScopeIterator iterator; Scope() : formed(false) {} bool formed; diff --git a/src_cpp/smart_ptr.h b/src_cpp/smart_ptr.h index 73600ccc..d9b4cbbe 100644 --- a/src_cpp/smart_ptr.h +++ b/src_cpp/smart_ptr.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** diff --git a/src_cpp/utils.h b/src_cpp/utils.h index 42dc253a..9e9a1eb5 100644 --- a/src_cpp/utils.h +++ b/src_cpp/utils.h @@ -1,6 +1,6 @@ /**************************************************************************** * * -* Copyright (C) 2023 Intel Corporation * +* Copyright (C) 2024 Intel Corporation * * * ***************************************************************************** @@ -61,7 +61,7 @@ namespace set_operations { void diff(T1 &one, T2 &two, T3 &result) { set_difference(one.begin(), one.end(), two.begin(), two.end(), inserter(result, result.end())); } - static const std::string to_lower(const std::string &in) { + static inline const std::string to_lower(const std::string &in) { std::string out = in; transform(in.begin(), in.end(), out.begin(), ::tolower); return out;