[llvm-commits] [test-suite] r46438 - in /test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm: ./ Makefile bmm.c
Chris Lattner
sabre at nondot.org
Sun Jan 27 22:10:48 PST 2008
Author: lattner
Date: Mon Jan 28 00:10:47 2008
New Revision: 46438
URL: http://llvm.org/viewvc/llvm-project?rev=46438&view=rev
Log:
add the bmm benchmark, hacked to not produce huge output nor use huge input.
Added:
test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/
test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/Makefile
test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/bmm.c
Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/Makefile?rev=46438&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/Makefile (added)
+++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/Makefile Mon Jan 28 00:10:47 2008
@@ -0,0 +1,14 @@
+LEVEL = ../../../..
+
+PROG = bmm
+ifdef LARGE_PROBLEM_SIZE
+RUN_OPTIONS = 1024 1024
+else
+ifdef SMALL_PROBLEM_SIZE
+RUN_OPTIONS = 128 32
+else
+RUN_OPTIONS = 1024 64
+endif
+endif
+include $(LEVEL)/MultiSource/Makefile.multisrc
+
Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/bmm.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/bmm.c?rev=46438&view=auto
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/bmm.c (added)
+++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/bmm/bmm.c Mon Jan 28 00:10:47 2008
@@ -0,0 +1,246 @@
+/******************************************************************************
+
+ SOFTWARE LICENSE AGREEMENT NOTICE
+ -----------------------------------
+
+IT IS A BREACH OF THIS LICENSE AGREEMENT TO REMOVE THIS NOTICE FROM
+THE FILE OR SOFTWARE, OR ANY MODIFIED VERSIONS OF THIS FILE OR
+SOFTWARE OR DERIVATIVE WORKS.
+___________________________________________________
+
+Copyright Notices/Identification of Licensor(s) of Original Software
+in the File
+
+Copyright (C) 1994 Hewlett-Packard Company
+
+All rights reserved by the foregoing, respectively.
+___________________________________________________
+
+Copyright Notices/Identification of Subsequent
+Licensor(s)/Contributors of Derivative Works
+
+Copyright <Year> <Owner>
+<Optional: For Commercial license rights, contact:_______________>
+
+All rights reserved by the foregoing, respectively.
+___________________________________________________
+
+The code contained in this file, including both binary and source [if
+released by the owner(s)] (hereafter, Software) is subject to
+copyright by the respective Licensor(s) and ownership remains with
+such Licensor(s). The Licensor(s) of the original Software remain
+free to license their respective proprietary Software for other
+purposes that are independent and separate from this file, without
+obligation to any party.
+
+Licensor(s) grant(s) you (hereafter, Licensee) a license to use the
+Software for academic, research and internal business purposes only,
+without a fee. "Internal business purposes" means that Licensee may
+install, use and execute the Software for the purpose of designing and
+evaluating products. Licensee may submit proposals for research
+support, and receive funding from private and Government sponsors for
+continued development, support and maintenance of the Software for the
+purposes permitted herein.
+
+Licensee may also disclose results obtained by executing the Software,
+as well as algorithms embodied therein. Licensee may redistribute the
+Software to third parties provided that the copyright notices and this
+License Agreement Notice statement are reproduced on all copies and
+that no charge is associated with such copies. No patent or other
+intellectual property license is granted or implied by this Agreement,
+and this Agreement does not license any acts except those expressly
+recited.
+
+Licensee may modify the Software to make derivative works (as defined
+in Section 101 of Title 17, U.S. Code) (hereafter, Derivative Works),
+as necessary for its own academic, research and internal business
+purposes. Title to copyrights and other proprietary rights in
+Derivative Works created by Licensee shall be owned by Licensee
+subject, however, to the underlying ownership interest(s) of the
+Licensor(s) in the copyrights and other proprietary rights in the
+original Software. All the same rights and licenses granted herein
+and all other terms and conditions contained in this Agreement
+pertaining to the Software shall continue to apply to any parts of the
+Software included in Derivative Works. Licensee's Derivative Work
+should clearly notify users that it is a modified version and not the
+original Software distributed by the Licensor(s).
+
+If Licensee wants to make its Derivative Works available to other
+parties, such distribution will be governed by the terms and
+conditions of this License Agreement. Licensee shall not modify this
+License Agreement, except that Licensee shall clearly identify the
+contribution of its Derivative Work to this file by adding an
+additional copyright notice to the other copyright notices listed
+above, to be added below the line "Copyright Notices/Identification of
+Subsequent Licensor(s)/Contributors of Derivative Works." A party who
+is not an owner of such Derivative Work within the meaning of
+U.S. Copyright Law (i.e., the original author, or the employer of the
+author if "work of hire") shall not modify this License Agreement or
+add such party's name to the copyright notices above.
+
+Each party who contributes Software or makes a Derivative Work to this
+file (hereafter, Contributed Code) represents to each Licensor and to
+other Licensees for its own Contributed Code that:
+
+(a) Such Contributed Code does not violate (or cause the Software to
+violate) the laws of the United States, including the export control
+laws of the United States, or the laws of any other jurisdiction.
+
+(b) The contributing party has all legal right and authority to make
+such Contributed Code available and to grant the rights and licenses
+contained in this License Agreement without violation or conflict with
+any law.
+
+(c) To the best of the contributing party's knowledge and belief, the
+Contributed Code does not infringe upon any proprietary rights or
+intellectual property rights of any third party.
+
+LICENSOR(S) MAKE(S) NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE
+SOFTWARE OR DERIVATIVE WORKS FOR ANY PURPOSE. IT IS PROVIDED "AS IS"
+WITHOUT EXPRESS OR IMPLIED WARRANTY, INCLUDING BUT NOT LIMITED TO THE
+MERCHANTABILITY, USE OR FITNESS FOR ANY PARTICULAR PURPOSE AND ANY
+WARRANTY AGAINST INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
+LICENSOR(S) SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY THE USERS
+OF THE SOFTWARE OR DERIVATIVE WORKS.
+
+Any Licensee wishing to make commercial use of the Software or
+Derivative Works should contact each and every Licensor to negotiate
+an appropriate license for such commercial use, and written permission
+of all Licensors will be required for such a commercial license.
+Commercial use includes (1) integration of all or part of the source
+code into a product for sale by or on behalf of Licensee to third
+parties, or (2) distribution of the Software or Derivative Works to
+third parties that need it to utilize a commercial product sold or
+licensed by or on behalf of Licensee.
+
+By using or copying this Contributed Code, Licensee agrees to abide by
+the copyright law and all other applicable laws of the U.S., and the
+terms of this License Agreement. Any individual Licensor shall have
+the right to terminate this license immediately by written notice upon
+Licensee's breach of, or non-compliance with, any of its terms.
+Licensee may be held legally responsible for any copyright
+infringement that is caused or encouraged by Licensee's failure to
+abide by the terms of this License Agreement.
+
+******************************************************************************/
+
+/* The Matrix Multiply computation.
+
+ Creates and multiplies two matrices and sums up all the elements
+ of the resulting matrices.
+
+ October 31, 1995
+ Shail Aditya.
+*/
+
+/* Modified by: Rodric M. Rabbah 06-03-04 */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZE 1024
+
+float a[SIZE][SIZE], b[SIZE][SIZE];
+float c[SIZE][SIZE] = {0};
+
+int NUM, BLOCK;
+
+
+
+/* Use Linear congruential PRNG */
+int my_rand_r(int *seedp)
+{
+ /* Knuth & Lewis */
+ unsigned x = *seedp * 1664525 + 1013904223;
+ *seedp = x;
+ return (x >> 16) & 0x7fff;
+}
+
+
+void init() {
+ int i,j;
+ int random_seed = 1;
+ for (i=0 ; i < SIZE ; i++) {
+ for (j=0 ; j < SIZE; j++) {
+ a[i][j] = (my_rand_r(&random_seed) >> j-i) & 0xF;
+ b[i][j] = (my_rand_r(&random_seed) << i+j) & 0xF;
+ }
+ }
+}
+
+void mm_inner(int I, int J, int K)
+{
+ int i,j,k;
+
+ for (i=I ; i < I+BLOCK ; i++)
+ for (j=J ; j < J+BLOCK ; j++)
+ for (k=K ; k < K+BLOCK ; k++)
+ c[i][j] += a[i][k]*b[k][j];
+}
+
+void matmult() {
+ int i,j,k;
+ float s1;
+
+ for (i=0 ; i < NUM ; i += BLOCK)
+ for (j=0 ; j < NUM ; j += BLOCK)
+ for (k=0; k < NUM ; k += BLOCK) {
+ mm_inner(i,j,k);
+ //printf("ACC:blocks a(%d,%d)*b(%d,%d), c[%d][%d] = %f\n",
+ // i,k,k,j,i,j,c[i][j]);
+ }
+}
+
+float mm_sum(int I, int J)
+{
+ int i,j;
+ float s = 0.0;
+
+ for (i=I ; i < I+BLOCK ; i++)
+ for (j=J ; j < J+BLOCK ; j++)
+ s += c[i][j];
+ return (s);
+}
+
+float sumup()
+{
+ int i,j;
+ float s = 0.0;
+
+ for (i=0 ; i < NUM ; i += BLOCK)
+ for (j=0 ; j < NUM ; j += BLOCK) {
+ s += mm_sum(i,j);
+ //printf("SUM:block c(%d,%d) = %f\n",i,j,s);
+ }
+ return s;
+}
+
+int main (int argc, char* argv[])
+{
+ int i,j,k;
+ float s;
+
+ if (argc != 3) {
+ printf("Usage: bmm <size> <block>\n");
+ exit(1);
+ }
+ NUM = atoi(argv[1]);
+ BLOCK = atoi(argv[2]);
+
+ if (((unsigned) NUM > 1024) | ((unsigned) BLOCK > (unsigned) NUM)) {
+ printf("size must be in [0, 1024]; block must be <= than size\n");
+ exit(1);
+ }
+
+ init();
+
+ /*** VERSABENCH START ***/
+
+ matmult();
+
+ /*** VERSABENCH END ***/
+ s = sumup();
+ printf("final sum = %f\n", s);
+ exit(0);
+}
+
More information about the llvm-commits
mailing list